blob: 4e96ba5d9e502ac42f67051365e95d63283f5a1b [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
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800189
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530190};
Jeff Johnson295189b2012-06-20 16:38:30 -0700191
192/*--------------------------------------------------------------------------
193 WLAN DAL State Machine
194 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700195WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700196{
197 /*WDI_INIT_ST*/
198 {{
199 WDI_MainStart, /*WDI_START_EVENT*/
200 NULL, /*WDI_STOP_EVENT*/
201 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
202 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
203 WDI_MainClose, /*WDI_CLOSE_EVENT*/
204 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
205 }},
206
207 /*WDI_STARTED_ST*/
208 {{
209 WDI_MainStartStarted, /*WDI_START_EVENT*/
210 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
211 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
212 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
213 NULL, /*WDI_CLOSE_EVENT*/
214 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
215 }},
216
217 /*WDI_STOPPED_ST*/
218 {{
219 WDI_MainStart, /*WDI_START_EVENT*/
220 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
221 NULL, /*WDI_REQUEST_EVENT*/
222 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
223 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700224 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700225 }},
226
227 /*WDI_BUSY_ST*/
228 {{
229 WDI_MainStartBusy, /*WDI_START_EVENT*/
230 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
231 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
232 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
233 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
234 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
235 }}
236};
237
Jeff Johnsone7245742012-09-05 17:12:55 -0700238/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700239 DAL Request Processing Array - the functions in this table will only be
240 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700241 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700242 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700243WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700244{
245 /*INIT*/
246 WDI_ProcessStartReq, /* WDI_START_REQ */
247 WDI_ProcessStopReq, /* WDI_STOP_REQ */
248 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
249
250 /*SCAN*/
251 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
252 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
253 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
254 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
255
256 /*ASSOCIATION*/
257 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
258 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
259 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
260 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
261 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
262
263 /* Security */
264 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
265 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
266 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
267 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
268
269 /* QoS and BA APIs */
270 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
271 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
272 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
273 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
274 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
275
276 /* Miscellaneous Control APIs */
277 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
278 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
279 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
280 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
281 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
282
283 /*BA APIs*/
284 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
285 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
286
287 /*Beacon processing APIs*/
288 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
289 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
290
291 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
292 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
293 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
294 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700295 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700296 /* PowerSave APIs */
297 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
298 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
299 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
300 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
301 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
302 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
303 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
304 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
305 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
306 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
307 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
308 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
309 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
310 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
311 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
312 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
313 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
314 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
315 /*NV Download APIs*/
316 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
317 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
318 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
319#ifdef WLAN_FEATURE_VOWIFI_11R
320 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
321#else
322 NULL,
323#endif /* WLAN_FEATURE_VOWIFI_11R */
324 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
325 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700327
328#ifdef FEATURE_OEM_DATA_SUPPORT
329 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
330#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700332#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700333 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700334
335 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700336
337#ifdef FEATURE_WLAN_SCAN_PNO
338 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
339 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
340 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
341#else
342 NULL,
343 NULL,
344 NULL,
345#endif /* FEATURE_WLAN_SCAN_PNO */
346
347 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700348
Jeff Johnson295189b2012-06-20 16:38:30 -0700349#ifdef WLAN_FEATURE_PACKET_FILTERING
350 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700351 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700352 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700353 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700355 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700356 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700357 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700358#else
359 NULL,
360 NULL,
361 NULL,
362 NULL,
363#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700364 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
366 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
367
368 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800369#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700370 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
371#else
372 NULL,
373#endif
374
375#ifdef WLAN_FEATURE_GTK_OFFLOAD
376 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
377 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
378#else
379 NULL,
380 NULL,
381#endif // WLAN_FEATURE_GTK_OFFLOAD
382
383 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
384 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700385#ifdef WLAN_FEATURE_11AC
386 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800387#else
388 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700389#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800390#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800391 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
392#else
schang86c22c42013-03-13 18:41:24 -0700393 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800394#endif
schang86c22c42013-03-13 18:41:24 -0700395 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700396#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700397 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700398#else
399 NULL,
400#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530401#ifdef FEATURE_WLAN_TDLS
402 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
403#else
404 NULL,
405#endif
Leo Chang9056f462013-08-01 19:21:11 -0700406#ifdef FEATURE_WLAN_LPHB
407 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
408#else
409 NULL,
410#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530411
412#ifdef FEATURE_WLAN_BATCH_SCAN
413 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
414#else
415 NULL,
416#endif /* FEATURE_WLAN_BATCH_SCAN */
417
Arif Hussaina5ebce02013-08-09 15:09:58 -0700418 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800419
420 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530421
422 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530423
424#ifdef WLAN_FEATURE_LINK_LAYER_STATS
425 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
426 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
427 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
428#else
429 NULL,
430 NULL,
431 NULL,
432#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530433#ifdef WLAN_FEATURE_EXTSCAN
434 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
435 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
436 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
437 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
438 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
439 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
440 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
441 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
442#else
443 NULL,
444 NULL,
445 NULL,
446 NULL,
447 NULL,
448 NULL,
449 NULL,
450 NULL,
451#endif /* WLAN_FEATURE_EXTSCAN */
schang86c22c42013-03-13 18:41:24 -0700452 /*-------------------------------------------------------------------------
453 Indications
454 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800456 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530457 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
458 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700459#ifdef WLAN_FEATURE_11W
460 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
461#else
462 NULL,
463#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700464 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
465 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530466#ifdef FEATURE_WLAN_BATCH_SCAN
467 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
468 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
469#else
470 NULL,
471 NULL,
472#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700473 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800474
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530475 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800476 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
477
478 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530479
Jeff Johnson295189b2012-06-20 16:38:30 -0700480};
481
482
Jeff Johnsone7245742012-09-05 17:12:55 -0700483/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700484 DAL Request Processing Array - the functions in this table will only be
485 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700486 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700487 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700488WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700489{
490 /*INIT*/
491 WDI_ProcessStartRsp, /* WDI_START_RESP */
492 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
493 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
494
495 /*SCAN*/
496 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
497 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
498 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
499 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
500
501 /* ASSOCIATION*/
502 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
503 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
504 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
505 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
506 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
507
508 /* Security */
509 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
510 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
511 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
512 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
513
514 /* QoS and BA APIs */
515 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
516 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
517 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
518 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
519 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
520
521 /* Miscellaneous Control APIs */
522 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
523 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
524 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
525 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
526 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
527
528 /* BA APIs*/
529 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
530 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531
Jeff Johnson295189b2012-06-20 16:38:30 -0700532 /* IBSS APIs*/
533 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
534 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
535
536 /*Soft AP APIs*/
537 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
538 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
539 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
540 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
541
542 /* PowerSave APIs */
543 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
544 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
545 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
546 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
547 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
548 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
549 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
550 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
551 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
552 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
553 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
554 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
555 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
556 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
557 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
558 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
559 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
560 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700561
Jeff Johnson295189b2012-06-20 16:38:30 -0700562
563 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
564
565 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
566 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
567#ifdef WLAN_FEATURE_VOWIFI_11R
568 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
569#else
570 NULL,
571#endif /* WLAN_FEATURE_VOWIFI_11R */
572 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
573 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700574#ifdef FEATURE_OEM_DATA_SUPPORT
575 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
576#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700577 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700578#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700579 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
580
Jeff Johnson295189b2012-06-20 16:38:30 -0700581 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700582
Jeff Johnson295189b2012-06-20 16:38:30 -0700583 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700584
Jeff Johnsone7245742012-09-05 17:12:55 -0700585 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
586
Jeff Johnson295189b2012-06-20 16:38:30 -0700587#ifdef FEATURE_WLAN_SCAN_PNO
588 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
589 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
590 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
591#else
592 NULL,
593 NULL,
594 NULL,
595#endif // FEATURE_WLAN_SCAN_PNO
596
597 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
598
599 /*---------------------------------------------------------------------
600 Indications
601 ---------------------------------------------------------------------*/
602#ifdef WLAN_FEATURE_PACKET_FILTERING
603 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700604 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700605 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700606 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700607 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700608 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700609 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700610 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700611#else
612 NULL,
613 NULL,
614 NULL,
615 NULL,
616#endif // WLAN_FEATURE_PACKET_FILTERING
617
618 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
619 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
620
621 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800622#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700623 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
624#else
625 NULL,
626#endif
627
628#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700629 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
630 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700631#else
632 NULL,
633 NULL,
634#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700635 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
636 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700637#ifdef WLAN_FEATURE_11AC
638 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700639#else
640 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700641#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800642#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800643 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
644#else
645 NULL,
646#endif
schang86c22c42013-03-13 18:41:24 -0700647 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700648#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700649 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700650#else
651 NULL,
652#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530653#ifdef FEATURE_WLAN_TDLS
654 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
655#else
656 NULL,
657#endif
Leo Chang9056f462013-08-01 19:21:11 -0700658#ifdef FEATURE_WLAN_LPHB
659 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
660#else
661 NULL,
662#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530663
664#ifdef FEATURE_WLAN_BATCH_SCAN
665 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
666#else
667 NULL,
668#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800669 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530670
c_hpothu92367912014-05-01 15:18:17 +0530671 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800672
c_hpothu92367912014-05-01 15:18:17 +0530673 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
674
675 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800676
Sunil Duttbd736ed2014-05-26 21:19:41 +0530677
678#ifdef WLAN_FEATURE_LINK_LAYER_STATS
679 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
680 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
681 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
682#else
683 NULL,
684 NULL,
685 NULL,
686#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530687#ifdef WLAN_FEATURE_EXTSCAN
688 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
689 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
690 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
691 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
692 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
693 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
694 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
695 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
696#else
697 NULL,
698 NULL,
699 NULL,
700 NULL,
701 NULL,
702 NULL,
703 NULL,
704 NULL,
705#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700706 /*---------------------------------------------------------------------
707 Indications
708 ---------------------------------------------------------------------*/
709 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
710 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
711 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
712 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
713 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
714 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
715
716 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
717
718 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
719
Jeff Johnson295189b2012-06-20 16:38:30 -0700720 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700721
722#ifdef FEATURE_WLAN_SCAN_PNO
723 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
724#else
725 NULL,
726#endif // FEATURE_WLAN_SCAN_PNO
727
728#ifdef WLAN_WAKEUP_EVENTS
729 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
730#else // WLAN_WAKEUP_EVENTS
731 NULL,
732#endif // WLAN_WAKEUP_EVENTS
733
734 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800735
Viral Modid86bde22012-12-10 13:09:21 -0800736 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530737#ifdef FEATURE_WLAN_TDLS
738 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
739#else
740 NULL,
741#endif
Leo Chang9056f462013-08-01 19:21:11 -0700742
743#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700744 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700745#else
746 NULL,
747#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700748
749 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700750
751 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530752
753#ifdef FEATURE_WLAN_BATCH_SCAN
754 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
755#else
756 NULL,
757#endif
758
Leo Chang0b0e45a2013-12-15 15:18:55 -0800759#ifdef FEATURE_WLAN_CH_AVOID
760 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
761#else
762 NULL,
763#endif /* FEATURE_WLAN_CH_AVOID */
764
Sunil Duttbd736ed2014-05-26 21:19:41 +0530765 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
766#ifdef WLAN_FEATURE_LINK_LAYER_STATS
767 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
768#else
769 NULL,
770#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530771#ifdef WLAN_FEATURE_EXTSCAN
772 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
773 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
774 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
775 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
776 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
777#else
778 NULL,
779 NULL,
780 NULL,
781 NULL,
782 NULL,
783#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -0700784};
785
786
Jeff Johnsone7245742012-09-05 17:12:55 -0700787/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700788 WLAN DAL Global Control Block
789 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700790WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700791static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
792
Jeff Johnsone7245742012-09-05 17:12:55 -0700793const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700794
795/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700796WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700797void* WDI_GET_PAL_CTX( void )
798{
Jeff Johnsone7245742012-09-05 17:12:55 -0700799 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700800}/*WDI_GET_PAL_CTX*/
801
Jeff Johnsone7245742012-09-05 17:12:55 -0700802/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700803 Helper inline converters
804 ============================================================================*/
805/*Convert WDI driver type into HAL driver type*/
806WPT_STATIC WPT_INLINE WDI_Status
807WDI_HAL_2_WDI_STATUS
808(
809 eHalStatus halStatus
810);
811
812/*Convert WDI request type into HAL request type*/
813WPT_STATIC WPT_INLINE tHalHostMsgType
814WDI_2_HAL_REQ_TYPE
815(
816 WDI_RequestEnumType wdiReqType
817);
818
819/*Convert WDI response type into HAL response type*/
820WPT_STATIC WPT_INLINE WDI_ResponseEnumType
821HAL_2_WDI_RSP_TYPE
822(
823 tHalHostMsgType halMsg
824);
825
826/*Convert WDI driver type into HAL driver type*/
827WPT_STATIC WPT_INLINE tDriverType
828WDI_2_HAL_DRV_TYPE
829(
830 WDI_DriverType wdiDriverType
831);
832
833/*Convert WDI stop reason into HAL stop reason*/
834WPT_STATIC WPT_INLINE tHalStopType
835WDI_2_HAL_STOP_REASON
836(
837 WDI_StopType wdiStopType
838);
839
840/*Convert WDI scan mode type into HAL scan mode type*/
841WPT_STATIC WPT_INLINE eHalSysMode
842WDI_2_HAL_SCAN_MODE
843(
844 WDI_ScanMode wdiScanMode
845);
846
847/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700848WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700849WDI_2_HAL_SEC_CH_OFFSET
850(
851 WDI_HTSecondaryChannelOffset wdiSecChOffset
852);
853
854/*Convert WDI BSS type into HAL BSS type*/
855WPT_STATIC WPT_INLINE tSirBssType
856WDI_2_HAL_BSS_TYPE
857(
858 WDI_BssType wdiBSSType
859);
860
861/*Convert WDI NW type into HAL NW type*/
862WPT_STATIC WPT_INLINE tSirNwType
863WDI_2_HAL_NW_TYPE
864(
865 WDI_NwType wdiNWType
866);
867
868/*Convert WDI chanel bonding type into HAL cb type*/
869WPT_STATIC WPT_INLINE ePhyChanBondState
870WDI_2_HAL_CB_STATE
871(
872 WDI_PhyChanBondState wdiCbState
873);
874
875/*Convert WDI chanel bonding type into HAL cb type*/
876WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
877WDI_2_HAL_HT_OPER_MODE
878(
879 WDI_HTOperatingMode wdiHTOperMode
880);
881
882/*Convert WDI mimo PS type into HAL mimo PS type*/
883WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
884WDI_2_HAL_MIMO_PS
885(
886 WDI_HTMIMOPowerSaveState wdiHTOperMode
887);
888
889/*Convert WDI ENC type into HAL ENC type*/
890WPT_STATIC WPT_INLINE tAniEdType
891WDI_2_HAL_ENC_TYPE
892(
893 WDI_EncryptType wdiEncType
894);
895
896/*Convert WDI WEP type into HAL WEP type*/
897WPT_STATIC WPT_INLINE tAniWepType
898WDI_2_HAL_WEP_TYPE
899(
900 WDI_WepType wdiWEPType
901);
902
903/*Convert WDI Link State into HAL Link State*/
904WPT_STATIC WPT_INLINE tSirLinkState
905WDI_2_HAL_LINK_STATE
906(
907 WDI_LinkStateType wdiLinkState
908);
909
Jeff Johnsone7245742012-09-05 17:12:55 -0700910/*Translate a STA Context from WDI into HAL*/
911WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700912void
913WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700914(
Jeff Johnson295189b2012-06-20 16:38:30 -0700915 tConfigStaParams* phalConfigSta,
916 WDI_ConfigStaReqInfoType* pwdiConfigSta
917);
Jeff Johnsone7245742012-09-05 17:12:55 -0700918
919/*Translate a Rate set info from WDI into HAL*/
920WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700921WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700922(
Jeff Johnson295189b2012-06-20 16:38:30 -0700923 tSirMacRateSet* pHalRateSet,
924 WDI_RateSet* pwdiRateSet
925);
926
927/*Translate an EDCA Parameter Record from WDI into HAL*/
928WPT_STATIC WPT_INLINE void
929WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700930(
Jeff Johnson295189b2012-06-20 16:38:30 -0700931 tSirMacEdcaParamRecord* phalEdcaParam,
932 WDI_EdcaParamRecord* pWDIEdcaParam
933);
934
935/*Copy a management frame header from WDI fmt into HAL fmt*/
936WPT_STATIC WPT_INLINE void
937WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
938(
939 tSirMacMgmtHdr* pmacMgmtHdr,
940 WDI_MacMgmtHdr* pwdiMacMgmtHdr
941);
942
943/*Copy config bss parameters from WDI fmt into HAL fmt*/
944WPT_STATIC WPT_INLINE void
945WDI_CopyWDIConfigBSSToHALConfigBSS
946(
947 tConfigBssParams* phalConfigBSS,
948 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
949);
950
Jeff Johnsone7245742012-09-05 17:12:55 -0700951/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700952 pointed to by user data */
953WPT_STATIC WPT_INLINE void
954WDI_ExtractRequestCBFromEvent
955(
956 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700957 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700958 void** ppUserData
959);
960
961wpt_uint8
962WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700963(
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 WDI_ControlBlockType* pWDICtx,
965 WDI_BSSSessionType** ppSession
966);
967
968void
969WDI_AddBcastSTAtoSTATable
970(
971 WDI_ControlBlockType* pWDICtx,
972 WDI_AddStaParams * staParams,
973 wpt_uint16 usBcastStaIdx
974);
975
976WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700977(
Jeff Johnson295189b2012-06-20 16:38:30 -0700978 WDI_ControlBlockType* pWDICtx,
979 WDI_EventInfoType* pEventData
980);
981
982void
983WDI_SetPowerStateCb
984(
985 wpt_status status,
986 unsigned int dxePhyAddr,
987 void *pContext
988);
989
Jeff Johnson295189b2012-06-20 16:38:30 -0700990/**
991 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700992
993 @param wdiReqMsgId: WDI Message request Id
994
995 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 @return Result of the function call
997*/
998static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
999{
1000 switch (wdiReqMsgId)
1001 {
1002 CASE_RETURN_STRING( WDI_START_REQ );
1003 CASE_RETURN_STRING( WDI_STOP_REQ );
1004 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1005 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1006 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1007 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1008 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1009 CASE_RETURN_STRING( WDI_JOIN_REQ );
1010 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1011 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1012 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1013 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1014 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1015 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1016 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1017 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1018 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1019 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1020 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1021 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1022 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1023 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001024 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1026 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1027 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1028 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1029 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1030 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1031 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1032 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1033 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1034 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1035 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1036 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001037 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001038 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301039#ifdef FEATURE_WLAN_TDLS
1040 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
1041#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001042 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1043 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1044 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1045 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1046 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1047 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1048 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1049 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1050 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1051 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1052 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1053 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1054 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1055 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1056 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1057 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1058 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1059 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1060 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1061 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1062 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1063 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1064 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1065 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1066 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001067 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001068 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1069 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1070 #ifdef FEATURE_WLAN_SCAN_PNO
1071 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1072 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1073 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1074 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001075#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001076 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001077#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001078 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1079 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1080 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1081 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1082 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1083 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1084 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1085 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1086 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301087 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001088 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001089 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001090#ifdef WLAN_FEATURE_11W
1091 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1092#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301093#ifdef FEATURE_WLAN_BATCH_SCAN
1094 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1095 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1096 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1097#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301098 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1099 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001100 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301101#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1102 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1103 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1104 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1105#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301106#ifdef WLAN_FEATURE_EXTSCAN
1107 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1108 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1109 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1110 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1111 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1112 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1113 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1114 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1115#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001116 default:
1117 return "Unknown WDI MessageId";
1118 }
1119}
1120
1121
1122
1123/**
1124 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001125
1126 @param wdiRespMsgId: WDI Message response Id
1127
1128 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001129 @return Result of the function call
1130*/
1131static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1132{
1133 switch (wdiRespMsgId)
1134 {
1135 CASE_RETURN_STRING( WDI_START_RESP );
1136 CASE_RETURN_STRING( WDI_STOP_RESP );
1137 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1138 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1139 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1140 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1141 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1142 CASE_RETURN_STRING( WDI_JOIN_RESP );
1143 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1144 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1145 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1146 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1147 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1148 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1149 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1150 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1151 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1152 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1153 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1154 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1155 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1156 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1157 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1158 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1159 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1160 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1161 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1162 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1163 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1164 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1165 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1166 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1167 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1168 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1169 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301170#ifdef FEATURE_WLAN_TDLS
1171 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1172 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1173#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001174 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1175 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1176 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1177 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1178 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1179 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1180 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1181 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1182 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1183 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1184 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1185 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1186 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1187 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1188 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1189 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1190 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1191 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1192 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1193 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1194 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1195 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1196 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1197 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1198 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1201 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1202 #ifdef FEATURE_WLAN_SCAN_PNO
1203 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1204 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1205 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1206 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001207#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001208 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001209#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001210 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1211 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1212 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1213 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1214 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1215 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1216 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1217 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001218 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301219#ifdef FEATURE_WLAN_BATCH_SCAN
1220 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1221#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001222 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301223 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301224 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301225#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1226 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1227 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1228 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1229#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301230#ifdef WLAN_FEATURE_EXTSCAN
1231 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1232 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1233 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1234 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1235 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1236 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1237 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1238 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1239 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1240 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1241 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1242 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1243 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1244
1245#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -07001246 default:
1247 return "Unknown WDI MessageId";
1248 }
1249}
1250
1251/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301252 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1253 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301254 @param capabilityBitmap - Base address of a 4 element Bitmap array
1255 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301256 @see
1257 @returns None
1258 */
1259void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1260{
Abhishek Singh08b60122014-02-04 18:05:23 +05301261 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301262 char capStr[512];
1263 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301264 for (j = 0; j < 4; j++) {
1265 for (i = 0; i < 32; i++) {
1266 if ((*(capabilityBitmap + j) & (1 << i))) {
1267 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301268 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1269 pCapStr += strlen("MCC");
1270 break;
1271 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1272 pCapStr += strlen("P2P");
1273 break;
1274 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1275 pCapStr += strlen("DOT11AC");
1276 break;
1277 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1278 pCapStr += strlen("SLM_SESSIONIZATION");
1279 break;
1280 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1281 pCapStr += strlen("DOT11AC_OPMODE");
1282 break;
1283 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1284 pCapStr += strlen("SAP32STA");
1285 break;
1286 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1287 pCapStr += strlen("TDLS");
1288 break;
1289 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1290 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1291 break;
1292 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1293 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1294 break;
1295 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1296 pCapStr += strlen("BEACON_OFFLOAD");
1297 break;
1298 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1299 pCapStr += strlen("SCAN_OFFLOAD");
1300 break;
1301 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1302 pCapStr += strlen("ROAM_OFFLOAD");
1303 break;
1304 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1305 pCapStr += strlen("BCN_MISS_OFFLOAD");
1306 break;
1307 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1308 pCapStr += strlen("STA_POWERSAVE");
1309 break;
1310 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1311 pCapStr += strlen("AP_UAPSD");
1312 break;
1313 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1314 pCapStr += strlen("AP_DFS");
1315 break;
1316 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1317 pCapStr += strlen("BLOCKACK");
1318 break;
1319 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1320 pCapStr += strlen("PHY_ERR");
1321 break;
1322 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1323 pCapStr += strlen("BCN_FILTER");
1324 break;
1325 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1326 pCapStr += strlen("RTT");
1327 break;
1328 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1329 pCapStr += strlen("RATECTRL");
1330 break;
1331 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1332 pCapStr += strlen("WOW");
1333 break;
1334 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1335 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1336 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301337 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1338 pCapStr += strlen("FW_IN_TX_PATH");
1339 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301340 case HT40_OBSS_SCAN:
1341 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1342 "%s", "HT40_OBSS_SCAN");
1343 pCapStr += strlen("HT40_OBSS_SCAN");
1344 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301345 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1346 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1347 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1348 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1349 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301350 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1351 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1352 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301353 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1354 pCapStr += strlen("CH_SWITCH_V1");
1355 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301356#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1357 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1358 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1359 break;
1360#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301361#ifdef WLAN_FEATURE_EXTSCAN
1362 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1363 pCapStr += strlen("EXTENDED_SCAN");
1364 break;
1365#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301366 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1367 pCapStr += strlen("MU_MIMO");
1368 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301369
Abhishek Singh08b60122014-02-04 18:05:23 +05301370 }
1371 *pCapStr++ = ',';
1372 *pCapStr++ = ' ';
1373 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301374 }
1375 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301376 pCapStr -= 2;
1377 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301378 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301380}
1381
1382/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001384
1385 @param halStatusId: HAL status Id
1386
1387 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001388 @return Result of the function call
1389*/
1390static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1391{
1392 switch (halStatusId)
1393 {
1394 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1395 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1396 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1397 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1398 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1399 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1400 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1401 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1402 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1403 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1404 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1405 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1406 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1407 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1408 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1409 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1410 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1411 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1412 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1413 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1414 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1415 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1416 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1417 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1418 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1419 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1420 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1421 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1422 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1423 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1424 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1425 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1426 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1427 default:
1428 return "Unknown HAL status";
1429 }
1430}
1431
Jeff Johnsone7245742012-09-05 17:12:55 -07001432/*========================================================================
1433
Jeff Johnson295189b2012-06-20 16:38:30 -07001434 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001435
Jeff Johnson295189b2012-06-20 16:38:30 -07001436==========================================================================*/
1437
1438/**
1439 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001440
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 DAL will allocate all the resources it needs. It will open PAL, it will also
1442 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001443 DXE/SMD or any other drivers that they need.
1444
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301445 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001446 ppWDIGlobalCtx: output pointer of Global Context
1447 pWdiDevCapability: output pointer of device capability
1448
1449 @return Result of the function call
1450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001452WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001453(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301454 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 void** ppWDIGlobalCtx,
1456 WDI_DeviceCapabilityType* pWdiDevCapability,
1457 unsigned int driverType
1458)
1459{
1460 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001461 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001462 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1465
1466 /*---------------------------------------------------------------------
1467 Sanity check
1468 ---------------------------------------------------------------------*/
1469 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1470 {
1471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1472 "Invalid input parameters in WDI_Init");
1473
Jeff Johnsone7245742012-09-05 17:12:55 -07001474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001475 }
1476
1477 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001478 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001479 ---------------------------------------------------------------------*/
1480 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1481 {
1482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1483 "WDI module already initialized - return");
1484
Jeff Johnsone7245742012-09-05 17:12:55 -07001485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001486 }
1487
1488 /*Module is now initialized - this flag is to ensure the fact that multiple
1489 init will not happen on WDI
1490 !! - potential race does exist because read and set are not atomic,
1491 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001492 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001493
1494 /*Setup the control block */
1495 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301496 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001497
1498 /*Setup the STA Table*/
1499 wdiStatus = WDI_STATableInit(&gWDICb);
1500 if ( WDI_STATUS_SUCCESS != wdiStatus )
1501 {
1502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1503 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001504 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001505 goto fail_STATableInit;
1506 }
1507
1508 /*------------------------------------------------------------------------
1509 Open the PAL
1510 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301511 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001512 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1513 {
1514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1515 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001516 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001517 goto fail_wpalOpen;
1518 }
1519
1520 /*Initialize main synchro mutex - it will be used to ensure integrity of
1521 the main WDI Control Block*/
1522 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1523 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1524 {
1525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1526 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001527 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 goto fail_mutex;
1529 }
1530
1531 /*Initialize the response timer - it will be used to time all messages
1532 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001533 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1534 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 &gWDICb);
1536 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1537 {
1538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1539 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001540 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 goto fail_timer;
1542 }
1543
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001544 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1545 WDI_SsrTimerCB,
1546 &gWDICb);
1547 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1548 {
1549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1550 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001551 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001552 goto fail_timer2;
1553 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001554 /* Initialize the WDI Pending Request Queue*/
1555 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1556 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1557 {
1558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1559 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001560 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001561 goto fail_pend_queue;
1562 }
1563
1564 /*Init WDI Pending Assoc Id Queue */
1565 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1566 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1567 {
1568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1569 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001570 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 goto fail_assoc_queue;
1572 }
1573
1574 /*Initialize the BSS sessions pending Queue */
1575 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1576 {
1577 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1578 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1579 {
1580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1581 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001582 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 goto fail_bss_queue;
1584 }
1585 }
1586
1587 /*Indicate the control block is sufficiently initialized for callbacks*/
1588 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1589
1590 /*------------------------------------------------------------------------
1591 Initialize the Data Path Utility Module
1592 ------------------------------------------------------------------------*/
1593 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1594 if ( WDI_STATUS_SUCCESS != wdiStatus )
1595 {
1596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1597 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001598 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 goto fail_dp_util_init;
1600 }
1601
1602 /* Init Set power state event */
1603 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001604 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001605 {
1606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1607 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001608 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001609 goto fail_power_event;
1610 }
1611
1612 /* Init WCTS action event */
1613 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001614 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001615 {
1616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1617 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001618 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001619 goto fail_wcts_event;
1620 }
1621
1622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001623 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001624 ------------------------------------------------------------------------*/
1625 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1626 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001627 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 wctsCBs.wctsRxMsgCBData = &gWDICb;
1629
Jeff Johnsone7245742012-09-05 17:12:55 -07001630 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001631 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001632 WDI_CT_CHANNEL_SIZE,
1633 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001634
1635 if ( NULL == gWDICb.wctsHandle )
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 WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001639 goto fail_wcts_open;
1640 }
1641
1642 gWDICb.driverMode = (tDriverType)driverType;
1643 /* FTM mode not need to open Transport Driver */
1644 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001645 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001646 /*------------------------------------------------------------------------
1647 Open the Data Transport
1648 ------------------------------------------------------------------------*/
1649 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1650 {
1651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001652 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 goto fail_wdts_open;
1654 }
1655 }
1656
1657 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001658 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001659
1660 /*Send the context as a ptr to the global WDI Control Block*/
1661 *ppWDIGlobalCtx = &gWDICb;
1662
1663 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001664 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001665 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1666 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1667 return WDI_STATUS_SUCCESS;
1668
1669 /* ERROR handlers
1670 Undo everything that completed successfully */
1671
1672 fail_wdts_open:
1673 {
1674 wpt_status eventStatus;
1675
1676 /* Closing WCTS in this scenario is tricky since it has to close
1677 the SMD channel and then we get notified asynchronously when
1678 the channel has been closed. So we take some of the logic from
1679 the "normal" close procedure in WDI_Close()
1680 */
1681
1682 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001683 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 {
1685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001686 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 }
1688
1689 WCTS_CloseTransport(gWDICb.wctsHandle);
1690
1691 /* Wait for WCTS to close the control transport. If we were able
1692 to reset the event flag, then we'll wait for the event,
1693 otherwise we'll wait for a maximum amount of time required for
1694 the channel to be closed */
1695 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1696 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001697 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001698 WDI_WCTS_ACTION_TIMEOUT);
1699 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001702 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 }
1704 }
1705 else
1706 {
1707 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1708 }
1709 }
1710 fail_wcts_open:
1711 wpalEventDelete(&gWDICb.wctsActionEvent);
1712 fail_wcts_event:
1713 wpalEventDelete(&gWDICb.setPowerStateEvent);
1714 fail_power_event:
1715 WDI_DP_UtilsExit(&gWDICb);
1716 fail_dp_util_init:
1717 gWDICb.magic = 0;
1718 fail_bss_queue:
1719 /* entries 0 thru i-1 were successfully initialized */
1720 while (0 < i)
1721 {
1722 i--;
1723 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1724 }
1725 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1726 fail_assoc_queue:
1727 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1728 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001729 wpalTimerDelete(&gWDICb.ssrTimer);
1730 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 wpalTimerDelete(&gWDICb.wptResponseTimer);
1732 fail_timer:
1733 wpalMutexDelete(&gWDICb.wptMutex);
1734 fail_mutex:
1735 wpalClose(gWDICb.pPALContext);
1736 fail_wpalOpen:
1737 WDI_STATableClose(&gWDICb);
1738 fail_STATableInit:
1739 gWDIInitialized = eWLAN_PAL_FALSE;
1740
1741 return WDI_STATUS_E_FAILURE;
1742
1743}/*WDI_Init*/;
1744
1745/**
1746 @brief WDI_Start will be called when the upper MAC is ready to
1747 commence operation with the WLAN Device. Upon the call
1748 of this API the WLAN DAL will pack and send a HAL Start
1749 message to the lower RIVA sub-system if the SMD channel
1750 has been fully opened and the RIVA subsystem is up.
1751
1752 If the RIVA sub-system is not yet up and running DAL
1753 will queue the request for Open and will wait for the
1754 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001755 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001756
1757 WDI_Init must have been called.
1758
Jeff Johnsone7245742012-09-05 17:12:55 -07001759 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001761
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 wdiStartRspCb: callback for passing back the response of
1763 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001764
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001766 callback
1767
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 @see WDI_Start
1769 @return Result of the function call
1770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001772WDI_Start
1773(
1774 WDI_StartReqParamsType* pwdiStartParams,
1775 WDI_StartRspCb wdiStartRspCb,
1776 void* pUserData
1777)
1778{
1779 WDI_EventInfoType wdiEventData;
1780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1781
1782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001784 ------------------------------------------------------------------------*/
1785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1786 {
1787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1788 "WDI API call before module is initialized - Fail request");
1789
Jeff Johnsone7245742012-09-05 17:12:55 -07001790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 }
1792
1793 /*------------------------------------------------------------------------
1794 Fill in Event data and post to the Main FSM
1795 ------------------------------------------------------------------------*/
1796 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 wdiEventData.pEventData = pwdiStartParams;
1798 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1799 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 wdiEventData.pUserData = pUserData;
1801
1802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1803
1804}/*WDI_Start*/
1805
1806/**
1807 @brief WDI_Stop will be called when the upper MAC is ready to
1808 stop any operation with the WLAN Device. Upon the call
1809 of this API the WLAN DAL will pack and send a HAL Stop
1810 message to the lower RIVA sub-system if the DAL Core is
1811 in started state.
1812
1813 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001814
1815 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001816
1817 WDI_Start must have been called.
1818
Jeff Johnsone7245742012-09-05 17:12:55 -07001819 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001821
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 wdiStopRspCb: callback for passing back the response of
1823 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001824
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001826 callback
1827
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 @see WDI_Start
1829 @return Result of the function call
1830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001832WDI_Stop
1833(
1834 WDI_StopReqParamsType* pwdiStopParams,
1835 WDI_StopRspCb wdiStopRspCb,
1836 void* pUserData
1837)
1838{
1839 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001840 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1842
1843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001845 ------------------------------------------------------------------------*/
1846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1847 {
1848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1849 "WDI API call before module is initialized - Fail request");
1850
Jeff Johnsone7245742012-09-05 17:12:55 -07001851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001852 }
1853
Jeff Johnson43971f52012-07-17 12:26:56 -07001854 /*Access to the global state must be locked before cleaning */
1855 wpalMutexAcquire(&pWDICtx->wptMutex);
1856
1857 /*Clear all pending request*/
1858 WDI_ClearPendingRequests(pWDICtx);
1859
1860 /*We have completed cleaning unlock now*/
1861 wpalMutexRelease(&pWDICtx->wptMutex);
1862
Jeff Johnson295189b2012-06-20 16:38:30 -07001863 /* Free the global variables */
1864 wpalMemoryFree(gpHostWlanFeatCaps);
1865 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001866 gpHostWlanFeatCaps = NULL;
1867 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001868
1869 /*------------------------------------------------------------------------
1870 Fill in Event data and post to the Main FSM
1871 ------------------------------------------------------------------------*/
1872 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001873 wdiEventData.pEventData = pwdiStopParams;
1874 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1875 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 wdiEventData.pUserData = pUserData;
1877
1878 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1879
1880}/*WDI_Stop*/
1881
1882
1883
1884/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001885 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 needs to interact with DAL. DAL will free its control
1887 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001888
1889 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001890
1891 WDI_Stop must have been called.
1892
1893 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 @see WDI_Stop
1896 @return Result of the function call
1897*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001898WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001899WDI_Close
1900(
1901 void
1902)
1903{
1904 wpt_uint8 i;
1905 WDI_EventInfoType wdiEventData;
1906 wpt_status wptStatus;
1907 wpt_status eventStatus;
1908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1909
1910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 ------------------------------------------------------------------------*/
1913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1914 {
1915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1916 "WDI API call before module is initialized - Fail request");
1917
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 }
1920
1921 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1922 (the control transport will be closed by the FSM and we'll want
1923 to wait until that completes)*/
1924 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 {
1927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001928 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 /* fall through and try to finish closing via the FSM */
1930 }
1931
1932 /*------------------------------------------------------------------------
1933 Fill in Event data and post to the Main FSM
1934 ------------------------------------------------------------------------*/
1935 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001936 wdiEventData.pEventData = NULL;
1937 wdiEventData.uEventDataSize = 0;
1938 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001939 wdiEventData.pUserData = NULL;
1940
1941 gWDIInitialized = eWLAN_PAL_FALSE;
1942
1943 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1944
1945 /*Wait for WCTS to close the control transport
1946 (but only if we were able to reset the event flag*/
1947 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1948 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001949 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 WDI_WCTS_ACTION_TIMEOUT);
1951 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1952 {
1953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001954 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 }
1956 }
1957
1958 /* Destroy the WCTS action event */
1959 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1961 {
1962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1963 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001964 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 }
1966
1967 /* Destroy the Set Power State event */
1968 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1969 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1970 {
1971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1972 "WDI Close failed to destroy an event");
1973
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 }
1976
1977 /*------------------------------------------------------------------------
1978 Closes the Data Path Utility Module
1979 ------------------------------------------------------------------------*/
1980 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1981 {
1982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1983 "WDI Init failed to close the DP Util Module");
1984
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 }
1987
1988 /*destroy the BSS sessions pending Queue */
1989 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1990 {
1991 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1992 }
1993
1994 /* destroy the WDI Pending Assoc Id Request Queue*/
1995 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1996
1997 /* destroy the WDI Pending Request Queue*/
1998 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 /*destroy the response timer */
2001 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2002
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002003 /*destroy the SSR timer */
2004 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2005
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 /*invalidate the main synchro mutex */
2007 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2008 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2009 {
2010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2011 "Failed to delete mutex %d", wptStatus);
2012 WDI_ASSERT(0);
2013 }
2014
2015 /*Clear control block. note that this will clear the "magic"
2016 which will inhibit all asynchronous callbacks*/
2017 WDI_CleanCB(&gWDICb);
2018
2019 return wptStatus;
2020
2021}/*WDI_Close*/
2022
2023/**
2024 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2025 This will do most of the WDI stop & close
2026 operations without doing any handshake with Riva
2027
2028 This will also make sure that the control transport
2029 will NOT be closed.
2030
2031 This request will not be queued.
2032
2033
2034 WDI_Start must have been called.
2035
2036 @param closeTransport: Close control channel if this is set
2037
2038 @return Result of the function call
2039*/
2040WDI_Status
2041WDI_Shutdown
2042(
2043 wpt_boolean closeTransport
2044)
2045{
2046 WDI_EventInfoType wdiEventData;
2047 wpt_status wptStatus;
2048 int i = 0;
2049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2050
2051 /*------------------------------------------------------------------------
2052 Sanity Check
2053 ------------------------------------------------------------------------*/
2054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2055 {
2056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2057 "WDI API call before module is initialized - Fail request");
2058
2059 return WDI_STATUS_E_NOT_ALLOWED;
2060 }
2061
2062 /*------------------------------------------------------------------------
2063 Fill in Event data and post to the Main FSM
2064 ------------------------------------------------------------------------*/
2065 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2066 wdiEventData.pEventData = NULL;
2067 wdiEventData.uEventDataSize = 0;
2068
2069 /* Shutdown will not be queued, if the state is busy timer will be
2070 * stopped & this message will be processed.*/
2071 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2072 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2073 {
2074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002075 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 }
2077 /* Destroy the Set Power State event */
2078 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2079 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2080 {
2081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2082 "WDI Close failed to destroy an event");
2083
2084 WDI_ASSERT(0);
2085 }
2086 /*------------------------------------------------------------------------
2087 Closes the Data Path Utility Module
2088 ------------------------------------------------------------------------*/
2089 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2090 {
2091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2092 "WDI Init failed to close the DP Util Module");
2093
2094 WDI_ASSERT(0);
2095 }
2096 if ( closeTransport )
2097 {
2098 /* Close control transport, called from module unload */
2099 WCTS_CloseTransport(gWDICb.wctsHandle);
2100 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002101 else
2102 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002103 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002104 the pending messages in the transport queue */
2105 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2106 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 /*destroy the BSS sessions pending Queue */
2108 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2109 {
2110 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2111 }
2112
2113 /* destroy the WDI Pending Assoc Id Request Queue*/
2114 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2115 /* destroy the WDI Pending Request Queue*/
2116 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2117 /*destroy the response timer */
2118 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002119 /*destroy the SSR timer */
2120 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002121
2122 /*invalidate the main synchro mutex */
2123 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2125 {
2126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002127 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002128 WDI_ASSERT(0);
2129 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002130 /* Free the global variables */
2131 wpalMemoryFree(gpHostWlanFeatCaps);
2132 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002133 gpHostWlanFeatCaps = NULL;
2134 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002135 /*Clear control block. note that this will clear the "magic"
2136 which will inhibit all asynchronous callbacks*/
2137 WDI_CleanCB(&gWDICb);
2138 return wptStatus;
2139
2140}/*WDI_Shutdown*/
2141
2142
Jeff Johnsone7245742012-09-05 17:12:55 -07002143/*========================================================================
2144
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002146
Jeff Johnson295189b2012-06-20 16:38:30 -07002147==========================================================================*/
2148
2149/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002150 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 the WLAN Device to get ready for a scan procedure. Upon
2152 the call of this API the WLAN DAL will pack and send a
2153 HAL Init Scan request message to the lower RIVA
2154 sub-system if DAL is in state STARTED.
2155
2156 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002158
2159 WDI_Start must have been called.
2160
2161 @param wdiInitScanParams: the init scan parameters as specified
2162 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002163
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 wdiInitScanRspCb: callback for passing back the response
2165 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 callback
2169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 @see WDI_Start
2171 @return Result of the function call
2172*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002173WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002174WDI_InitScanReq
2175(
2176 WDI_InitScanReqParamsType* pwdiInitScanParams,
2177 WDI_InitScanRspCb wdiInitScanRspCb,
2178 void* pUserData
2179)
2180{
2181 WDI_EventInfoType wdiEventData;
2182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2183
2184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 ------------------------------------------------------------------------*/
2187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2188 {
2189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2190 "WDI API call before module is initialized - Fail request");
2191
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /*------------------------------------------------------------------------
2196 Fill in Event data and post to the Main FSM
2197 ------------------------------------------------------------------------*/
2198 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002199 wdiEventData.pEventData = pwdiInitScanParams;
2200 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2201 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 wdiEventData.pUserData = pUserData;
2203
2204 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2205
2206}/*WDI_InitScanReq*/
2207
2208/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002209 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 wishes to change the Scan channel on the WLAN Device.
2211 Upon the call of this API the WLAN DAL will pack and
2212 send a HAL Start Scan request message to the lower RIVA
2213 sub-system if DAL is in state STARTED.
2214
2215 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002216 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002217
2218 WDI_InitScanReq must have been called.
2219
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002221 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002222
Jeff Johnson295189b2012-06-20 16:38:30 -07002223 wdiStartScanRspCb: callback for passing back the
2224 response of the start scan operation received from the
2225 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 callback
2229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 @see WDI_InitScanReq
2231 @return Result of the function call
2232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002234WDI_StartScanReq
2235(
2236 WDI_StartScanReqParamsType* pwdiStartScanParams,
2237 WDI_StartScanRspCb wdiStartScanRspCb,
2238 void* pUserData
2239)
2240{
2241 WDI_EventInfoType wdiEventData;
2242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2243
2244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 ------------------------------------------------------------------------*/
2247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2248 {
2249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2250 "WDI API call before module is initialized - Fail request");
2251
Jeff Johnsone7245742012-09-05 17:12:55 -07002252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 }
2254
2255 /*------------------------------------------------------------------------
2256 Fill in Event data and post to the Main FSM
2257 ------------------------------------------------------------------------*/
2258 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 wdiEventData.pEventData = pwdiStartScanParams;
2260 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2261 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 wdiEventData.pUserData = pUserData;
2263
2264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2265
2266}/*WDI_StartScanReq*/
2267
2268
2269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002270 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002271 wants to end scanning for a particular channel that it
2272 had set before by calling Scan Start on the WLAN Device.
2273 Upon the call of this API the WLAN DAL will pack and
2274 send a HAL End Scan request message to the lower RIVA
2275 sub-system if DAL is in state STARTED.
2276
2277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002279
2280 WDI_StartScanReq must have been called.
2281
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002284
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 wdiEndScanRspCb: callback for passing back the response
2286 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002287
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002289 callback
2290
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 @see WDI_StartScanReq
2292 @return Result of the function call
2293*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002295WDI_EndScanReq
2296(
2297 WDI_EndScanReqParamsType* pwdiEndScanParams,
2298 WDI_EndScanRspCb wdiEndScanRspCb,
2299 void* pUserData
2300)
2301{
2302 WDI_EventInfoType wdiEventData;
2303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2304
2305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 ------------------------------------------------------------------------*/
2308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2309 {
2310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2311 "WDI API call before module is initialized - Fail request");
2312
Jeff Johnsone7245742012-09-05 17:12:55 -07002313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 }
2315
2316 /*------------------------------------------------------------------------
2317 Fill in Event data and post to the Main FSM
2318 ------------------------------------------------------------------------*/
2319 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002320 wdiEventData.pEventData = pwdiEndScanParams;
2321 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2322 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 wdiEventData.pUserData = pUserData;
2324
2325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2326
2327}/*WDI_EndScanReq*/
2328
2329
2330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002331 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 completed the scan process on the WLAN Device. Upon the
2333 call of this API the WLAN DAL will pack and send a HAL
2334 Finish Scan Request request message to the lower RIVA
2335 sub-system if DAL is in state STARTED.
2336
2337 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002339
2340 WDI_InitScanReq must have been called.
2341
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002344
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 wdiFinishScanRspCb: callback for passing back the
2346 response of the finish scan operation received from the
2347 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 callback
2351
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 @see WDI_InitScanReq
2353 @return Result of the function call
2354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002356WDI_FinishScanReq
2357(
2358 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2359 WDI_FinishScanRspCb wdiFinishScanRspCb,
2360 void* pUserData
2361)
2362{
2363 WDI_EventInfoType wdiEventData;
2364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2365
2366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 ------------------------------------------------------------------------*/
2369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2370 {
2371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2372 "WDI API call before module is initialized - Fail request");
2373
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002375 }
2376
2377 /*------------------------------------------------------------------------
2378 Fill in Event data and post to the Main FSM
2379 ------------------------------------------------------------------------*/
2380 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002381 wdiEventData.pEventData = pwdiFinishScanParams;
2382 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2383 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 wdiEventData.pUserData = pUserData;
2385
2386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2387
2388}/*WDI_FinishScanReq*/
2389
Jeff Johnsone7245742012-09-05 17:12:55 -07002390/*========================================================================
2391
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002393
Jeff Johnson295189b2012-06-20 16:38:30 -07002394==========================================================================*/
2395
2396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 to start an association procedure to a BSS. Upon the
2399 call of this API the WLAN DAL will pack and send a HAL
2400 Join request message to the lower RIVA sub-system if
2401 DAL is in state STARTED.
2402
2403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002405
2406 WDI_Start must have been called.
2407
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 wdiJoinRspCb: callback for passing back the response of
2412 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 callback
2416
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 @see WDI_Start
2418 @return Result of the function call
2419*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002420WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002421WDI_JoinReq
2422(
2423 WDI_JoinReqParamsType* pwdiJoinParams,
2424 WDI_JoinRspCb wdiJoinRspCb,
2425 void* pUserData
2426)
2427{
2428 WDI_EventInfoType wdiEventData;
2429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2430
2431 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 ------------------------------------------------------------------------*/
2434 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2435 {
2436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2437 "WDI API call before module is initialized - Fail request");
2438
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 }
2441
2442 /*------------------------------------------------------------------------
2443 Fill in Event data and post to the Main FSM
2444 ------------------------------------------------------------------------*/
2445 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002446 wdiEventData.pEventData = pwdiJoinParams;
2447 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2448 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 wdiEventData.pUserData = pUserData;
2450
2451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2452
2453}/*WDI_JoinReq*/
2454
2455/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 wishes to configure the newly acquired or in process of
2458 being acquired BSS to the HW . Upon the call of this API
2459 the WLAN DAL will pack and send a HAL Config BSS request
2460 message to the lower RIVA sub-system if DAL is in state
2461 STARTED.
2462
2463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002465
2466 WDI_JoinReq must have been called.
2467
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 wdiConfigBSSRspCb: callback for passing back the
2472 response of the config BSS operation received from the
2473 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 callback
2477
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 @see WDI_JoinReq
2479 @return Result of the function call
2480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002482WDI_ConfigBSSReq
2483(
2484 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2485 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2486 void* pUserData
2487)
2488{
2489 WDI_EventInfoType wdiEventData;
2490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2491
2492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 ------------------------------------------------------------------------*/
2495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2496 {
2497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2498 "WDI API call before module is initialized - Fail request");
2499
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 }
2502
2503 /*------------------------------------------------------------------------
2504 Fill in Event data and post to the Main FSM
2505 ------------------------------------------------------------------------*/
2506 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002507 wdiEventData.pEventData = pwdiConfigBSSParams;
2508 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2509 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 wdiEventData.pUserData = pUserData;
2511
2512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2513
2514}/*WDI_ConfigBSSReq*/
2515
2516/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 disassociating from the BSS and wishes to notify HW.
2519 Upon the call of this API the WLAN DAL will pack and
2520 send a HAL Del BSS request message to the lower RIVA
2521 sub-system if DAL is in state STARTED.
2522
2523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002525
2526 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiDelBSSRspCb: callback for passing back the response
2532 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 callback
2536
2537 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 @return Result of the function call
2539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002541WDI_DelBSSReq
2542(
2543 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2544 WDI_DelBSSRspCb wdiDelBSSRspCb,
2545 void* pUserData
2546)
2547{
2548 WDI_EventInfoType wdiEventData;
2549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2550
2551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 ------------------------------------------------------------------------*/
2554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2555 {
2556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2557 "WDI API call before module is initialized - Fail request");
2558
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 }
2561
2562 /*------------------------------------------------------------------------
2563 Fill in Event data and post to the Main FSM
2564 ------------------------------------------------------------------------*/
2565 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 wdiEventData.pEventData = pwdiDelBSSParams;
2567 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2568 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002569 wdiEventData.pUserData = pUserData;
2570
2571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2572
2573}/*WDI_DelBSSReq*/
2574
2575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 associated to a BSS and wishes to configure HW for
2578 associated state. Upon the call of this API the WLAN DAL
2579 will pack and send a HAL Post Assoc request message to
2580 the lower RIVA sub-system if DAL is in state STARTED.
2581
2582 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002584
2585 WDI_JoinReq must have been called.
2586
2587 @param wdiPostAssocReqParams: the assoc parameters as specified
2588 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002589
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 wdiPostAssocRspCb: callback for passing back the
2591 response of the post assoc operation received from the
2592 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 callback
2596
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 @see WDI_JoinReq
2598 @return Result of the function call
2599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002601WDI_PostAssocReq
2602(
2603 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2604 WDI_PostAssocRspCb wdiPostAssocRspCb,
2605 void* pUserData
2606)
2607{
2608 WDI_EventInfoType wdiEventData;
2609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2610
2611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 ------------------------------------------------------------------------*/
2614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2615 {
2616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2617 "WDI API call before module is initialized - Fail request");
2618
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 }
2621
2622 /*------------------------------------------------------------------------
2623 Fill in Event data and post to the Main FSM
2624 ------------------------------------------------------------------------*/
2625 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 wdiEventData.pEventData = pwdiPostAssocReqParams;
2627 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2628 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 wdiEventData.pUserData = pUserData;
2630
2631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2632
2633}/*WDI_PostAssocReq*/
2634
2635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 association with another STA has ended and the station
2638 must be deleted from HW. Upon the call of this API the
2639 WLAN DAL will pack and send a HAL Del STA request
2640 message to the lower RIVA sub-system if DAL is in state
2641 STARTED.
2642
2643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002645
2646 WDI_PostAssocReq must have been called.
2647
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiDelSTARspCb: callback for passing back the response
2652 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 callback
2656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 @see WDI_PostAssocReq
2658 @return Result of the function call
2659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002661WDI_DelSTAReq
2662(
2663 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2664 WDI_DelSTARspCb wdiDelSTARspCb,
2665 void* pUserData
2666)
2667{
2668 WDI_EventInfoType wdiEventData;
2669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2670
2671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 ------------------------------------------------------------------------*/
2674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2677 "WDI API call before module is initialized - Fail request");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*------------------------------------------------------------------------
2683 Fill in Event data and post to the Main FSM
2684 ------------------------------------------------------------------------*/
2685 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 wdiEventData.pEventData = pwdiDelSTAParams;
2687 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2688 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wdiEventData.pUserData = pUserData;
2690
2691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2692
2693}/*WDI_DelSTAReq*/
2694
Jeff Johnsone7245742012-09-05 17:12:55 -07002695/*========================================================================
2696
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002698
Jeff Johnson295189b2012-06-20 16:38:30 -07002699==========================================================================*/
2700
2701/**
2702 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2703 install a BSS encryption key on the HW. Upon the call of this
2704 API the WLAN DAL will pack and send a Set BSS Key request
2705 message to the lower RIVA sub-system if DAL is in state
2706 STARTED.
2707
2708 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002710
2711 WDI_PostAssocReq must have been called.
2712
Jeff Johnsone7245742012-09-05 17:12:55 -07002713 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002715
Jeff Johnson295189b2012-06-20 16:38:30 -07002716 wdiSetBSSKeyRspCb: callback for passing back the
2717 response of the set BSS Key operation received from the
2718 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 callback
2722
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 @see WDI_PostAssocReq
2724 @return Result of the function call
2725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002727WDI_SetBSSKeyReq
2728(
2729 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2730 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2731 void* pUserData
2732)
2733{
2734 WDI_EventInfoType wdiEventData;
2735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2736
2737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 ------------------------------------------------------------------------*/
2740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2741 {
2742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2743 "WDI API call before module is initialized - Fail request");
2744
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 }
2747
2748 /*------------------------------------------------------------------------
2749 Fill in Event data and post to the Main FSM
2750 ------------------------------------------------------------------------*/
2751 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2753 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2754 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 wdiEventData.pUserData = pUserData;
2756
2757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2758
2759}/*WDI_SetBSSKeyReq*/
2760
2761/**
2762 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2763 uninstall a BSS key from HW. Upon the call of this API the
2764 WLAN DAL will pack and send a HAL Remove BSS Key request
2765 message to the lower RIVA sub-system if DAL is in state
2766 STARTED.
2767
2768 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002770
2771 WDI_SetBSSKeyReq must have been called.
2772
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002775
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 wdiRemoveBSSKeyRspCb: callback for passing back the
2777 response of the remove BSS key operation received from
2778 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 callback
2782
Jeff Johnson295189b2012-06-20 16:38:30 -07002783 @see WDI_SetBSSKeyReq
2784 @return Result of the function call
2785*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002787WDI_RemoveBSSKeyReq
2788(
2789 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2790 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2791 void* pUserData
2792)
2793{
2794 WDI_EventInfoType wdiEventData;
2795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2796
2797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 ------------------------------------------------------------------------*/
2800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2801 {
2802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2803 "WDI API call before module is initialized - Fail request");
2804
Jeff Johnsone7245742012-09-05 17:12:55 -07002805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 }
2807
2808 /*------------------------------------------------------------------------
2809 Fill in Event data and post to the Main FSM
2810 ------------------------------------------------------------------------*/
2811 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002812 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2813 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2814 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 wdiEventData.pUserData = pUserData;
2816
2817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2818
2819}/*WDI_RemoveBSSKeyReq*/
2820
2821
2822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 ready to install a STA(ast) encryption key in HW. Upon
2825 the call of this API the WLAN DAL will pack and send a
2826 HAL Set STA Key request message to the lower RIVA
2827 sub-system if DAL is in state STARTED.
2828
2829 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002830 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002831
2832 WDI_PostAssocReq must have been called.
2833
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002836
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 wdiSetSTAKeyRspCb: callback for passing back the
2838 response of the set STA key operation received from the
2839 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 callback
2843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 @see WDI_PostAssocReq
2845 @return Result of the function call
2846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002848WDI_SetSTAKeyReq
2849(
2850 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2851 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2852 void* pUserData
2853)
2854{
2855 WDI_EventInfoType wdiEventData;
2856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2857
2858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 ------------------------------------------------------------------------*/
2861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2862 {
2863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2864 "WDI API call before module is initialized - Fail request");
2865
Jeff Johnsone7245742012-09-05 17:12:55 -07002866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 }
2868
2869 /*------------------------------------------------------------------------
2870 Fill in Event data and post to the Main FSM
2871 ------------------------------------------------------------------------*/
2872 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002873 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2874 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2875 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 wdiEventData.pUserData = pUserData;
2877
2878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2879
2880}/*WDI_SetSTAKeyReq*/
2881
2882
2883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 wants to uninstall a previously set STA key in HW. Upon
2886 the call of this API the WLAN DAL will pack and send a
2887 HAL Remove STA Key request message to the lower RIVA
2888 sub-system if DAL is in state STARTED.
2889
2890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002892
2893 WDI_SetSTAKeyReq must have been called.
2894
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002897
Jeff Johnson295189b2012-06-20 16:38:30 -07002898 wdiRemoveSTAKeyRspCb: callback for passing back the
2899 response of the remove STA key operation received from
2900 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002901
Jeff Johnson295189b2012-06-20 16:38:30 -07002902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 callback
2904
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 @see WDI_SetSTAKeyReq
2906 @return Result of the function call
2907*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002909WDI_RemoveSTAKeyReq
2910(
2911 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2912 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2913 void* pUserData
2914)
2915{
2916 WDI_EventInfoType wdiEventData;
2917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2918
2919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002921 ------------------------------------------------------------------------*/
2922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2923 {
2924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2925 "WDI API call before module is initialized - Fail request");
2926
Jeff Johnsone7245742012-09-05 17:12:55 -07002927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 }
2929
2930 /*------------------------------------------------------------------------
2931 Fill in Event data and post to the Main FSM
2932 ------------------------------------------------------------------------*/
2933 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002934 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2935 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2936 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002937 wdiEventData.pUserData = pUserData;
2938
2939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2940
2941}/*WDI_RemoveSTAKeyReq*/
2942
2943
2944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002945 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 wants to install a STA Bcast encryption key on the HW.
2947 Upon the call of this API the WLAN DAL will pack and
2948 send a HAL Start request message to the lower RIVA
2949 sub-system if DAL is in state STARTED.
2950
2951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002953
2954 WDI_PostAssocReq must have been called.
2955
Jeff Johnsone7245742012-09-05 17:12:55 -07002956 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002958
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 wdiSetSTABcastKeyRspCb: callback for passing back the
2960 response of the set BSS Key operation received from the
2961 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002962
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002964 callback
2965
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 @see WDI_PostAssocReq
2967 @return Result of the function call
2968*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002969WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002970WDI_SetSTABcastKeyReq
2971(
2972 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2973 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2974 void* pUserData
2975)
2976
2977{
2978 WDI_EventInfoType wdiEventData;
2979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2980
2981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 ------------------------------------------------------------------------*/
2984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2985 {
2986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2987 "WDI API call before module is initialized - Fail request");
2988
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 }
2991
2992 /*------------------------------------------------------------------------
2993 Fill in Event data and post to the Main FSM
2994 ------------------------------------------------------------------------*/
2995 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2997 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2998 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 wdiEventData.pUserData = pUserData;
3000
3001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3002
3003}/*WDI_SetSTABcastKeyReq*/
3004
3005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003006 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 MAC wants to uninstall a STA Bcast key from HW. Upon the
3008 call of this API the WLAN DAL will pack and send a HAL
3009 Remove STA Bcast Key request message to the lower RIVA
3010 sub-system if DAL is in state STARTED.
3011
3012 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003013 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003014
3015 WDI_SetSTABcastKeyReq must have been called.
3016
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 parameters as specified by the Device
3019 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003020
Jeff Johnson295189b2012-06-20 16:38:30 -07003021 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3022 response of the remove STA Bcast key operation received
3023 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 callback
3027
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 @see WDI_SetSTABcastKeyReq
3029 @return Result of the function call
3030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003032WDI_RemoveSTABcastKeyReq
3033(
3034 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3035 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3036 void* pUserData
3037)
3038{
3039 WDI_EventInfoType wdiEventData;
3040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3041
3042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 ------------------------------------------------------------------------*/
3045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3046 {
3047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3048 "WDI API call before module is initialized - Fail request");
3049
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003051 }
3052
3053 /*------------------------------------------------------------------------
3054 Fill in Event data and post to the Main FSM
3055 ------------------------------------------------------------------------*/
3056 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003057 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3058 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3059 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 wdiEventData.pUserData = pUserData;
3061
3062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3063
3064}/*WDI_RemoveSTABcastKeyReq*/
3065
3066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003067 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 MAC wants to set Max Tx Power to HW. Upon the
3069 call of this API the WLAN DAL will pack and send a HAL
3070 Remove STA Bcast Key request message to the lower RIVA
3071 sub-system if DAL is in state STARTED.
3072
3073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003075
3076 WDI_SetSTABcastKeyReq must have been called.
3077
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 parameters as specified by the Device
3080 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003081
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3083 response of the remove STA Bcast key operation received
3084 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 callback
3088
Jeff Johnson295189b2012-06-20 16:38:30 -07003089 @see WDI_SetMaxTxPowerReq
3090 @return Result of the function call
3091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003093WDI_SetMaxTxPowerReq
3094(
3095 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3096 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3097 void* pUserData
3098)
3099{
3100 WDI_EventInfoType wdiEventData;
3101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3102
3103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003105 ------------------------------------------------------------------------*/
3106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3107 {
3108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3109 "WDI API call before module is initialized - Fail request");
3110
Jeff Johnsone7245742012-09-05 17:12:55 -07003111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 }
3113
3114 /*------------------------------------------------------------------------
3115 Fill in Event data and post to the Main FSM
3116 ------------------------------------------------------------------------*/
3117 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003118 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3119 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3120 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 wdiEventData.pUserData = pUserData;
3122
3123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3124}
3125
schang86c22c42013-03-13 18:41:24 -07003126/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003127 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3128 MAC wants to set Max Tx Power to HW for specific band.
3129
3130 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3131
3132 wdiReqStatusCb: callback for passing back the
3133 response msg from the device
3134
3135 pUserData: user data will be passed back with the
3136 callback
3137
3138 @see WDI_SetMaxTxPowerPerBandReq
3139 @return Result of the function call
3140*/
3141WDI_Status
3142WDI_SetMaxTxPowerPerBandReq
3143(
3144 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3145 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3146 void* pUserData
3147)
3148{
3149 WDI_EventInfoType wdiEventData;
3150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3151
3152 /*------------------------------------------------------------------------
3153 Sanity Check
3154 ------------------------------------------------------------------------*/
3155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3156 {
3157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3158 "WDI API call before module is initialized - Fail request");
3159
3160 return WDI_STATUS_E_NOT_ALLOWED;
3161 }
3162
3163 /*------------------------------------------------------------------------
3164 Fill in Event data and post to the Main FSM
3165 ------------------------------------------------------------------------*/
3166 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3167 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3168 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3169 wdiEventData.pCBfnc = wdiReqStatusCb;
3170 wdiEventData.pUserData = pUserData;
3171
3172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3173}
3174
3175/**
schang86c22c42013-03-13 18:41:24 -07003176 @brief WDI_SetTxPowerReq will be called when the upper
3177 MAC wants to set Tx Power to HW.
3178 In state BUSY this request will be queued. Request won't
3179 be allowed in any other state.
3180
3181
3182 @param pwdiSetTxPowerParams: set TS Power parameters
3183 BSSID and target TX Power with dbm included
3184
3185 wdiReqStatusCb: callback for passing back the response
3186
3187 pUserData: user data will be passed back with the
3188 callback
3189
3190 @return Result of the function call
3191*/
3192WDI_Status
3193WDI_SetTxPowerReq
3194(
3195 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3196 WDA_SetTxPowerRspCb wdiReqStatusCb,
3197 void* pUserData
3198)
3199{
3200 WDI_EventInfoType wdiEventData;
3201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3202
3203 /*------------------------------------------------------------------------
3204 Sanity Check
3205 ------------------------------------------------------------------------*/
3206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3207 {
3208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3209 "WDI API call before module is initialized - Fail request");
3210
3211 return WDI_STATUS_E_NOT_ALLOWED;
3212 }
3213
3214 /*------------------------------------------------------------------------
3215 Fill in Event data and post to the Main FSM
3216 ------------------------------------------------------------------------*/
3217 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3218 wdiEventData.pEventData = pwdiSetTxPowerParams;
3219 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3220 wdiEventData.pCBfnc = wdiReqStatusCb;
3221 wdiEventData.pUserData = pUserData;
3222
3223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3224}
3225
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003226#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003227WDI_Status
3228WDI_TSMStatsReq
3229(
3230 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3231 WDI_TsmRspCb wdiReqStatusCb,
3232 void* pUserData
3233)
3234{
3235 WDI_EventInfoType wdiEventData;
3236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 /*------------------------------------------------------------------------
3238 Sanity Check
3239 ------------------------------------------------------------------------*/
3240 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3241 {
3242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3243 "WDI API call before module is initialized - Fail request");
3244
3245 return WDI_STATUS_E_NOT_ALLOWED;
3246 }
3247
3248 /*------------------------------------------------------------------------
3249 Fill in Event data and post to the Main FSM
3250 ------------------------------------------------------------------------*/
3251 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3252 wdiEventData.pEventData = pwdiTsmReqParams;
3253 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3254 wdiEventData.pCBfnc = wdiReqStatusCb;
3255 wdiEventData.pUserData = pUserData;
3256
3257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3258
3259}
3260#endif
3261
3262/*========================================================================
3263
3264 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003265
Jeff Johnson295189b2012-06-20 16:38:30 -07003266==========================================================================*/
3267
3268/**
3269 @brief WDI_AddTSReq will be called when the upper MAC to inform
3270 the device of a successful add TSpec negotiation. HW
3271 needs to receive the TSpec Info from the UMAC in order
3272 to configure properly the QoS data traffic. Upon the
3273 call of this API the WLAN DAL will pack and send a HAL
3274 Add TS request message to the lower RIVA sub-system if
3275 DAL is in state STARTED.
3276
3277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003279
3280 WDI_PostAssocReq must have been called.
3281
3282 @param wdiAddTsReqParams: the add TS parameters as specified by
3283 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003284
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 wdiAddTsRspCb: callback for passing back the response of
3286 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 callback
3290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 @see WDI_PostAssocReq
3292 @return Result of the function call
3293*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003295WDI_AddTSReq
3296(
3297 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3298 WDI_AddTsRspCb wdiAddTsRspCb,
3299 void* pUserData
3300)
3301{
3302 WDI_EventInfoType wdiEventData;
3303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3304
3305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 ------------------------------------------------------------------------*/
3308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3309 {
3310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3311 "WDI API call before module is initialized - Fail request");
3312
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 }
3315
3316 /*------------------------------------------------------------------------
3317 Fill in Event data and post to the Main FSM
3318 ------------------------------------------------------------------------*/
3319 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003320 wdiEventData.pEventData = pwdiAddTsReqParams;
3321 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3322 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003323 wdiEventData.pUserData = pUserData;
3324
3325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3326
3327}/*WDI_AddTSReq*/
3328
3329
3330
3331/**
3332 @brief WDI_DelTSReq will be called when the upper MAC has ended
3333 admission on a specific AC. This is to inform HW that
3334 QoS traffic parameters must be rest. Upon the call of
3335 this API the WLAN DAL will pack and send a HAL Del TS
3336 request message to the lower RIVA sub-system if DAL is
3337 in state STARTED.
3338
3339 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003341
3342 WDI_AddTSReq must have been called.
3343
3344 @param wdiDelTsReqParams: the del TS parameters as specified by
3345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003346
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 wdiDelTsRspCb: callback for passing back the response of
3348 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003349
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 callback
3352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 @see WDI_AddTSReq
3354 @return Result of the function call
3355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003357WDI_DelTSReq
3358(
3359 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3360 WDI_DelTsRspCb wdiDelTsRspCb,
3361 void* pUserData
3362)
3363{
3364 WDI_EventInfoType wdiEventData;
3365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3366
3367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 ------------------------------------------------------------------------*/
3370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3371 {
3372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3373 "WDI API call before module is initialized - Fail request");
3374
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 }
3377
3378 /*------------------------------------------------------------------------
3379 Fill in Event data and post to the Main FSM
3380 ------------------------------------------------------------------------*/
3381 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003382 wdiEventData.pEventData = pwdiDelTsReqParams;
3383 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3384 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 wdiEventData.pUserData = pUserData;
3386
3387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3388
3389}/*WDI_DelTSReq*/
3390
3391
3392
3393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003394 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003395 wishes to update the EDCA parameters used by HW for QoS
3396 data traffic. Upon the call of this API the WLAN DAL
3397 will pack and send a HAL Update EDCA Params request
3398 message to the lower RIVA sub-system if DAL is in state
3399 STARTED.
3400
3401 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003402 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003403
3404 WDI_PostAssocReq must have been called.
3405
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 wdiUpdateEDCAParamsRspCb: callback for passing back the
3410 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003413 callback
3414
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 @see WDI_PostAssocReq
3416 @return Result of the function call
3417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003419WDI_UpdateEDCAParams
3420(
3421 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3422 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3423 void* pUserData
3424)
3425{
3426 WDI_EventInfoType wdiEventData;
3427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3428
3429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 ------------------------------------------------------------------------*/
3432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3433 {
3434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3435 "WDI API call before module is initialized - Fail request");
3436
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 }
3439
3440 /*------------------------------------------------------------------------
3441 Fill in Event data and post to the Main FSM
3442 ------------------------------------------------------------------------*/
3443 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3445 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3446 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 wdiEventData.pUserData = pUserData;
3448
3449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3450
3451}/*WDI_UpdateEDCAParams*/
3452
3453
3454/**
3455 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3456 successfully a BA session and needs to notify the HW for
3457 the appropriate settings to take place. Upon the call of
3458 this API the WLAN DAL will pack and send a HAL Add BA
3459 request message to the lower RIVA sub-system if DAL is
3460 in state STARTED.
3461
3462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003464
3465 WDI_PostAssocReq must have been called.
3466
3467 @param wdiAddBAReqParams: the add BA parameters as specified by
3468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 wdiAddBARspCb: callback for passing back the response of
3471 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_PostAssocReq
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_AddBASessionReq
3481(
3482 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3483 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3484 void* pUserData
3485)
3486{
3487 WDI_EventInfoType wdiEventData;
3488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3489
3490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 ------------------------------------------------------------------------*/
3493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3494 {
3495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3496 "WDI API call before module is initialized - Fail request");
3497
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 }
3500
3501 /*------------------------------------------------------------------------
3502 Fill in Event data and post to the Main FSM
3503 ------------------------------------------------------------------------*/
3504 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003505 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3506 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3507 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 wdiEventData.pUserData = pUserData;
3509
3510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3511
3512}/*WDI_AddBASessionReq*/
3513
3514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 inform HW that it has deleted a previously created BA
3517 session. Upon the call of this API the WLAN DAL will
3518 pack and send a HAL Del BA request message to the lower
3519 RIVA sub-system if DAL is in state STARTED.
3520
3521 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003523
3524 WDI_AddBAReq must have been called.
3525
3526 @param wdiDelBAReqParams: the del BA parameters as specified by
3527 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003528
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 wdiDelBARspCb: callback for passing back the response of
3530 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003533 callback
3534
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 @see WDI_AddBAReq
3536 @return Result of the function call
3537*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003539WDI_DelBAReq
3540(
3541 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3542 WDI_DelBARspCb wdiDelBARspCb,
3543 void* pUserData
3544)
3545{
3546 WDI_EventInfoType wdiEventData;
3547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3548
3549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 ------------------------------------------------------------------------*/
3552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3553 {
3554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3555 "WDI API call before module is initialized - Fail request");
3556
Jeff Johnsone7245742012-09-05 17:12:55 -07003557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 }
3559
3560 /*------------------------------------------------------------------------
3561 Fill in Event data and post to the Main FSM
3562 ------------------------------------------------------------------------*/
3563 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003564 wdiEventData.pEventData = pwdiDelBAReqParams;
3565 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3566 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003567 wdiEventData.pUserData = pUserData;
3568
3569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3570
3571}/*WDI_DelBAReq*/
3572
Jeff Johnsone7245742012-09-05 17:12:55 -07003573/*========================================================================
3574
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003576
Jeff Johnson295189b2012-06-20 16:38:30 -07003577==========================================================================*/
3578
3579/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 wants to set the power save related configurations of
3582 the WLAN Device. Upon the call of this API the WLAN DAL
3583 will pack and send a HAL Update CFG request message to
3584 the lower RIVA sub-system if DAL is in state STARTED.
3585
3586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003588
3589 WDI_Start must have been called.
3590
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003593
Jeff Johnson295189b2012-06-20 16:38:30 -07003594 wdiSetPwrSaveCfgCb: callback for passing back the
3595 response of the set power save cfg operation received
3596 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003599 callback
3600
Jeff Johnson295189b2012-06-20 16:38:30 -07003601 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 @return Result of the function call
3603*/
3604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003605WDI_SetPwrSaveCfgReq
3606(
3607 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3608 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3609 void* pUserData
3610)
3611{
3612 WDI_EventInfoType wdiEventData;
3613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3614
3615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003617 ------------------------------------------------------------------------*/
3618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3619 {
3620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3621 "WDI API call before module is initialized - Fail request");
3622
Jeff Johnsone7245742012-09-05 17:12:55 -07003623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 }
3625
3626 /*------------------------------------------------------------------------
3627 Fill in Event data and post to the Main FSM
3628 ------------------------------------------------------------------------*/
3629 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 wdiEventData.pEventData = pwdiPowerSaveCfg;
3631 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3632 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003633 wdiEventData.pUserData = pUserData;
3634
3635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3636
3637}/*WDI_SetPwrSaveCfgReq*/
3638
3639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 request the device to get into IMPS power state. Upon
3642 the call of this API the WLAN DAL will send a HAL Enter
3643 IMPS request message to the lower RIVA sub-system if DAL
3644 is in state STARTED.
3645
3646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003648
Jeff Johnsone7245742012-09-05 17:12:55 -07003649
3650 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 response of the Enter IMPS operation received from the
3652 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003655 callback
3656
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 @see WDI_Start
3658 @return Result of the function call
3659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003661WDI_EnterImpsReq
3662(
Mihir Shetea4306052014-03-25 00:02:54 +05303663 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3665 void* pUserData
3666)
3667{
3668 WDI_EventInfoType wdiEventData;
3669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3670
3671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 ------------------------------------------------------------------------*/
3674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3675 {
3676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3677 "WDI API call before module is initialized - Fail request");
3678
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 }
3681
3682 /*------------------------------------------------------------------------
3683 Fill in Event data and post to the Main FSM
3684 ------------------------------------------------------------------------*/
3685 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303686 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3687 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiEventData.pUserData = pUserData;
3690
3691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3692
3693}/*WDI_EnterImpsReq*/
3694
3695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 request the device to get out of IMPS power state. Upon
3698 the call of this API the WLAN DAL will send a HAL Exit
3699 IMPS request message to the lower RIVA sub-system if DAL
3700 is in state STARTED.
3701
3702 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003704
Jeff Johnson295189b2012-06-20 16:38:30 -07003705
Jeff Johnsone7245742012-09-05 17:12:55 -07003706
3707 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003711 callback
3712
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 @see WDI_Start
3714 @return Result of the function call
3715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003717WDI_ExitImpsReq
3718(
3719 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3720 void* pUserData
3721)
3722{
3723 WDI_EventInfoType wdiEventData;
3724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3725
3726 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003727 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003728 ------------------------------------------------------------------------*/
3729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3730 {
3731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3732 "WDI API call before module is initialized - Fail request");
3733
Jeff Johnsone7245742012-09-05 17:12:55 -07003734 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 }
3736
3737 /*------------------------------------------------------------------------
3738 Fill in Event data and post to the Main FSM
3739 ------------------------------------------------------------------------*/
3740 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 wdiEventData.pEventData = NULL;
3742 wdiEventData.uEventDataSize = 0;
3743 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 wdiEventData.pUserData = pUserData;
3745
3746 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3747
3748}/*WDI_ExitImpsReq*/
3749
3750/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 request the device to get into BMPS power state. Upon
3753 the call of this API the WLAN DAL will pack and send a
3754 HAL Enter BMPS request message to the lower RIVA
3755 sub-system if DAL is in state STARTED.
3756
3757 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003759
3760 WDI_PostAssocReq must have been called.
3761
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 wdiEnterBmpsRspCb: callback for passing back the
3766 response of the Enter BMPS operation received from the
3767 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003768
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 callback
3771
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 @see WDI_PostAssocReq
3773 @return Result of the function call
3774*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003775WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003776WDI_EnterBmpsReq
3777(
3778 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3779 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3780 void* pUserData
3781)
3782{
3783 WDI_EventInfoType wdiEventData;
3784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3785
3786 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 ------------------------------------------------------------------------*/
3789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3790 {
3791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3792 "WDI API call before module is initialized - Fail request");
3793
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 }
3796
3797 /*------------------------------------------------------------------------
3798 Fill in Event data and post to the Main FSM
3799 ------------------------------------------------------------------------*/
3800 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003801 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3802 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3803 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 wdiEventData.pUserData = pUserData;
3805
3806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3807
3808}/*WDI_EnterBmpsReq*/
3809
3810/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 request the device to get out of BMPS power state. Upon
3813 the call of this API the WLAN DAL will pack and send a
3814 HAL Exit BMPS request message to the lower RIVA
3815 sub-system if DAL is in state STARTED.
3816
3817 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003819
3820 WDI_PostAssocReq must have been called.
3821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 wdiExitBmpsRspCb: callback for passing back the response
3826 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003829 callback
3830
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 @see WDI_PostAssocReq
3832 @return Result of the function call
3833*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003834WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003835WDI_ExitBmpsReq
3836(
3837 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3838 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3839 void* pUserData
3840)
3841{
3842 WDI_EventInfoType wdiEventData;
3843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3844
3845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 ------------------------------------------------------------------------*/
3848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3849 {
3850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3851 "WDI API call before module is initialized - Fail request");
3852
Jeff Johnsone7245742012-09-05 17:12:55 -07003853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 }
3855
3856 /*------------------------------------------------------------------------
3857 Fill in Event data and post to the Main FSM
3858 ------------------------------------------------------------------------*/
3859 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3861 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3862 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003863 wdiEventData.pUserData = pUserData;
3864
3865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3866
3867}/*WDI_ExitBmpsReq*/
3868
3869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 request the device to get into UAPSD power state. Upon
3872 the call of this API the WLAN DAL will pack and send a
3873 HAL Enter UAPSD request message to the lower RIVA
3874 sub-system if DAL is in state STARTED.
3875
3876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003878
3879 WDI_PostAssocReq must have been called.
3880 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
3882 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 wdiEnterUapsdRspCb: callback for passing back the
3886 response of the Enter UAPSD operation received from the
3887 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 callback
3891
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3893 @return Result of the function call
3894*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003895WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003896WDI_EnterUapsdReq
3897(
3898 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3899 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3900 void* pUserData
3901)
3902{
3903 WDI_EventInfoType wdiEventData;
3904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3905
3906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 ------------------------------------------------------------------------*/
3909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3910 {
3911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3912 "WDI API call before module is initialized - Fail request");
3913
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 }
3916
3917 /*------------------------------------------------------------------------
3918 Fill in Event data and post to the Main FSM
3919 ------------------------------------------------------------------------*/
3920 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3922 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3923 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 wdiEventData.pUserData = pUserData;
3925
3926 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3927
3928}/*WDI_EnterUapsdReq*/
3929
3930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 request the device to get out of UAPSD power state. Upon
3933 the call of this API the WLAN DAL will send a HAL Exit
3934 UAPSD request message to the lower RIVA sub-system if
3935 DAL is in state STARTED.
3936
3937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003939
3940 WDI_PostAssocReq must have been called.
3941
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 response of the Exit UAPSD operation received from the
3944 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 callback
3948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 @see WDI_PostAssocReq
3950 @return Result of the function call
3951*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003953WDI_ExitUapsdReq
3954(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003955 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3957 void* pUserData
3958)
3959{
3960 WDI_EventInfoType wdiEventData;
3961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3962
3963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003965 ------------------------------------------------------------------------*/
3966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3967 {
3968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3969 "WDI API call before module is initialized - Fail request");
3970
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 }
3973
3974 /*------------------------------------------------------------------------
3975 Fill in Event data and post to the Main FSM
3976 ------------------------------------------------------------------------*/
3977 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003978 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3979 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 wdiEventData.pUserData = pUserData;
3982
3983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3984
3985}/*WDI_ExitUapsdReq*/
3986
3987/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003988 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 MAC wants to set the UAPSD related configurations
3990 of an associated STA (while acting as an AP) to the WLAN
3991 Device. Upon the call of this API the WLAN DAL will pack
3992 and send a HAL Update UAPSD params request message to
3993 the lower RIVA sub-system if DAL is in state STARTED.
3994
3995 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003997
3998 WDI_ConfigBSSReq must have been called.
3999
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 wdiUpdateUapsdParamsCb: callback for passing back the
4004 response of the update UAPSD params operation received
4005 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 callback
4009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 @see WDI_ConfigBSSReq
4011 @return Result of the function call
4012*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004014WDI_UpdateUapsdParamsReq
4015(
4016 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4017 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4018 void* pUserData
4019)
4020{
4021 WDI_EventInfoType wdiEventData;
4022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4023
4024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 ------------------------------------------------------------------------*/
4027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4028 {
4029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4030 "WDI API call before module is initialized - Fail request");
4031
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 }
4034
4035 /*------------------------------------------------------------------------
4036 Fill in Event data and post to the Main FSM
4037 ------------------------------------------------------------------------*/
4038 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004039 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004040 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 wdiEventData.pUserData = pUserData;
4043
4044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4045
4046}/*WDI_UpdateUapsdParamsReq*/
4047
4048/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 MAC wants to set the UAPSD related configurations before
4051 requesting for enter UAPSD power state to the WLAN
4052 Device. Upon the call of this API the WLAN DAL will pack
4053 and send a HAL Set UAPSD params request message to
4054 the lower RIVA sub-system if DAL is in state STARTED.
4055
4056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004058
4059 WDI_PostAssocReq must have been called.
4060
4061 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4062 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 wdiSetUapsdAcParamsCb: callback for passing back the
4065 response of the set UAPSD params operation received from
4066 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 callback
4070
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 @see WDI_PostAssocReq
4072 @return Result of the function call
4073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004075WDI_SetUapsdAcParamsReq
4076(
4077 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4078 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4079 void* pUserData
4080)
4081{
4082 WDI_EventInfoType wdiEventData;
4083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4084
4085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 ------------------------------------------------------------------------*/
4088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4089 {
4090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4091 "WDI API call before module is initialized - Fail request");
4092
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 }
4095
4096 /*------------------------------------------------------------------------
4097 Fill in Event data and post to the Main FSM
4098 ------------------------------------------------------------------------*/
4099 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 wdiEventData.pEventData = pwdiUapsdInfo;
4101 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4102 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wdiEventData.pUserData = pUserData;
4104
4105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4106
4107}/*WDI_SetUapsdAcParamsReq*/
4108
4109/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 MAC wants to set/reset the RXP filters for received pkts
4112 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4113 and send a HAL configure RXP filter request message to
4114 the lower RIVA sub-system.
4115
4116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004118
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
4120 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 filter as specified by the Device
4122 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 wdiConfigureRxpFilterCb: callback for passing back the
4125 response of the configure RXP filter operation received
4126 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 callback
4130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 @return Result of the function call
4132*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004133WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004134WDI_ConfigureRxpFilterReq
4135(
4136 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4137 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4138 void* pUserData
4139)
4140{
4141 WDI_EventInfoType wdiEventData;
4142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4143
4144 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 ------------------------------------------------------------------------*/
4147 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4148 {
4149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4150 "WDI API call before module is initialized - Fail request");
4151
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004153 }
4154
4155 /*------------------------------------------------------------------------
4156 Fill in Event data and post to the Main FSM
4157 ------------------------------------------------------------------------*/
4158 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004159 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4160 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4161 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004162 wdiEventData.pUserData = pUserData;
4163
4164 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4165}/*WDI_ConfigureRxpFilterReq*/
4166
4167/**
4168 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4169 wants to set the beacon filters while in power save.
4170 Upon the call of this API the WLAN DAL will pack and
4171 send a Beacon filter request message to the
4172 lower RIVA sub-system.
4173
4174 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004175 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004176
Jeff Johnsone7245742012-09-05 17:12:55 -07004177
4178 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 filter as specified by the Device
4180 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004181
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 wdiBeaconFilterCb: callback for passing back the
4183 response of the set beacon filter operation received
4184 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004185
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 callback
4188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 @return Result of the function call
4190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004192WDI_SetBeaconFilterReq
4193(
4194 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4195 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4196 void* pUserData
4197)
4198{
4199 WDI_EventInfoType wdiEventData;
4200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4201
4202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004204 ------------------------------------------------------------------------*/
4205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4206 {
4207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4208 "WDI API call before module is initialized - Fail request");
4209
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 }
4212
4213 /*------------------------------------------------------------------------
4214 Fill in Event data and post to the Main FSM
4215 ------------------------------------------------------------------------*/
4216 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004218 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 wdiEventData.pUserData = pUserData;
4221
4222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4223}/*WDI_SetBeaconFilterReq*/
4224
4225/**
4226 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4227 wants to remove the beacon filter for particular IE
4228 while in power save. Upon the call of this API the WLAN
4229 DAL will pack and send a remove Beacon filter request
4230 message to the lower RIVA sub-system.
4231
4232 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004233 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004234
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
4236 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 filter as specified by the Device
4238 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 wdiBeaconFilterCb: callback for passing back the
4241 response of the remove beacon filter operation received
4242 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 callback
4246
Jeff Johnson295189b2012-06-20 16:38:30 -07004247 @return Result of the function call
4248*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004249WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004250WDI_RemBeaconFilterReq
4251(
4252 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4253 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4254 void* pUserData
4255)
4256{
4257 WDI_EventInfoType wdiEventData;
4258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4259
4260 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 ------------------------------------------------------------------------*/
4263 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4264 {
4265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4266 "WDI API call before module is initialized - Fail request");
4267
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004269 }
4270
4271 /*------------------------------------------------------------------------
4272 Fill in Event data and post to the Main FSM
4273 ------------------------------------------------------------------------*/
4274 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004276 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004278 wdiEventData.pUserData = pUserData;
4279
4280 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4281}/*WDI_RemBeaconFilterReq*/
4282
4283/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 MAC wants to set the RSSI thresholds related
4286 configurations while in power save. Upon the call of
4287 this API the WLAN DAL will pack and send a HAL Set RSSI
4288 thresholds request message to the lower RIVA
4289 sub-system if DAL is in state STARTED.
4290
4291 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004292 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004293
4294 WDI_PostAssocReq must have been called.
4295
4296 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4297 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004298
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 wdiSetUapsdAcParamsCb: callback for passing back the
4300 response of the set UAPSD params operation received from
4301 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004302
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004304 callback
4305
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 @see WDI_PostAssocReq
4307 @return Result of the function call
4308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004310WDI_SetRSSIThresholdsReq
4311(
4312 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4313 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4314 void* pUserData
4315)
4316{
4317 WDI_EventInfoType wdiEventData;
4318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4319
4320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 ------------------------------------------------------------------------*/
4323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4324 {
4325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4326 "WDI API call before module is initialized - Fail request");
4327
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 }
4330
4331 /*------------------------------------------------------------------------
4332 Fill in Event data and post to the Main FSM
4333 ------------------------------------------------------------------------*/
4334 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004336 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 wdiEventData.pUserData = pUserData;
4339
4340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4341}/* WDI_SetRSSIThresholdsReq*/
4342
4343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 wants to set the filter to minimize unnecessary host
4346 wakeup due to broadcast traffic while in power save.
4347 Upon the call of this API the WLAN DAL will pack and
4348 send a HAL host offload request message to the
4349 lower RIVA sub-system if DAL is in state STARTED.
4350
4351 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004352 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004353
4354 WDI_PostAssocReq must have been called.
4355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004358
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 wdiHostOffloadCb: callback for passing back the response
4360 of the host offload operation received from the
4361 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 callback
4365
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 @see WDI_PostAssocReq
4367 @return Result of the function call
4368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004370WDI_HostOffloadReq
4371(
4372 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4373 WDI_HostOffloadCb wdiHostOffloadCb,
4374 void* pUserData
4375)
4376{
4377 WDI_EventInfoType wdiEventData;
4378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4379
4380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 ------------------------------------------------------------------------*/
4383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4384 {
4385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4386 "WDI API call before module is initialized - Fail request");
4387
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 }
4390
4391 /*------------------------------------------------------------------------
4392 Fill in Event data and post to the Main FSM
4393 ------------------------------------------------------------------------*/
4394 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004396 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004397 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 wdiEventData.pUserData = pUserData;
4399
4400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4401}/*WDI_HostOffloadReq*/
4402
4403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 @brief WDI_KeepAliveReq will be called when the upper MAC
4405 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 and minimize unnecessary host wakeups due to while in power save.
4407 Upon the call of this API the WLAN DAL will pack and
4408 send a HAL Keep Alive request message to the
4409 lower RIVA sub-system if DAL is in state STARTED.
4410
4411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004413
4414 WDI_PostAssocReq must have been called.
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 wdiKeepAliveCb: callback for passing back the response
4420 of the Keep Alive operation received from the
4421 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 callback
4425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 @see WDI_PostAssocReq
4427 @return Result of the function call
4428*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004429WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004430WDI_KeepAliveReq
4431(
4432 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4433 WDI_KeepAliveCb wdiKeepAliveCb,
4434 void* pUserData
4435)
4436{
4437 WDI_EventInfoType wdiEventData;
4438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4439
4440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004441 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 ------------------------------------------------------------------------*/
4443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4444 {
4445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4446 "WDI_KeepAliveReq: WDI API call before module "
4447 "is initialized - Fail request");
4448
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 }
4451
4452 /*------------------------------------------------------------------------
4453 Fill in Event data and post to the Main FSM
4454 ------------------------------------------------------------------------*/
4455 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 wdiEventData.pEventData = pwdiKeepAliveParams;
4457 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4458 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 wdiEventData.pUserData = pUserData;
4460
4461 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4462}/*WDI_KeepAliveReq*/
4463
4464/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004465 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 wants to set the Wowl Bcast ptrn to minimize unnecessary
4467 host wakeup due to broadcast traffic while in power
4468 save. Upon the call of this API the WLAN DAL will pack
4469 and send a HAL Wowl Bcast ptrn request message to the
4470 lower RIVA sub-system if DAL is in state STARTED.
4471
4472 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004474
4475 WDI_PostAssocReq must have been called.
4476
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004479
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wdiWowlAddBcPtrnCb: callback for passing back the
4481 response of the add Wowl bcast ptrn operation received
4482 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 callback
4486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 @see WDI_PostAssocReq
4488 @return Result of the function call
4489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004491WDI_WowlAddBcPtrnReq
4492(
4493 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4494 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4495 void* pUserData
4496)
4497{
4498 WDI_EventInfoType wdiEventData;
4499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4500
4501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 ------------------------------------------------------------------------*/
4504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4505 {
4506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4507 "WDI API call before module is initialized - Fail request");
4508
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 }
4511
4512 /*------------------------------------------------------------------------
4513 Fill in Event data and post to the Main FSM
4514 ------------------------------------------------------------------------*/
4515 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004517 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 wdiEventData.pUserData = pUserData;
4520
4521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4522}/*WDI_WowlAddBcPtrnReq*/
4523
4524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wants to clear the Wowl Bcast ptrn. Upon the call of
4527 this API the WLAN DAL will pack and send a HAL delete
4528 Wowl Bcast ptrn request message to the lower RIVA
4529 sub-system if DAL is in state STARTED.
4530
4531 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004532 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004533
4534 WDI_WowlAddBcPtrnReq must have been called.
4535
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004538
Jeff Johnson295189b2012-06-20 16:38:30 -07004539 wdiWowlDelBcPtrnCb: callback for passing back the
4540 response of the del Wowl bcast ptrn operation received
4541 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004542
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 callback
4545
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 @see WDI_WowlAddBcPtrnReq
4547 @return Result of the function call
4548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004550WDI_WowlDelBcPtrnReq
4551(
4552 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4553 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4554 void* pUserData
4555)
4556{
4557 WDI_EventInfoType wdiEventData;
4558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4559
4560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004562 ------------------------------------------------------------------------*/
4563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4564 {
4565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4566 "WDI API call before module is initialized - Fail request");
4567
Jeff Johnsone7245742012-09-05 17:12:55 -07004568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004569 }
4570
4571 /*------------------------------------------------------------------------
4572 Fill in Event data and post to the Main FSM
4573 ------------------------------------------------------------------------*/
4574 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004576 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 wdiEventData.pUserData = pUserData;
4579
4580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4581}/*WDI_WowlDelBcPtrnReq*/
4582
4583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 wants to enter the Wowl state to minimize unnecessary
4586 host wakeup while in power save. Upon the call of this
4587 API the WLAN DAL will pack and send a HAL Wowl enter
4588 request message to the lower RIVA sub-system if DAL is
4589 in state STARTED.
4590
4591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004593
4594 WDI_PostAssocReq must have been called.
4595
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004598
Jeff Johnson295189b2012-06-20 16:38:30 -07004599 wdiWowlEnterReqCb: callback for passing back the
4600 response of the enter Wowl operation received from the
4601 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004602
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004604 callback
4605
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 @see WDI_PostAssocReq
4607 @return Result of the function call
4608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004610WDI_WowlEnterReq
4611(
4612 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4613 WDI_WowlEnterReqCb wdiWowlEnterCb,
4614 void* pUserData
4615)
4616{
4617 WDI_EventInfoType wdiEventData;
4618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4619
4620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 ------------------------------------------------------------------------*/
4623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4624 {
4625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4626 "WDI API call before module is initialized - Fail request");
4627
Jeff Johnsone7245742012-09-05 17:12:55 -07004628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 }
4630
4631 /*------------------------------------------------------------------------
4632 Fill in Event data and post to the Main FSM
4633 ------------------------------------------------------------------------*/
4634 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004635 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004636 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wdiEventData.pUserData = pUserData;
4639
4640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4641}/*WDI_WowlEnterReq*/
4642
4643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 wants to exit the Wowl state. Upon the call of this API
4646 the WLAN DAL will pack and send a HAL Wowl exit request
4647 message to the lower RIVA sub-system if DAL is in state
4648 STARTED.
4649
4650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004652
4653 WDI_WowlEnterReq must have been called.
4654
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 wdiWowlExitReqCb: callback for passing back the response
4659 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004660
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 callback
4663
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 @see WDI_WowlEnterReq
4665 @return Result of the function call
4666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004668WDI_WowlExitReq
4669(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004670 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 WDI_WowlExitReqCb wdiWowlExitCb,
4672 void* pUserData
4673)
4674{
4675 WDI_EventInfoType wdiEventData;
4676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4677
4678 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004679 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 ------------------------------------------------------------------------*/
4681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4682 {
4683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4684 "WDI API call before module is initialized - Fail request");
4685
Jeff Johnsone7245742012-09-05 17:12:55 -07004686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004687 }
4688
4689 /*------------------------------------------------------------------------
4690 Fill in Event data and post to the Main FSM
4691 ------------------------------------------------------------------------*/
4692 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004693 wdiEventData.pEventData = pwdiWowlExitParams;
4694 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004696 wdiEventData.pUserData = pUserData;
4697
4698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4699}/*WDI_WowlExitReq*/
4700
4701/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004702 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 the upper MAC wants to dynamically adjusts the listen
4704 interval based on the WLAN/MSM activity. Upon the call
4705 of this API the WLAN DAL will pack and send a HAL
4706 configure Apps Cpu Wakeup State request message to the
4707 lower RIVA sub-system.
4708
4709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004711
Jeff Johnsone7245742012-09-05 17:12:55 -07004712
4713 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004714 Apps Cpu Wakeup State as specified by the
4715 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004716
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4718 back the response of the configure Apps Cpu Wakeup State
4719 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004720
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 callback
4723
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 @return Result of the function call
4725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004727WDI_ConfigureAppsCpuWakeupStateReq
4728(
4729 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4730 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4731 void* pUserData
4732)
4733{
4734 WDI_EventInfoType wdiEventData;
4735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4736
4737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 ------------------------------------------------------------------------*/
4740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4741 {
4742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4743 "WDI API call before module is initialized - Fail request");
4744
Jeff Johnsone7245742012-09-05 17:12:55 -07004745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004746 }
4747
4748 /*------------------------------------------------------------------------
4749 Fill in Event data and post to the Main FSM
4750 ------------------------------------------------------------------------*/
4751 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4753 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4754 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004755 wdiEventData.pUserData = pUserData;
4756
4757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4758}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4759/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 to to perform a flush operation on a given AC. Upon the
4762 call of this API the WLAN DAL will pack and send a HAL
4763 Flush AC request message to the lower RIVA sub-system if
4764 DAL is in state STARTED.
4765
4766 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004767 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004768
4769 WDI_AddBAReq must have been called.
4770
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004772 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004773
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 wdiFlushAcRspCb: callback for passing back the response
4775 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004776
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004778 callback
4779
Jeff Johnson295189b2012-06-20 16:38:30 -07004780 @see WDI_AddBAReq
4781 @return Result of the function call
4782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004784WDI_FlushAcReq
4785(
4786 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4787 WDI_FlushAcRspCb wdiFlushAcRspCb,
4788 void* pUserData
4789)
4790{
4791 WDI_EventInfoType wdiEventData;
4792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4793
4794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 ------------------------------------------------------------------------*/
4797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4798 {
4799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4800 "WDI API call before module is initialized - Fail request");
4801
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 }
4804
4805 /*------------------------------------------------------------------------
4806 Fill in Event data and post to the Main FSM
4807 ------------------------------------------------------------------------*/
4808 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 wdiEventData.pEventData = pwdiFlushAcReqParams;
4810 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4811 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 wdiEventData.pUserData = pUserData;
4813
4814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4815
4816}/*WDI_FlushAcReq*/
4817
4818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 wants to notify the lower mac on a BT AMP event. This is
4821 to inform BTC-SLM that some BT AMP event occurred. Upon
4822 the call of this API the WLAN DAL will pack and send a
4823 HAL BT AMP event request message to the lower RIVA
4824 sub-system if DAL is in state STARTED.
4825
4826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004828
Jeff Johnsone7245742012-09-05 17:12:55 -07004829
4830 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004832
Jeff Johnson295189b2012-06-20 16:38:30 -07004833 wdiBtAmpEventRspCb: callback for passing back the
4834 response of the BT AMP event operation received from the
4835 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004836
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 callback
4839
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 @return Result of the function call
4841*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004842WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004843WDI_BtAmpEventReq
4844(
4845 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4846 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4847 void* pUserData
4848)
4849{
4850 WDI_EventInfoType wdiEventData;
4851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4852
4853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 ------------------------------------------------------------------------*/
4856 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4857 {
4858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4859 "WDI API call before module is initialized - Fail request");
4860
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 }
4863
4864 /*------------------------------------------------------------------------
4865 Fill in Event data and post to the Main FSM
4866 ------------------------------------------------------------------------*/
4867 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4869 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4870 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004871 wdiEventData.pUserData = pUserData;
4872
4873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4874
4875}/*WDI_BtAmpEventReq*/
4876
Jeff Johnsone7245742012-09-05 17:12:55 -07004877#ifdef FEATURE_OEM_DATA_SUPPORT
4878/**
4879 @brief WDI_Start Oem Data Req will be called when the upper MAC
4880 wants to notify the lower mac on a oem data Req event.Upon
4881 the call of this API the WLAN DAL will pack and send a
4882 HAL OEM Data Req event request message to the lower RIVA
4883 sub-system if DAL is in state STARTED.
4884
4885 In state BUSY this request will be queued. Request won't
4886 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004887
4888
Jeff Johnsone7245742012-09-05 17:12:55 -07004889
4890 @param pwdiOemDataReqParams: the Oem Data Req as
4891 specified by the Device Interface
4892
4893 wdiStartOemDataRspCb: callback for passing back the
4894 response of the Oem Data Req received from the
4895 device
4896
4897 pUserData: user data will be passed back with the
4898 callback
4899
4900 @return Result of the function call
4901*/
4902WDI_Status
4903WDI_StartOemDataReq
4904(
4905 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4906 WDI_oemDataRspCb wdiOemDataRspCb,
4907 void* pUserData
4908)
4909{
4910 WDI_EventInfoType wdiEventData;
4911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4912
4913 /*------------------------------------------------------------------------
4914 Sanity Check
4915 ------------------------------------------------------------------------*/
4916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4917 {
4918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4919 "WDI API call before module is initialized - Fail request");
4920
4921 return WDI_STATUS_E_NOT_ALLOWED;
4922 }
4923
4924 /*------------------------------------------------------------------------
4925 Fill in Event data and post to the Main FSM
4926 ------------------------------------------------------------------------*/
4927 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4928 wdiEventData.pEventData = pwdiOemDataReqParams;
4929 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4930 wdiEventData.pCBfnc = wdiOemDataRspCb;
4931 wdiEventData.pUserData = pUserData;
4932
4933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4934
4935
4936}
4937
4938#endif
4939
4940
4941/*========================================================================
4942
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004944
Jeff Johnson295189b2012-06-20 16:38:30 -07004945==========================================================================*/
4946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 the WLAN HW to change the current channel of operation.
4949 Upon the call of this API the WLAN DAL will pack and
4950 send a HAL Start request message to the lower RIVA
4951 sub-system if DAL is in state STARTED.
4952
4953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004955
4956 WDI_Start must have been called.
4957
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004960
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 wdiSwitchChRspCb: callback for passing back the response
4962 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004963
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 callback
4966
Jeff Johnson295189b2012-06-20 16:38:30 -07004967 @see WDI_Start
4968 @return Result of the function call
4969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004971WDI_SwitchChReq
4972(
4973 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4974 WDI_SwitchChRspCb wdiSwitchChRspCb,
4975 void* pUserData
4976)
4977{
4978 WDI_EventInfoType wdiEventData;
4979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4980
4981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 ------------------------------------------------------------------------*/
4984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4985 {
4986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4987 "WDI API call before module is initialized - Fail request");
4988
Jeff Johnsone7245742012-09-05 17:12:55 -07004989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004990 }
4991
4992 /*------------------------------------------------------------------------
4993 Fill in Event data and post to the Main FSM
4994 ------------------------------------------------------------------------*/
4995 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004996 wdiEventData.pEventData = pwdiSwitchChReqParams;
4997 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4998 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 wdiEventData.pUserData = pUserData;
5000
5001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5002
5003}/*WDI_SwitchChReq*/
5004
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005005/**
5006 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5007 the WLAN HW to change the current channel of operation.
5008 Upon the call of this API the WLAN DAL will pack and
5009 send a HAL Start request message to the lower RIVA
5010 sub-system if DAL is in state STARTED.
5011 This request message also includes source of channel switch,
5012 like CSA,
5013
5014 In state BUSY this request will be queued. Request won't
5015 be allowed in any other state.
5016
5017 WDI_Start must have been called.
5018
5019 @param wdiSwitchChReqParams: the switch ch parameters as
5020 specified by the Device Interface
5021
5022 wdiSwitchChRspCb: callback for passing back the response
5023 of the switch ch operation received from the device
5024
5025 pUserData: user data will be passed back with the
5026 callback
5027
5028 @see WDI_Start
5029 @return Result of the function call
5030*/
5031WDI_Status
5032WDI_SwitchChReq_V1
5033(
5034 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5035 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5036 void* pUserData
5037)
5038{
5039 WDI_EventInfoType wdiEventData;
5040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5042 "WDI API call WDI_SwitchChReq_V1");
5043 /*------------------------------------------------------------------------
5044 Sanity Check
5045 ------------------------------------------------------------------------*/
5046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5047 {
5048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5049 "WDI API call before module is initialized - Fail request");
5050
5051 return WDI_STATUS_E_NOT_ALLOWED;
5052 }
5053
5054 /*------------------------------------------------------------------------
5055 Fill in Event data and post to the Main FSM
5056 ------------------------------------------------------------------------*/
5057 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5058 wdiEventData.pEventData = pwdiSwitchChReqParams;
5059 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5060 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5061 wdiEventData.pUserData = pUserData;
5062
5063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5064
5065}/*WDI_SwitchChReq_V1*/
5066
Jeff Johnson295189b2012-06-20 16:38:30 -07005067
5068/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005069 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005070 wishes to add or update a STA in HW. Upon the call of
5071 this API the WLAN DAL will pack and send a HAL Start
5072 message request message to the lower RIVA sub-system if
5073 DAL is in state STARTED.
5074
5075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005077
5078 WDI_Start must have been called.
5079
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 wdiConfigSTARspCb: callback for passing back the
5084 response of the config STA operation received from the
5085 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005086
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005088 callback
5089
Jeff Johnson295189b2012-06-20 16:38:30 -07005090 @see WDI_Start
5091 @return Result of the function call
5092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005094WDI_ConfigSTAReq
5095(
5096 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5097 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5098 void* pUserData
5099)
5100{
5101 WDI_EventInfoType wdiEventData;
5102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5103
5104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005106 ------------------------------------------------------------------------*/
5107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5108 {
5109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5110 "WDI API call before module is initialized - Fail request");
5111
Jeff Johnsone7245742012-09-05 17:12:55 -07005112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005113 }
5114
5115 /*------------------------------------------------------------------------
5116 Fill in Event data and post to the Main FSM
5117 ------------------------------------------------------------------------*/
5118 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005119 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5120 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5121 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 wdiEventData.pUserData = pUserData;
5123
5124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5125
5126}/*WDI_ConfigSTAReq*/
5127
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005128 /**
5129 @brief WDI_UpdateChannelReq will be called when the upper MAC
5130 wants to update the channel list on change in country code.
5131
5132 In state BUSY this request will be queued. Request won't
5133 be allowed in any other state.
5134
5135 WDI_UpdateChannelReq must have been called.
5136
5137 @param wdiUpdateChannelReqParams: the updated channel parameters
5138 as specified by the Device Interface
5139
5140 wdiUpdateChannelRspCb: callback for passing back the
5141 response of the update channel operation received from
5142 the device
5143
5144 pUserData: user data will be passed back with the
5145 callback
5146
5147 @return Result of the function call
5148*/
5149WDI_Status
5150WDI_UpdateChannelReq
5151(
5152 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5153 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5154 void* pUserData
5155)
5156{
5157 WDI_EventInfoType wdiEventData = {{0}};
5158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5159
5160 /*------------------------------------------------------------------------
5161 Sanity Check
5162 ------------------------------------------------------------------------*/
5163 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5164 {
5165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5166 "WDI API call before module is initialized - Fail request");
5167
5168 return WDI_STATUS_E_NOT_ALLOWED;
5169 }
5170
5171 /*------------------------------------------------------------------------
5172 Fill in Event data and post to the Main FSM
5173 ------------------------------------------------------------------------*/
5174 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5175 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5176 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5177 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5178 wdiEventData.pUserData = pUserData;
5179
5180 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5181
5182}/*WDI_UpdateChannelReq*/
5183
Jeff Johnson295189b2012-06-20 16:38:30 -07005184/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005185 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005186 wants to change the state of an ongoing link. Upon the
5187 call of this API the WLAN DAL will pack and send a HAL
5188 Start message request message to the lower RIVA
5189 sub-system if DAL is in state STARTED.
5190
5191 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005192 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005193
5194 WDI_JoinStartReq must have been called.
5195
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005198
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 wdiSetLinkStateRspCb: callback for passing back the
5200 response of the set link state operation received from
5201 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 callback
5205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 @see WDI_JoinStartReq
5207 @return Result of the function call
5208*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005209WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005210WDI_SetLinkStateReq
5211(
5212 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5213 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5214 void* pUserData
5215)
5216{
5217 WDI_EventInfoType wdiEventData;
5218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5219
5220 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005221 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 ------------------------------------------------------------------------*/
5223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5224 {
5225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5226 "WDI API call before module is initialized - Fail request");
5227
Jeff Johnsone7245742012-09-05 17:12:55 -07005228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 }
5230
5231 /*------------------------------------------------------------------------
5232 Fill in Event data and post to the Main FSM
5233 ------------------------------------------------------------------------*/
5234 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005235 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5236 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5237 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005238 wdiEventData.pUserData = pUserData;
5239
5240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5241
5242}/*WDI_SetLinkStateReq*/
5243
5244
5245/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 to get statistics (MIB counters) from the device. Upon
5248 the call of this API the WLAN DAL will pack and send a
5249 HAL Start request message to the lower RIVA sub-system
5250 if DAL is in state STARTED.
5251
5252 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005254
5255 WDI_Start must have been called.
5256
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005259
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 wdiGetStatsRspCb: callback for passing back the response
5261 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 callback
5265
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 @see WDI_Start
5267 @return Result of the function call
5268*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005269WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005270WDI_GetStatsReq
5271(
5272 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5273 WDI_GetStatsRspCb wdiGetStatsRspCb,
5274 void* pUserData
5275)
5276{
5277 WDI_EventInfoType wdiEventData;
5278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5279
5280 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 ------------------------------------------------------------------------*/
5283 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5284 {
5285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5286 "WDI API call before module is initialized - Fail request");
5287
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 }
5290
5291 /*------------------------------------------------------------------------
5292 Fill in Event data and post to the Main FSM
5293 ------------------------------------------------------------------------*/
5294 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005295 wdiEventData.pEventData = pwdiGetStatsReqParams;
5296 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5297 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 wdiEventData.pUserData = pUserData;
5299
5300 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5301
5302}/*WDI_GetStatsReq*/
5303
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005304#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005305/**
5306 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5307 to get roam rssi from the device. Upon
5308 the call of this API the WLAN DAL will pack and send a
5309 HAL Start request message to the lower RIVA sub-system
5310 if DAL is in state STARTED.
5311
5312 In state BUSY this request will be queued. Request won't
5313 be allowed in any other state.
5314
5315 WDI_Start must have been called.
5316
5317 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5318 specified by the Device Interface
5319
5320 wdiGetRoamRssiRspCb: callback for passing back the response
5321 of the get stats operation received from the device
5322
5323 pUserData: user data will be passed back with the
5324 callback
5325
5326 @see WDI_Start
5327 @return Result of the function call
5328*/
5329WDI_Status
5330WDI_GetRoamRssiReq
5331(
5332 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5333 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5334 void* pUserData
5335)
5336{
5337 WDI_EventInfoType wdiEventData;
5338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5339
5340 /*------------------------------------------------------------------------
5341 Sanity Check
5342 ------------------------------------------------------------------------*/
5343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5344 {
5345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5346 "WDI API call before module is initialized - Fail request");
5347
5348 return WDI_STATUS_E_NOT_ALLOWED;
5349 }
5350 /*------------------------------------------------------------------------
5351 Fill in Event data and post to the Main FSM
5352 ------------------------------------------------------------------------*/
5353 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5354 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5355 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5356 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5357 wdiEventData.pUserData = pUserData;
5358
5359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5360
5361}/*WDI_GetRoamRssiReq*/
5362#endif
5363
Jeff Johnson295189b2012-06-20 16:38:30 -07005364
5365/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 it wishes to change the configuration of the WLAN
5368 Device. Upon the call of this API the WLAN DAL will pack
5369 and send a HAL Update CFG request message to the lower
5370 RIVA sub-system if DAL is in state STARTED.
5371
5372 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005373 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005374
5375 WDI_Start must have been called.
5376
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005379
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 wdiUpdateCfgsRspCb: callback for passing back the
5381 response of the update cfg operation received from the
5382 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005383
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 callback
5386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 @see WDI_Start
5388 @return Result of the function call
5389*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005390WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005391WDI_UpdateCfgReq
5392(
5393 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5394 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5395 void* pUserData
5396)
5397{
5398 WDI_EventInfoType wdiEventData;
5399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5400
5401 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 ------------------------------------------------------------------------*/
5404 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5405 {
5406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5407 "WDI API call before module is initialized - Fail request");
5408
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 }
5411
5412 /*------------------------------------------------------------------------
5413 Fill in Event data and post to the Main FSM
5414 ------------------------------------------------------------------------*/
5415 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5417 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5418 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 wdiEventData.pUserData = pUserData;
5420
5421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5422
5423}/*WDI_UpdateCfgReq*/
5424
5425
5426
5427/**
5428 @brief WDI_AddBAReq will be called when the upper MAC has setup
5429 successfully a BA session and needs to notify the HW for
5430 the appropriate settings to take place. Upon the call of
5431 this API the WLAN DAL will pack and send a HAL Add BA
5432 request message to the lower RIVA sub-system if DAL is
5433 in state STARTED.
5434
5435 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005436 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005437
5438 WDI_PostAssocReq must have been called.
5439
5440 @param wdiAddBAReqParams: the add BA parameters as specified by
5441 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005442
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 wdiAddBARspCb: callback for passing back the response of
5444 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005445
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005447 callback
5448
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 @see WDI_PostAssocReq
5450 @return Result of the function call
5451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005453WDI_AddBAReq
5454(
5455 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5456 WDI_AddBARspCb wdiAddBARspCb,
5457 void* pUserData
5458)
5459{
5460 WDI_EventInfoType wdiEventData;
5461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5462
5463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 ------------------------------------------------------------------------*/
5466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5467 {
5468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5469 "WDI API call before module is initialized - Fail request");
5470
Jeff Johnsone7245742012-09-05 17:12:55 -07005471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 }
5473
5474 /*------------------------------------------------------------------------
5475 Fill in Event data and post to the Main FSM
5476 ------------------------------------------------------------------------*/
5477 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005478 wdiEventData.pEventData = pwdiAddBAReqParams;
5479 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5480 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 wdiEventData.pUserData = pUserData;
5482
5483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5484
5485}/*WDI_AddBAReq*/
5486
5487
5488/**
5489 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5490 successfully a BA session and needs to notify the HW for
5491 the appropriate settings to take place. Upon the call of
5492 this API the WLAN DAL will pack and send a HAL Add BA
5493 request message to the lower RIVA sub-system if DAL is
5494 in state STARTED.
5495
5496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005498
5499 WDI_PostAssocReq must have been called.
5500
5501 @param wdiAddBAReqParams: the add BA parameters as specified by
5502 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 wdiAddBARspCb: callback for passing back the response of
5505 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005508 callback
5509
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 @see WDI_PostAssocReq
5511 @return Result of the function call
5512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005514WDI_TriggerBAReq
5515(
5516 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5517 WDI_TriggerBARspCb wdiTriggerBARspCb,
5518 void* pUserData
5519)
5520{
5521 WDI_EventInfoType wdiEventData;
5522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5523
5524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 ------------------------------------------------------------------------*/
5527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5528 {
5529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5530 "WDI API call before module is initialized - Fail request");
5531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 }
5534
5535 /*------------------------------------------------------------------------
5536 Fill in Event data and post to the Main FSM
5537 ------------------------------------------------------------------------*/
5538 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5540 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5541 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 wdiEventData.pUserData = pUserData;
5543
5544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5545
5546}/*WDI_AddBAReq*/
5547
5548/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 wishes to update any of the Beacon parameters used by HW.
5551 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5552 message to the lower RIVA sub-system if DAL is in state
5553 STARTED.
5554
5555 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005557
5558 WDI_PostAssocReq must have been called.
5559
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005561 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005562
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 wdiUpdateBeaconParamsRspCb: callback for passing back the
5564 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005567 callback
5568
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 @see WDI_PostAssocReq
5570 @return Result of the function call
5571*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005572WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005573WDI_UpdateBeaconParamsReq
5574(
5575 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5576 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5577 void* pUserData
5578)
5579{
5580 WDI_EventInfoType wdiEventData;
5581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5582
5583 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 ------------------------------------------------------------------------*/
5586 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5587 {
5588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5589 "WDI API call before module is initialized - Fail request");
5590
Jeff Johnsone7245742012-09-05 17:12:55 -07005591 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005592 }
5593
5594 /*------------------------------------------------------------------------
5595 Fill in Event data and post to the Main FSM
5596 ------------------------------------------------------------------------*/
5597 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005598 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5599 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5600 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005601 wdiEventData.pUserData = pUserData;
5602
5603 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5604
5605}/*WDI_UpdateBeaconParamsReq*/
5606
5607/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005608 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005609 wishes to update the Beacon template used by HW.
5610 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5611 message to the lower RIVA sub-system if DAL is in state
5612 STARTED.
5613
5614 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005615 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005616
5617 WDI_PostAssocReq must have been called.
5618
Jeff Johnsone7245742012-09-05 17:12:55 -07005619 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005621
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 wdiSendBeaconParamsRspCb: callback for passing back the
5623 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 callback
5627
Jeff Johnson295189b2012-06-20 16:38:30 -07005628 @see WDI_PostAssocReq
5629 @return Result of the function call
5630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005632WDI_SendBeaconParamsReq
5633(
5634 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5635 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5636 void* pUserData
5637)
5638{
5639 WDI_EventInfoType wdiEventData;
5640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5641
5642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 ------------------------------------------------------------------------*/
5645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5646 {
5647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5648 "WDI API call before module is initialized - Fail request");
5649
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 }
5652
5653 /*------------------------------------------------------------------------
5654 Fill in Event data and post to the Main FSM
5655 ------------------------------------------------------------------------*/
5656 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 wdiEventData.pEventData = pwdiSendBeaconParams;
5658 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5659 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 wdiEventData.pUserData = pUserData;
5661
5662 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5663
5664}/*WDI_SendBeaconParamsReq*/
5665
5666/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005667 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005668 upper MAC wants to update the probe response template to
5669 be transmitted as Soft AP
5670 Upon the call of this API the WLAN DAL will
5671 pack and send the probe rsp template message to the
5672 lower RIVA sub-system if DAL is in state STARTED.
5673
5674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005676
5677
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005680
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 wdiSendBeaconParamsRspCb: callback for passing back the
5682 response of the Send Beacon Params operation received
5683 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005686 callback
5687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 @see WDI_AddBAReq
5689 @return Result of the function call
5690*/
5691
Jeff Johnsone7245742012-09-05 17:12:55 -07005692WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005693WDI_UpdateProbeRspTemplateReq
5694(
5695 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5696 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5697 void* pUserData
5698)
5699{
5700 WDI_EventInfoType wdiEventData;
5701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5702
5703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 ------------------------------------------------------------------------*/
5706 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5707 {
5708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5709 "WDI API call before module is initialized - Fail request");
5710
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005712 }
5713
5714 /*------------------------------------------------------------------------
5715 Fill in Event data and post to the Main FSM
5716 ------------------------------------------------------------------------*/
5717 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005718 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5719 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5720 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 wdiEventData.pUserData = pUserData;
5722
5723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5724
5725}/*WDI_UpdateProbeRspTemplateReq*/
5726
5727/**
5728 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5729 to the NV memory.
5730
5731
5732 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5733 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005734
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 wdiNvDownloadRspCb: callback for passing back the response of
5736 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005737
Jeff Johnson295189b2012-06-20 16:38:30 -07005738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 callback
5740
Jeff Johnson295189b2012-06-20 16:38:30 -07005741 @see WDI_PostAssocReq
5742 @return Result of the function call
5743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005745WDI_NvDownloadReq
5746(
5747 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5748 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5749 void* pUserData
5750)
5751{
5752 WDI_EventInfoType wdiEventData;
5753
5754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 ------------------------------------------------------------------------*/
5757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5758 {
5759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5760 "WDI API call before module is initialized - Fail request");
5761
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005763 }
5764
5765 /*------------------------------------------------------------------------
5766 Fill in Event data and post to the Main FSM
5767 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005768 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5769 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5770 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5771 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 wdiEventData.pUserData = pUserData;
5773
5774 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5775
5776}/*WDI_NVDownloadReq*/
5777
Jeff Johnson295189b2012-06-20 16:38:30 -07005778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005780 upper MAC wants to send Notice of Absence
5781 Upon the call of this API the WLAN DAL will
5782 pack and send the probe rsp template message to the
5783 lower RIVA sub-system if DAL is in state STARTED.
5784
5785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005787
5788
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005790 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005791
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 wdiSendBeaconParamsRspCb: callback for passing back the
5793 response of the Send Beacon Params operation received
5794 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005795
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 callback
5798
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 @see WDI_AddBAReq
5800 @return Result of the function call
5801*/
5802WDI_Status
5803WDI_SetP2PGONOAReq
5804(
5805 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5806 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5807 void* pUserData
5808)
5809{
5810 WDI_EventInfoType wdiEventData;
5811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5812
5813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 ------------------------------------------------------------------------*/
5816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5817 {
5818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5819 "WDI API call before module is initialized - Fail request");
5820
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 }
5823
5824 /*------------------------------------------------------------------------
5825 Fill in Event data and post to the Main FSM
5826 ------------------------------------------------------------------------*/
5827 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5829 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5830 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 wdiEventData.pUserData = pUserData;
5832
5833 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5834
5835}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005836
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305837#ifdef FEATURE_WLAN_TDLS
5838/**
5839 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5840 upper MAC wants to send TDLS Link Establish Request Parameters
5841 Upon the call of this API the WLAN DAL will
5842 pack and send the TDLS Link Establish Request message to the
5843 lower RIVA sub-system if DAL is in state STARTED.
5844
5845 In state BUSY this request will be queued. Request won't
5846 be allowed in any other state.
5847
5848
5849 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5850 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5851
5852 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5853 response of the TDLS Link Establish request received
5854 from the device
5855
5856 pUserData: user data will be passed back with the
5857 callback
5858
5859 @see
5860 @return Result of the function call
5861*/
5862WDI_Status
5863WDI_SetTDLSLinkEstablishReq
5864(
5865 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5866 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5867 void* pUserData
5868)
5869{
5870 WDI_EventInfoType wdiEventData;
5871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5872
5873 /*------------------------------------------------------------------------
5874 Sanity Check
5875 ------------------------------------------------------------------------*/
5876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5877 {
5878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5879 "WDI API call before module is initialized - Fail request");
5880
5881 return WDI_STATUS_E_NOT_ALLOWED;
5882 }
5883
5884 /*------------------------------------------------------------------------
5885 Fill in Event data and post to the Main FSM
5886 ------------------------------------------------------------------------*/
5887 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5888 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5889 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5890 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5891 wdiEventData.pUserData = pUserData;
5892
5893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5894
5895}/*WDI_SetTDLSLinkEstablishReq*/
5896#endif
5897
Jeff Johnson295189b2012-06-20 16:38:30 -07005898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 UMAC wanted to add STA self while opening any new session
5901 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005903
5904
Jeff Johnsone7245742012-09-05 17:12:55 -07005905 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 callback
5910
5911 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005912 @return Result of the function call
5913*/
5914WDI_Status
5915WDI_AddSTASelfReq
5916(
5917 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5918 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5919 void* pUserData
5920)
5921{
5922 WDI_EventInfoType wdiEventData;
5923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5924
5925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005927 ------------------------------------------------------------------------*/
5928 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5929 {
5930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5931 "WDI API call before module is initialized - Fail request");
5932
Jeff Johnsone7245742012-09-05 17:12:55 -07005933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 }
5935
5936 /*------------------------------------------------------------------------
5937 Fill in Event data and post to the Main FSM
5938 ------------------------------------------------------------------------*/
5939 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005940 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5941 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5942 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 wdiEventData.pUserData = pUserData;
5944
5945 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5946
5947}/*WDI_AddSTASelfReq*/
5948
5949
Jeff Johnsone7245742012-09-05 17:12:55 -07005950#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005951/**
5952 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5953 the device of a successful add TSpec negotiation. HW
5954 needs to receive the TSpec Info from the UMAC in order
5955 to configure properly the QoS data traffic. Upon the
5956 call of this API the WLAN DAL will pack and send a HAL
5957 Add TS request message to the lower RIVA sub-system if
5958 DAL is in state STARTED.
5959
5960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005962
5963 WDI_PostAssocReq must have been called.
5964
5965 @param wdiAddTsReqParams: the add TS parameters as specified by
5966 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005967
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 wdiAddTsRspCb: callback for passing back the response of
5969 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005970
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005972 callback
5973
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 @see WDI_PostAssocReq
5975 @return Result of the function call
5976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005978WDI_AggrAddTSReq
5979(
5980 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5981 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5982 void* pUserData
5983)
5984{
5985 WDI_EventInfoType wdiEventData;
5986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5987
5988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 ------------------------------------------------------------------------*/
5991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5992 {
5993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5994 "WDI API call before module is initialized - Fail request");
5995
Jeff Johnsone7245742012-09-05 17:12:55 -07005996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 }
5998
5999 /*------------------------------------------------------------------------
6000 Fill in Event data and post to the Main FSM
6001 ------------------------------------------------------------------------*/
6002 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006003 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6004 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6005 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006006 wdiEventData.pUserData = pUserData;
6007
6008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6009
6010}/*WDI_AggrAddTSReq*/
6011
6012#endif /* WLAN_FEATURE_VOWIFI_11R */
6013
Jeff Johnson295189b2012-06-20 16:38:30 -07006014/**
6015 @brief WDI_FTMCommandReq
6016 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006017
6018 @param ftmCommandReq: FTM Command Body
6019 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006021
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 @see
6023 @return Result of the function call
6024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006026WDI_FTMCommandReq
6027(
6028 WDI_FTMCommandReqType *ftmCommandReq,
6029 WDI_FTMCommandRspCb ftmCommandRspCb,
6030 void *pUserData
6031)
6032{
6033 WDI_EventInfoType wdiEventData;
6034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6035
6036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 ------------------------------------------------------------------------*/
6039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6040 {
6041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6042 "WDI API call before module is initialized - Fail request");
6043
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 }
6046
6047 /*------------------------------------------------------------------------
6048 Fill in Event data and post to the Main FSM
6049 ------------------------------------------------------------------------*/
6050 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6051 wdiEventData.pEventData = (void *)ftmCommandReq;
6052 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6053 wdiEventData.pCBfnc = ftmCommandRspCb;
6054 wdiEventData.pUserData = pUserData;
6055
6056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6057}
Jeff Johnson295189b2012-06-20 16:38:30 -07006058/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006059 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006060
6061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006063
6064
6065 @param pwdiResumeReqParams: as specified by
6066 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006067
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 wdiResumeReqRspCb: callback for passing back the response of
6069 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006070
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 callback
6073
6074 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 @return Result of the function call
6076*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006077WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006078WDI_HostResumeReq
6079(
6080 WDI_ResumeParamsType* pwdiResumeReqParams,
6081 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6082 void* pUserData
6083)
6084{
6085 WDI_EventInfoType wdiEventData;
6086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6087
6088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 ------------------------------------------------------------------------*/
6091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6092 {
6093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6094 "WDI API call before module is initialized - Fail request");
6095
Jeff Johnsone7245742012-09-05 17:12:55 -07006096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 }
6098
6099 /*------------------------------------------------------------------------
6100 Fill in Event data and post to the Main FSM
6101 ------------------------------------------------------------------------*/
6102 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006103 wdiEventData.pEventData = pwdiResumeReqParams;
6104 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6105 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006106 wdiEventData.pUserData = pUserData;
6107
6108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6109
6110}/*WDI_HostResumeReq*/
6111
6112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006114
6115 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006116 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006117
6118
6119 @param pwdiDelStaSelfReqParams: as specified by
6120 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006121
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 wdiDelStaSelfRspCb: callback for passing back the response of
6123 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006124
Jeff Johnson295189b2012-06-20 16:38:30 -07006125 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 callback
6127
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 @see WDI_PostAssocReq
6129 @return Result of the function call
6130*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006131WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006132WDI_DelSTASelfReq
6133(
6134 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6135 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6136 void* pUserData
6137)
6138{
6139 WDI_EventInfoType wdiEventData;
6140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6141
6142 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 ------------------------------------------------------------------------*/
6145 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6146 {
6147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6148 "WDI API call before module is initialized - Fail request");
6149
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 }
6152
6153 /*------------------------------------------------------------------------
6154 Fill in Event data and post to the Main FSM
6155 ------------------------------------------------------------------------*/
6156 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6158 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6159 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 wdiEventData.pUserData = pUserData;
6161
6162 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6163
6164}/*WDI_AggrAddTSReq*/
6165
6166/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006167 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6168 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006169 Upon the call of this API the WLAN DAL will pack
6170 and send a HAL Set Tx Per Tracking request message to the
6171 lower RIVA sub-system if DAL is in state STARTED.
6172
6173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006175
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006178
Jeff Johnson295189b2012-06-20 16:38:30 -07006179 pwdiSetTxPerTrackingRspCb: callback for passing back the
6180 response of the set Tx PER Tracking configurations operation received
6181 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006182
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 callback
6185
Jeff Johnson295189b2012-06-20 16:38:30 -07006186 @return Result of the function call
6187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006189WDI_SetTxPerTrackingReq
6190(
6191 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6192 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6193 void* pUserData
6194)
6195{
6196 WDI_EventInfoType wdiEventData;
6197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6198
6199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 ------------------------------------------------------------------------*/
6202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6203 {
6204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6205 "WDI API call before module is initialized - Fail request");
6206
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006208 }
6209
6210 /*------------------------------------------------------------------------
6211 Fill in Event data and post to the Main FSM
6212 ------------------------------------------------------------------------*/
6213 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006214 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006216 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006217 wdiEventData.pUserData = pUserData;
6218
6219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6220
6221}/*WDI_SetTxPerTrackingReq*/
6222
6223/**
6224 @brief WDI_SetTmLevelReq
6225 If HW Thermal condition changed, driver should react based on new
6226 HW thermal condition.
6227
6228 @param pwdiSetTmLevelReq: New thermal condition information
6229
6230 pwdiSetTmLevelRspCb: callback
6231
6232 usrData: user data will be passed back with the
6233 callback
6234
6235 @return Result of the function call
6236*/
6237WDI_Status
6238WDI_SetTmLevelReq
6239(
6240 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6241 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6242 void *usrData
6243)
6244{
6245 WDI_EventInfoType wdiEventData;
6246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6247
6248 /*------------------------------------------------------------------------
6249 Sanity Check
6250 ------------------------------------------------------------------------*/
6251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6252 {
6253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6254 "WDI API call before module is initialized - Fail request");
6255
6256 return WDI_STATUS_E_NOT_ALLOWED;
6257 }
6258
6259 /*------------------------------------------------------------------------
6260 Fill in Event data and post to the Main FSM
6261 ------------------------------------------------------------------------*/
6262 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6263 wdiEventData.pEventData = pwdiSetTmLevelReq;
6264 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6265 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6266 wdiEventData.pUserData = usrData;
6267
6268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6269}
6270
6271/**
6272 @brief WDI_HostSuspendInd
6273
6274 Suspend Indication from the upper layer will be sent
6275 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006276
Jeff Johnson295189b2012-06-20 16:38:30 -07006277 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006278
6279 @see
6280
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 @return Status of the request
6282*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006284WDI_HostSuspendInd
6285(
6286 WDI_SuspendParamsType* pwdiSuspendIndParams
6287)
6288{
6289
6290 WDI_EventInfoType wdiEventData;
6291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6292
6293 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006294 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006295 ------------------------------------------------------------------------*/
6296 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6297 {
6298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6299 "WDI API call before module is initialized - Fail request");
6300
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 }
6303
6304 /*------------------------------------------------------------------------
6305 Fill in Event data and post to the Main FSM
6306 ------------------------------------------------------------------------*/
6307 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006308 wdiEventData.pEventData = pwdiSuspendIndParams;
6309 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6310 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 wdiEventData.pUserData = NULL;
6312
6313 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6314
6315}/*WDI_HostSuspendInd*/
6316
6317/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006318 @brief WDI_TrafficStatsInd
6319 Traffic Stats from the upper layer will be sent
6320 down to HAL
6321
6322 @param WDI_TrafficStatsIndType
6323
6324 @see
6325
6326 @return Status of the request
6327*/
6328WDI_Status
6329WDI_TrafficStatsInd
6330(
6331 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6332)
6333{
6334
6335 WDI_EventInfoType wdiEventData;
6336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6337
6338 /*------------------------------------------------------------------------
6339 Sanity Check
6340 ------------------------------------------------------------------------*/
6341 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6342 {
6343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6344 "WDI API call before module is initialized - Fail request");
6345
6346 return WDI_STATUS_E_NOT_ALLOWED;
6347 }
6348
6349 /*------------------------------------------------------------------------
6350 Fill in Event data and post to the Main FSM
6351 ------------------------------------------------------------------------*/
6352 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6353 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6354 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6355 wdiEventData.pCBfnc = NULL;
6356 wdiEventData.pUserData = NULL;
6357
6358 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6359
6360}/*WDI_TrafficStatsInd*/
6361
Chet Lanctot186b5732013-03-18 10:26:30 -07006362#ifdef WLAN_FEATURE_11W
6363/**
6364 @brief WDI_ExcludeUnencryptedInd
6365 Register with HAL to receive/drop unencrypted frames
6366
6367 @param WDI_ExcludeUnencryptIndType
6368
6369 @see
6370
6371 @return Status of the request
6372*/
6373WDI_Status
6374WDI_ExcludeUnencryptedInd
6375(
6376 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6377)
6378{
6379
6380 WDI_EventInfoType wdiEventData;
6381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6382
6383 /*------------------------------------------------------------------------
6384 Sanity Check
6385 ------------------------------------------------------------------------*/
6386 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6387 {
6388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6389 "WDI API call before module is initialized - Fail request");
6390
6391 return WDI_STATUS_E_NOT_ALLOWED;
6392 }
6393
6394 /*------------------------------------------------------------------------
6395 Fill in Event data and post to the Main FSM
6396 ------------------------------------------------------------------------*/
6397 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6398 wdiEventData.pEventData = pWdiExcUnencParams;
6399 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6400 wdiEventData.pCBfnc = NULL;
6401 wdiEventData.pUserData = NULL;
6402
6403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6404
6405}/*WDI_TrafficStatsInd*/
6406#endif
6407
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006408/**
Yue Mab9c86f42013-08-14 15:59:08 -07006409 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6410
6411 @param addPeriodicTxPtrnParams: Add Pattern parameters
6412
6413 @see
6414
6415 @return Status of the request
6416*/
6417WDI_Status
6418WDI_AddPeriodicTxPtrnInd
6419(
6420 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6421)
6422{
6423 WDI_EventInfoType wdiEventData;
6424
6425 /*-------------------------------------------------------------------------
6426 Sanity Check
6427 ------------------------------------------------------------------------*/
6428 if (eWLAN_PAL_FALSE == gWDIInitialized)
6429 {
6430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6431 "WDI API call before module is initialized - Fail request!");
6432
6433 return WDI_STATUS_E_NOT_ALLOWED;
6434 }
6435
6436 /*-------------------------------------------------------------------------
6437 Fill in Event data and post to the Main FSM
6438 ------------------------------------------------------------------------*/
6439 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6440 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6441 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6442 wdiEventData.pCBfnc = NULL;
6443 wdiEventData.pUserData = NULL;
6444
6445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6446}
6447
6448/**
6449 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6450
6451 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6452
6453 @see
6454
6455 @return Status of the request
6456*/
6457WDI_Status
6458WDI_DelPeriodicTxPtrnInd
6459(
6460 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6461)
6462{
6463 WDI_EventInfoType wdiEventData;
6464
6465 /*-------------------------------------------------------------------------
6466 Sanity Check
6467 ------------------------------------------------------------------------*/
6468 if (eWLAN_PAL_FALSE == gWDIInitialized)
6469 {
6470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6471 "WDI API call before module is initialized - Fail request!");
6472
6473 return WDI_STATUS_E_NOT_ALLOWED;
6474 }
6475
6476 /*-------------------------------------------------------------------------
6477 Fill in Event data and post to the Main FSM
6478 ------------------------------------------------------------------------*/
6479 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6480 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6481 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6482 wdiEventData.pCBfnc = NULL;
6483 wdiEventData.pUserData = NULL;
6484
6485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6486}
6487
6488/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006489 @brief WDI_HALDumpCmdReq
6490 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006491
6492 @param halDumpCmdReqParams: Hal Dump Command Body
6493 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006495
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 @see
6497 @return Result of the function call
6498*/
6499WDI_Status WDI_HALDumpCmdReq
6500(
6501 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6502 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6503 void *pUserData
6504)
6505{
6506 WDI_EventInfoType wdiEventData;
6507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6508
6509 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006511 ------------------------------------------------------------------------*/
6512 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6513 {
6514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6515 "WDI API call before module is initialized - Fail request");
6516
Jeff Johnsone7245742012-09-05 17:12:55 -07006517 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 }
6519
6520 /*------------------------------------------------------------------------
6521 Fill in Event data and post to the Main FSM
6522 ------------------------------------------------------------------------*/
6523 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6524 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6525 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6526 wdiEventData.pCBfnc = halDumpCmdRspCb;
6527 wdiEventData.pUserData = pUserData;
6528
6529 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6530}
6531
Jeff Johnsone7245742012-09-05 17:12:55 -07006532/*============================================================================
6533
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006535
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 ============================================================================*/
6537
6538/**
6539 @brief Main FSM Start function for all states except BUSY
6540
Jeff Johnsone7245742012-09-05 17:12:55 -07006541
6542 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006543 wdiEV: event posted to the main DAL FSM
6544 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006545 structure
6546
Jeff Johnson295189b2012-06-20 16:38:30 -07006547 @see
6548 @return Result of the function call
6549*/
6550WDI_Status
6551WDI_PostMainEvent
6552(
Jeff Johnsone7245742012-09-05 17:12:55 -07006553 WDI_ControlBlockType* pWDICtx,
6554 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006556)
6557{
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 WDI_Status wdiStatus;
6559 WDI_MainFuncType pfnWDIMainEvHdlr;
6560 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6562
6563 /*-------------------------------------------------------------------------
6564 Sanity check
6565 -------------------------------------------------------------------------*/
6566 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6567 ( wdiEV >= WDI_MAX_EVENT ))
6568 {
6569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6570 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6571 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 }
6574
6575 /*Access to the global state must be locked */
6576 wpalMutexAcquire(&pWDICtx->wptMutex);
6577
6578 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006580
6581 wdiOldState = pWDICtx->uGlobalState;
6582
6583 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6585 response comes from CCPU for the request sent by host:
6586 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 -07006587 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 -07006588 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 CCPU:
6590 don't change the state */
6591 if ( WDI_RESPONSE_EVENT != wdiEV)
6592 {
6593 /*Transition to BUSY State - the request is now being processed by the FSM,
6594 if the request fails we shall transition back to the old state, if not
6595 the request will manage its own state transition*/
6596 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6597 }
6598 /* If the state function associated with the EV is NULL it means that this
6599 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 {
6602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006605 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006606 }
6607 else
6608 {
6609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006612 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 }
6614
6615 /* If a request handles itself well it will end up in a success or in a
6616 pending
6617 Success - means that the request was processed and the proper state
6618 transition already occurred or will occur when the resp is received
6619 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006620
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 Pending - means the request could not be processed at this moment in time
6622 because the FSM was already busy so no state transition or dequeueing
6623 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006624
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 Success for synchronous case means that the transition may occur and
6626 processing of pending requests may continue - so it should go through
6627 and restores the state and continue processing queued requests*/
6628 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6629 ( WDI_STATUS_PENDING != wdiStatus ))
6630 {
6631 if ( WDI_RESPONSE_EVENT != wdiEV)
6632 {
6633 /*The request has failed or could not be processed - transition back to
6634 the old state - check to see if anything was queued and try to execute
6635 The dequeue logic should post a message to a thread and return - no
6636 actual processing can occur */
6637 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6638 }
6639 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006640
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 }
6642
6643 /* we have completed processing the event */
6644 wpalMutexRelease(&pWDICtx->wptMutex);
6645
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006647
6648}/*WDI_PostMainEvent*/
6649
6650
6651/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006652 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006653--------------------------------------------------------------------------*/
6654/**
6655 @brief Main FSM Start function for all states except BUSY
6656
Jeff Johnsone7245742012-09-05 17:12:55 -07006657
6658 @param pWDICtx: pointer to the WLAN DAL context
6659 pEventData: pointer to the event information structure
6660
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 @see
6662 @return Result of the function call
6663*/
6664WDI_Status
6665WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006666(
Jeff Johnson295189b2012-06-20 16:38:30 -07006667 WDI_ControlBlockType* pWDICtx,
6668 WDI_EventInfoType* pEventData
6669)
6670{
6671
6672 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 ----------------------------------------------------------------------*/
6675 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6676 {
6677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006678 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 pWDICtx, pEventData);
6680 return WDI_STATUS_E_FAILURE;
6681 }
6682
6683 wpalMutexAcquire(&pWDICtx->wptMutex);
6684
6685 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 ----------------------------------------------------------------------*/
6688 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6689 {
6690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6691 "Control Transport not yet Open - queueing the request");
6692
6693 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006695
6696 wpalMutexRelease(&pWDICtx->wptMutex);
6697 return WDI_STATUS_PENDING;
6698 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006699
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 wpalMutexRelease(&pWDICtx->wptMutex);
6701
6702 /*Return Success*/
6703 return WDI_ProcessRequest( pWDICtx, pEventData );
6704
6705}/*WDI_MainStart*/
6706
6707/**
6708 @brief Main FSM Response function for state INIT
6709
Jeff Johnsone7245742012-09-05 17:12:55 -07006710
6711 @param pWDICtx: pointer to the WLAN DAL context
6712 pEventData: pointer to the event information structure
6713
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 @see
6715 @return Result of the function call
6716*/
6717WDI_Status
6718WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006719(
Jeff Johnson295189b2012-06-20 16:38:30 -07006720 WDI_ControlBlockType* pWDICtx,
6721 WDI_EventInfoType* pEventData
6722)
6723{
6724 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006725 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006728
6729 /*Return Success*/
6730 return WDI_STATUS_E_NOT_ALLOWED;
6731}/* WDI_MainRspInit */
6732
6733/**
6734 @brief Main FSM Close function for all states except BUSY
6735
Jeff Johnsone7245742012-09-05 17:12:55 -07006736
6737 @param pWDICtx: pointer to the WLAN DAL context
6738 pEventData: pointer to the event information structure
6739
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 @see
6741 @return Result of the function call
6742*/
6743WDI_Status
6744WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006745(
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 WDI_ControlBlockType* pWDICtx,
6747 WDI_EventInfoType* pEventData
6748)
6749{
6750
6751 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 ----------------------------------------------------------------------*/
6754 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6755 {
6756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006757 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 pWDICtx, pEventData);
6759 return WDI_STATUS_E_FAILURE;
6760 }
6761
6762 /*Return Success*/
6763 return WDI_ProcessRequest( pWDICtx, pEventData );
6764
6765}/*WDI_MainClose*/
6766/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006768--------------------------------------------------------------------------*/
6769/**
6770 @brief Main FSM Start function for state STARTED
6771
Jeff Johnsone7245742012-09-05 17:12:55 -07006772
6773 @param pWDICtx: pointer to the WLAN DAL context
6774 pEventData: pointer to the event information structure
6775
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 @see
6777 @return Result of the function call
6778*/
6779WDI_Status
6780WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006781(
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 WDI_ControlBlockType* pWDICtx,
6783 WDI_EventInfoType* pEventData
6784)
6785{
6786 WDI_StartRspCb wdiStartRspCb = NULL;
6787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6788
6789 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006791 ----------------------------------------------------------------------*/
6792 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6793 {
6794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006795 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 pWDICtx, pEventData);
6797 return WDI_STATUS_E_FAILURE;
6798 }
6799
6800 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006802 ----------------------------------------------------------------------*/
6803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006804 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006805
6806 wpalMutexAcquire(&pWDICtx->wptMutex);
6807
6808 /*Transition back to started because the post function transitioned us to
6809 busy*/
6810 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6811
6812 /*Check to see if any request is pending*/
6813 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006814
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 wpalMutexRelease(&pWDICtx->wptMutex);
6816
6817 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6819
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 /*Notify UMAC*/
6821 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6822
6823 /*Return Success*/
6824 return WDI_STATUS_SUCCESS;
6825
6826}/*WDI_MainStartStarted*/
6827
6828/**
6829 @brief Main FSM Stop function for state STARTED
6830
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
6832 @param pWDICtx: pointer to the WLAN DAL context
6833 pEventData: pointer to the event information structure
6834
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 @see
6836 @return Result of the function call
6837*/
6838WDI_Status
6839WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006840(
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 WDI_ControlBlockType* pWDICtx,
6842 WDI_EventInfoType* pEventData
6843)
6844{
6845 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ----------------------------------------------------------------------*/
6848 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006851 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 pWDICtx, pEventData);
6853 return WDI_STATUS_E_FAILURE;
6854 }
6855
6856 /*State at this point is BUSY - because we enter this state before posting
6857 an event to the FSM in order to prevent potential race conditions*/
6858
6859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6860 "Processing stop request in FSM");
6861
6862 /*Return Success*/
6863 return WDI_ProcessRequest( pWDICtx, pEventData );
6864
6865}/*WDI_MainStopStarted*/
6866/**
6867 @brief Main FSM Request function for state started
6868
Jeff Johnsone7245742012-09-05 17:12:55 -07006869
6870 @param pWDICtx: pointer to the WLAN DAL context
6871 pEventData: pointer to the event information structure
6872
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 @see
6874 @return Result of the function call
6875*/
6876WDI_Status
6877WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006878(
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 WDI_ControlBlockType* pWDICtx,
6880 WDI_EventInfoType* pEventData
6881)
6882{
6883
6884 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 ----------------------------------------------------------------------*/
6887 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6888 {
6889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006890 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 pWDICtx, pEventData);
6892 return WDI_STATUS_E_FAILURE;
6893 }
6894
6895 /*State at this point is BUSY - because we enter this state before posting
6896 an event to the FSM in order to prevent potential race conditions*/
6897
6898 /*Return Success*/
6899 return WDI_ProcessRequest( pWDICtx, pEventData );
6900
6901}/*WDI_MainReqStarted*/
6902
6903/**
6904 @brief Main FSM Response function for all states except INIT
6905
Jeff Johnsone7245742012-09-05 17:12:55 -07006906
6907 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006909
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 @see
6911 @return Result of the function call
6912*/
6913WDI_Status
6914WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006915(
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 WDI_ControlBlockType* pWDICtx,
6917 WDI_EventInfoType* pEventData
6918)
6919{
Jeff Johnsone7245742012-09-05 17:12:55 -07006920 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 wpt_boolean expectedResponse;
6922
6923 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006925 ----------------------------------------------------------------------*/
6926 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6927 {
6928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006929 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 pWDICtx, pEventData);
6931 return WDI_STATUS_E_FAILURE;
6932 }
6933
6934 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6935 {
6936 /* we received an expected response */
6937 expectedResponse = eWLAN_PAL_TRUE;
6938
6939 /*We expect that we will transition to started after this processing*/
6940 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6941
6942 /* we are no longer expecting a response */
6943 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6944 }
6945 else
6946 {
6947 /* we received an indication or unexpected response */
6948 expectedResponse = eWLAN_PAL_FALSE;
6949 /* for indications no need to update state from what it is right
6950 now, unless it explicitly does it in the indication handler (say
6951 for device failure ind) */
6952 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6953 }
6954
6955 /*Process the response and indication */
6956 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6957
6958 /*Lock the CB as we are about to do a state transition*/
6959 wpalMutexAcquire(&pWDICtx->wptMutex);
6960
6961 /*Transition to the expected state after the response processing
6962 - this should always be started state with the following exceptions:
6963 1. processing of a failed start response
6964 2. device failure detected while processing response
6965 3. stop response received*/
6966 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006967
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 /*Dequeue request that may have been queued while we were waiting for the
6969 response */
6970 if ( expectedResponse )
6971 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 }
6974
6975 wpalMutexRelease(&pWDICtx->wptMutex);
6976
6977 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006979
6980}/*WDI_MainRsp*/
6981
6982/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006984--------------------------------------------------------------------------*/
6985/**
6986 @brief Main FSM Stop function for state STOPPED
6987
Jeff Johnsone7245742012-09-05 17:12:55 -07006988
6989 @param pWDICtx: pointer to the WLAN DAL context
6990 pEventData: pointer to the event information structure
6991
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 @see
6993 @return Result of the function call
6994*/
6995WDI_Status
6996WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006997(
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 WDI_ControlBlockType* pWDICtx,
6999 WDI_EventInfoType* pEventData
7000)
7001{
7002 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 ----------------------------------------------------------------------*/
7005 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7006 {
7007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007008 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 pWDICtx, pEventData);
7010 return WDI_STATUS_E_FAILURE;
7011 }
7012
7013 /*We should normally not get a STOP request if we are already stopped
7014 since we should normally be stopped by the UMAC. However in some
7015 error situations we put ourselves in the stopped state without the
7016 UMAC knowing, so when we get a STOP request in this state we still
7017 process it since we need to clean up the underlying state */
7018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7019 "Processing stop request while stopped in FSM");
7020
7021 /*Return Success*/
7022 return WDI_ProcessRequest( pWDICtx, pEventData );
7023
7024}/*WDI_MainStopStopped*/
7025
7026/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007028--------------------------------------------------------------------------*/
7029/**
7030 @brief Main FSM Start function for state BUSY
7031
Jeff Johnsone7245742012-09-05 17:12:55 -07007032
7033 @param pWDICtx: pointer to the WLAN DAL context
7034 pEventData: pointer to the event information structure
7035
Jeff Johnson295189b2012-06-20 16:38:30 -07007036 @see
7037 @return Result of the function call
7038*/
7039WDI_Status
7040WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007041(
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 WDI_ControlBlockType* pWDICtx,
7043 WDI_EventInfoType* pEventData
7044)
7045{
7046 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007048 ----------------------------------------------------------------------*/
7049 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7050 {
7051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007052 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 pWDICtx, pEventData);
7054 return WDI_STATUS_E_FAILURE;
7055 }
7056
7057 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 ----------------------------------------------------------------------*/
7060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7061 "WDI Busy state - queue start request");
7062
7063 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007065
7066 /*Return Success*/
7067 return WDI_STATUS_PENDING;
7068}/*WDI_MainStartBusy*/
7069
7070/**
7071 @brief Main FSM Stop function for state BUSY
7072
Jeff Johnsone7245742012-09-05 17:12:55 -07007073
7074 @param pWDICtx: pointer to the WLAN DAL context
7075 pEventData: pointer to the event information structure
7076
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 @see
7078 @return Result of the function call
7079*/
7080WDI_Status
7081WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007082(
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 WDI_ControlBlockType* pWDICtx,
7084 WDI_EventInfoType* pEventData
7085)
7086{
7087 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 ----------------------------------------------------------------------*/
7090 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7091 {
7092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007093 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 pWDICtx, pEventData);
7095 return WDI_STATUS_E_FAILURE;
7096 }
7097
7098 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007099 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 ----------------------------------------------------------------------*/
7101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7102 "WDI Busy state - queue stop request");
7103
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007106
Jeff Johnson295189b2012-06-20 16:38:30 -07007107}/*WDI_MainStopBusy*/
7108
7109/**
7110 @brief Main FSM Request function for state BUSY
7111
Jeff Johnsone7245742012-09-05 17:12:55 -07007112
7113 @param pWDICtx: pointer to the WLAN DAL context
7114 pEventData: pointer to the event information structure
7115
Jeff Johnson295189b2012-06-20 16:38:30 -07007116 @see
7117 @return Result of the function call
7118*/
7119WDI_Status
7120WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007121(
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 WDI_ControlBlockType* pWDICtx,
7123 WDI_EventInfoType* pEventData
7124)
7125{
7126 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 ----------------------------------------------------------------------*/
7129 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7130 {
7131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007132 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007133 pWDICtx, pEventData);
7134 return WDI_STATUS_E_FAILURE;
7135 }
7136
7137 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 ----------------------------------------------------------------------*/
7140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7141 "WDI Busy state - queue request %d because waiting for response %d",
7142 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7143
Jeff Johnsone7245742012-09-05 17:12:55 -07007144 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007146
Jeff Johnson295189b2012-06-20 16:38:30 -07007147}/*WDI_MainReqBusy*/
7148/**
7149 @brief Main FSM Close function for state BUSY
7150
Jeff Johnsone7245742012-09-05 17:12:55 -07007151
7152 @param pWDICtx: pointer to the WLAN DAL context
7153 pEventData: pointer to the event information structure
7154
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 @see
7156 @return Result of the function call
7157*/
7158WDI_Status
7159WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007160(
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 WDI_ControlBlockType* pWDICtx,
7162 WDI_EventInfoType* pEventData
7163)
7164{
7165 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 ----------------------------------------------------------------------*/
7168 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7169 {
7170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007171 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 pWDICtx, pEventData);
7173 return WDI_STATUS_E_FAILURE;
7174 }
7175
7176 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007177 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 ----------------------------------------------------------------------*/
7179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7180 "WDI Busy state - queue close request");
7181
Jeff Johnsone7245742012-09-05 17:12:55 -07007182 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007184
Jeff Johnson295189b2012-06-20 16:38:30 -07007185}/*WDI_MainCloseBusy*/
7186
7187/**
7188 @brief Main FSM Shutdown function for INIT & STARTED states
7189
7190
7191 @param pWDICtx: pointer to the WLAN DAL context
7192 pEventData: pointer to the event information structure
7193
7194 @see
7195 @return Result of the function call
7196*/
7197WDI_Status
7198WDI_MainShutdown
7199(
7200 WDI_ControlBlockType* pWDICtx,
7201 WDI_EventInfoType* pEventData
7202)
7203{
7204 /*--------------------------------------------------------------------
7205 Sanity Check
7206 ----------------------------------------------------------------------*/
7207 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7208 {
7209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007210 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 pWDICtx, pEventData);
7212 return WDI_STATUS_E_FAILURE;
7213 }
7214
7215 /*State at this point is BUSY - because we enter this state before posting
7216 an event to the FSM in order to prevent potential race conditions*/
7217
7218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7219 "Processing shutdown request in FSM");
7220
7221 /*Return Success*/
7222 return WDI_ProcessRequest( pWDICtx, pEventData );
7223
7224}/*WDI_MainShutdown*/
7225
7226/**
7227 @brief Main FSM Shutdown function for BUSY state
7228
7229
7230 @param pWDICtx: pointer to the WLAN DAL context
7231 pEventData: pointer to the event information structure
7232
7233 @see
7234 @return Result of the function call
7235*/
7236WDI_Status
7237WDI_MainShutdownBusy
7238(
7239 WDI_ControlBlockType* pWDICtx,
7240 WDI_EventInfoType* pEventData
7241)
7242{
7243 /*--------------------------------------------------------------------
7244 Sanity Check
7245 ----------------------------------------------------------------------*/
7246 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7247 {
7248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007249 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 pWDICtx, pEventData);
7251 return WDI_STATUS_E_FAILURE;
7252 }
7253
7254 /* If you are waiting for a HAL response at this stage, you are not
7255 * going to get it. Riva is already shutdown/crashed.
7256 */
7257 wpalTimerStop(&gWDICb.wptResponseTimer);
7258
7259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7260 "Processing shutdown request in FSM: Busy state ");
7261
7262 return WDI_ProcessRequest( pWDICtx, pEventData );
7263
7264}/*WDI_MainShutdownBusy*/
7265
7266
Jeff Johnsone7245742012-09-05 17:12:55 -07007267/*=======================================================================
7268
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007270
Jeff Johnson295189b2012-06-20 16:38:30 -07007271*=======================================================================*/
7272
7273/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007275========================================================================*/
7276/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007277 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007279
7280 @param pWDICtx: pointer to the WLAN DAL context
7281 pEventData: pointer to the event information structure
7282
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 @see
7284 @return Result of the function call
7285*/
7286WDI_Status
7287WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007288(
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 WDI_ControlBlockType* pWDICtx,
7290 WDI_EventInfoType* pEventData
7291)
7292{
7293 WDI_StartReqParamsType* pwdiStartParams = NULL;
7294 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 wpt_uint16 usDataOffset = 0;
7297 wpt_uint16 usSendSize = 0;
7298
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 tHalMacStartReqMsg halStartReq;
7300 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7302
7303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 -------------------------------------------------------------------------*/
7306 if (( NULL == pEventData ) ||
7307 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7308 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7309 {
7310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 }
7315
7316 /*-----------------------------------------------------------------------
7317 Get message buffer
7318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 pwdiStartParams->usConfigBufferLen;
7321
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 usLen,
7324 &pSendBuffer, &usDataOffset, &usSendSize))||
7325 ( usSendSize < (usDataOffset + usLen )))
7326 {
7327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007328 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 pEventData, pwdiStartParams, wdiStartRspCb);
7330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 }
7333
7334 /*-----------------------------------------------------------------------
7335 Fill in the message
7336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 halStartReq.startReqParams.driverType =
7338 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 halStartReq.startReqParams.uConfigBufferLen =
7341 pwdiStartParams->usConfigBufferLen;
7342 wpalMemoryCopy( pSendBuffer+usDataOffset,
7343 &halStartReq.startReqParams,
7344 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007345
Jeff Johnsone7245742012-09-05 17:12:55 -07007346 usDataOffset += sizeof(halStartReq.startReqParams);
7347 wpalMemoryCopy( pSendBuffer+usDataOffset,
7348 pwdiStartParams->pConfigBuffer,
7349 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007350
7351 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007353
7354 /*Save Low Level Ind CB and associated user data - it will be used further
7355 on when an indication is coming from the lower MAC*/
7356 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007358
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366
Jeff Johnson295189b2012-06-20 16:38:30 -07007367}/*WDI_ProcessStartReq*/
7368
7369/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007372
7373 @param pWDICtx: pointer to the WLAN DAL context
7374 pEventData: pointer to the event information structure
7375
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 @see
7377 @return Result of the function call
7378*/
7379WDI_Status
7380WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007381(
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 WDI_ControlBlockType* pWDICtx,
7383 WDI_EventInfoType* pEventData
7384)
7385{
7386 WDI_StopReqParamsType* pwdiStopParams = NULL;
7387 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 wpt_uint16 usDataOffset = 0;
7390 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007391 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7394
7395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007397 -------------------------------------------------------------------------*/
7398 if (( NULL == pEventData ) ||
7399 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7400 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7401 {
7402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007405 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 }
7407
7408 /*-----------------------------------------------------------------------
7409 Get message buffer
7410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 sizeof(halStopReq.stopReqParams),
7413 &pSendBuffer, &usDataOffset, &usSendSize))||
7414 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7415 {
7416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007417 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 pEventData, pwdiStopParams, wdiStopRspCb);
7419 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007420 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 }
7422
7423 /*-----------------------------------------------------------------------
7424 Fill in the message
7425 -----------------------------------------------------------------------*/
7426 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7427 pwdiStopParams->wdiStopReason);
7428
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 wpalMemoryCopy( pSendBuffer+usDataOffset,
7430 &halStopReq.stopReqParams,
7431 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007435
7436 /*! TO DO: stop the data services */
7437 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7438 {
7439 /*Stop the STA Table !UT- check this logic again
7440 It is safer to do it here than on the response - because a stop is imminent*/
7441 WDI_STATableStop(pWDICtx);
7442
7443 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007444 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7445 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 {
7447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7448 "WDI Init failed to reset power state event");
7449
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007451 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 }
7453 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007454 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7455 if( eWLAN_PAL_STATUS_SUCCESS != status )
7456 {
7457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007458 "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 -08007459 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007460 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007461 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007465 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7466 WDI_SET_POWER_STATE_TIMEOUT);
7467 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 {
7469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7470 "WDI Init failed to wait on an event");
7471
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007473 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 }
7475 }
7476
7477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7482
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007483fail:
7484 // Release the message buffer so we don't leak
7485 wpalMemoryFree(pSendBuffer);
7486
7487failRequest:
7488 //WDA should have failure check to avoid the memory leak
7489 return WDI_STATUS_E_FAILURE;
7490
Jeff Johnson295189b2012-06-20 16:38:30 -07007491}/*WDI_ProcessStopReq*/
7492
7493/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007496
7497 @param pWDICtx: pointer to the WLAN DAL context
7498 pEventData: pointer to the event information structure
7499
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 @see
7501 @return Result of the function call
7502*/
7503WDI_Status
7504WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007505(
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 WDI_ControlBlockType* pWDICtx,
7507 WDI_EventInfoType* pEventData
7508)
7509{
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7512
7513 /*Lock control block for cleanup*/
7514 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007515
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 /*Clear all pending request*/
7517 WDI_ClearPendingRequests(pWDICtx);
7518
7519 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007521
7522 /* Close Data transport*/
7523 /* FTM mode does not open Data Path */
7524 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7525 {
7526 WDTS_Close(pWDICtx);
7527 }
7528
7529 /*Close the STA Table !UT- check this logic again*/
7530 WDI_STATableClose(pWDICtx);
7531
7532 /*close the PAL */
7533 wptStatus = wpalClose(pWDICtx->pPALContext);
7534 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7535 {
7536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7537 "Failed to wpal Close %d", wptStatus);
7538 WDI_ASSERT(0);
7539 }
7540
7541 /*Transition back to init state*/
7542 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7543
7544 wpalMutexRelease(&pWDICtx->wptMutex);
7545
7546 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007550}/*WDI_ProcessCloseReq*/
7551
7552
7553/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007555===========================================================================*/
7556
7557/**
7558 @brief Process Init Scan Request function (called when Main FSM
7559 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007560
7561 @param pWDICtx: pointer to the WLAN DAL context
7562 pEventData: pointer to the event information structure
7563
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 @see
7565 @return Result of the function call
7566*/
7567WDI_Status
7568WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007569(
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 WDI_ControlBlockType* pWDICtx,
7571 WDI_EventInfoType* pEventData
7572)
7573{
7574 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7575 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 wpt_uint16 usDataOffset = 0;
7578 wpt_uint16 usSendSize = 0;
7579 wpt_uint8 i = 0;
7580
7581 tHalInitScanReqMsg halInitScanReqMsg;
7582
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 * It shold be removed once host and riva changes are in sync*/
7585 tHalInitScanConReqMsg halInitScanConReqMsg;
7586
7587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7588
7589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 -------------------------------------------------------------------------*/
7592 if (( NULL == pEventData ) ||
7593 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7594 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7595 {
7596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 }
7601
7602#if 0
7603 wpalMutexAcquire(&pWDICtx->wptMutex);
7604 /*-----------------------------------------------------------------------
7605 Check to see if SCAN is already in progress - if so reject the req
7606 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 -----------------------------------------------------------------------*/
7609 if ( pWDICtx->bScanInProgress )
7610 {
7611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7612 "Scan is already in progress - subsequent scan is not allowed"
7613 " until the first scan completes");
7614
7615 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 }
7618
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7620 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007621
7622 wpalMutexRelease(&pWDICtx->wptMutex);
7623#endif
Viral Modid86bde22012-12-10 13:09:21 -08007624 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 * It shold be removed once host and riva changes are in sync*/
7628 /*-----------------------------------------------------------------------
7629 Get message buffer
7630 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 sizeof(halInitScanConReqMsg.initScanParams),
7633 &pSendBuffer, &usDataOffset, &usSendSize))||
7634 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7635 {
7636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007637 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 }
7642
7643
7644 /*-----------------------------------------------------------------------
7645 Fill in the message
7646 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7649
7650 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7651 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7652
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7659
7660 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7661 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7662
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7664 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007665
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7668
7669 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7670 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007672 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7673 }
7674
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 wpalMemoryCopy( pSendBuffer+usDataOffset,
7676 &halInitScanConReqMsg.initScanParams,
7677 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007678 }
7679 else
7680 {
7681 /*-----------------------------------------------------------------------
7682 Get message buffer
7683 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 sizeof(halInitScanReqMsg.initScanParams),
7686 &pSendBuffer, &usDataOffset, &usSendSize))||
7687 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7688 {
7689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007690 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 }
7695
7696
7697 /*-----------------------------------------------------------------------
7698 Fill in the message
7699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007701 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7702
7703 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7704 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7705
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7712
7713 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7714 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7715
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007717 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7718
7719 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7720 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007721 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007722 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7723 }
7724
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 wpalMemoryCopy( pSendBuffer+usDataOffset,
7726 &halInitScanReqMsg.initScanParams,
7727 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 }
7729
7730 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007732
7733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7738
7739}/*WDI_ProcessInitScanReq*/
7740
7741/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007744
7745 @param pWDICtx: pointer to the WLAN DAL context
7746 pEventData: pointer to the event information structure
7747
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 @see
7749 @return Result of the function call
7750*/
7751WDI_Status
7752WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007753(
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 WDI_ControlBlockType* pWDICtx,
7755 WDI_EventInfoType* pEventData
7756)
7757{
7758 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7759 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007761 wpt_uint16 usDataOffset = 0;
7762 wpt_uint16 usSendSize = 0;
7763
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7766
7767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 -------------------------------------------------------------------------*/
7770 if (( NULL == pEventData ) ||
7771 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7772 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7773 {
7774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 }
7779
7780#if 0
7781 wpalMutexAcquire(&pWDICtx->wptMutex);
7782 /*-----------------------------------------------------------------------
7783 Check to see if SCAN is already in progress - start scan is only
7784 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7789 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7790 {
7791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7792 "Scan start not allowed in this state %d %d",
7793 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 }
7798
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007800
7801 wpalMutexRelease(&pWDICtx->wptMutex);
7802#endif
7803
7804 /*-----------------------------------------------------------------------
7805 Get message buffer
7806 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 sizeof(halStartScanReqMsg.startScanParams),
7809 &pSendBuffer, &usDataOffset, &usSendSize))||
7810 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7811 {
7812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007813 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 }
7818
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 wpalMemoryCopy( pSendBuffer+usDataOffset,
7822 &halStartScanReqMsg.startScanParams,
7823 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007824
7825 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007826 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007827
7828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7833}/*WDI_ProcessStartScanReq*/
7834
7835
7836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007839
7840 @param pWDICtx: pointer to the WLAN DAL context
7841 pEventData: pointer to the event information structure
7842
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 @see
7844 @return Result of the function call
7845*/
7846WDI_Status
7847WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007848(
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 WDI_ControlBlockType* pWDICtx,
7850 WDI_EventInfoType* pEventData
7851)
7852{
7853 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7854 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 wpt_uint16 usDataOffset = 0;
7857 wpt_uint16 usSendSize = 0;
7858
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7861
7862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 -------------------------------------------------------------------------*/
7865 if (( NULL == pEventData ) ||
7866 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7867 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7868 {
7869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 }
7874
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7876 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 * forwarded to HAL and result in hang*/
7878#if 0
7879 wpalMutexAcquire(&pWDICtx->wptMutex);
7880 /*-----------------------------------------------------------------------
7881 Check to see if SCAN is already in progress - end scan is only
7882 allowed when a scan is ongoing and the state of the scan procedure
7883 is started
7884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7887 {
7888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7889 "End start not allowed in this state %d %d",
7890 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007891
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 }
7895
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897
7898 wpalMutexRelease(&pWDICtx->wptMutex);
7899#endif
7900
7901 /*-----------------------------------------------------------------------
7902 Get message buffer
7903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 sizeof(halEndScanReqMsg.endScanParams),
7906 &pSendBuffer, &usDataOffset, &usSendSize))||
7907 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7908 {
7909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007910 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 }
7915
7916 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7917
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 wpalMemoryCopy( pSendBuffer+usDataOffset,
7919 &halEndScanReqMsg.endScanParams,
7920 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007924
7925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7930}/*WDI_ProcessEndScanReq*/
7931
7932
7933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007936
7937 @param pWDICtx: pointer to the WLAN DAL context
7938 pEventData: pointer to the event information structure
7939
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 @see
7941 @return Result of the function call
7942*/
7943WDI_Status
7944WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007945(
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 WDI_ControlBlockType* pWDICtx,
7947 WDI_EventInfoType* pEventData
7948)
7949{
7950 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7951 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 wpt_uint16 usDataOffset = 0;
7954 wpt_uint16 usSendSize = 0;
7955 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007956 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7959
7960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007962 -------------------------------------------------------------------------*/
7963 if (( NULL == pEventData ) ||
7964 ( NULL == pEventData->pEventData) ||
7965 ( NULL == pEventData->pCBfnc))
7966 {
7967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 }
7972
7973 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7974 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7976 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 * forwarded to HAL and result in hang*/
7978#if 0
7979 wpalMutexAcquire(&pWDICtx->wptMutex);
7980 /*-----------------------------------------------------------------------
7981 Check to see if SCAN is already in progress
7982 Finish scan gets invoked any scan states. ie. abort scan
7983 It should be allowed in any states.
7984 -----------------------------------------------------------------------*/
7985 if ( !pWDICtx->bScanInProgress )
7986 {
7987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7988 "Finish start not allowed in this state %d",
7989 pWDICtx->bScanInProgress );
7990
7991 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 }
7994
7995 /*-----------------------------------------------------------------------
7996 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8000 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 wpalMutexRelease(&pWDICtx->wptMutex);
8002#endif
8003
8004 if ( pWDICtx->bInBmps )
8005 {
8006 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008007 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8008 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8009 {
8010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008011 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008012 WDI_ASSERT(0);
8013 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 }
8015
8016 /*-----------------------------------------------------------------------
8017 Get message buffer
8018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 sizeof(halFinishScanReqMsg.finishScanParams),
8021 &pSendBuffer, &usDataOffset, &usSendSize))||
8022 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8023 {
8024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008025 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 }
8030
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8033
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8036
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8039
8040 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8041 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8042
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8049
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8052
8053 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8054 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8057 }
8058
8059 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8060 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8061
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 wpalMemoryCopy( pSendBuffer+usDataOffset,
8063 &halFinishScanReqMsg.finishScanParams,
8064 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008065
8066 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008068
8069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8074}/*WDI_ProcessFinishScanReq*/
8075
8076
8077/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008079==========================================================================*/
8080/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 @brief Process BSS Join for a given Session
8082
8083 @param pWDICtx: pointer to the WLAN DAL context
8084 pEventData: pointer to the event information structure
8085
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 @see
8087 @return Result of the function call
8088*/
8089WDI_Status
8090WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008091(
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 WDI_ControlBlockType* pWDICtx,
8093 WDI_JoinReqParamsType* pwdiJoinParams,
8094 WDI_JoinRspCb wdiJoinRspCb,
8095 void* pUserData
8096)
8097{
8098 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 wpt_uint16 usDataOffset = 0;
8101 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008103
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8106
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008107 wpalMutexAcquire(&pWDICtx->wptMutex);
8108
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 /*------------------------------------------------------------------------
8110 Check to see if we have any session with this BSSID already stored, we
8111 should not
8112 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8114 pwdiJoinParams->wdiReqInfo.macBSSID,
8115 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008116
8117 if ( NULL != pBSSSes )
8118 {
8119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008120 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8121 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008123 /*reset the bAssociationInProgress otherwise the next
8124 *join request will be queued*/
8125 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8126 wpalMutexRelease(&pWDICtx->wptMutex);
8127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 }
8129
Jeff Johnson295189b2012-06-20 16:38:30 -07008130 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 if ( NULL == pBSSSes )
8135 {
8136
8137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8138 "DAL has no free sessions - cannot run another join");
8139
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008140 /*reset the bAssociationInProgress otherwise the next
8141 *join request will be queued*/
8142 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 }
8146
8147 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8149 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 WDI_MAC_ADDR_LEN);
8151
8152 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008155
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 wpalMutexRelease(&pWDICtx->wptMutex);
8157
8158 /*-----------------------------------------------------------------------
8159 Get message buffer
8160 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 sizeof(halJoinReqMsg.joinReqParams),
8163 &pSendBuffer, &usDataOffset, &usSendSize))||
8164 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8165 {
8166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008167 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 pUserData, pwdiJoinParams, wdiJoinRspCb);
8169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 }
8172
8173 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 pwdiJoinParams->wdiReqInfo.macSTASelf,
8178 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008179
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8182
8183 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8184
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008185#ifdef WLAN_FEATURE_VOWIFI
8186 halJoinReqMsg.joinReqParams.maxTxPower =
8187 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8188#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8191#endif
8192
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8195 wdiSecondaryChannelOffset);
8196
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 wpalMemoryCopy( pSendBuffer+usDataOffset,
8198 &halJoinReqMsg.joinReqParams,
8199 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008200
8201 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
8204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008207 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8208 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008209
8210}/*WDI_ProcessBSSSessionJoinReq*/
8211
8212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008215
8216 @param pWDICtx: pointer to the WLAN DAL context
8217 pEventData: pointer to the event information structure
8218
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 @see
8220 @return Result of the function call
8221*/
8222WDI_Status
8223WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008224(
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 WDI_ControlBlockType* pWDICtx,
8226 WDI_EventInfoType* pEventData
8227)
8228{
8229 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8230 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8231 WDI_JoinRspCb wdiJoinRspCb = NULL;
8232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8233
8234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 -------------------------------------------------------------------------*/
8237 if (( NULL == pEventData ) ||
8238 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8239 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8240 {
8241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008246
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 /*-------------------------------------------------------------------------
8248 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 -------------------------------------------------------------------------*/
8251 wpalMutexAcquire(&pWDICtx->wptMutex);
8252
8253 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8254 {
8255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8256 "Association is currently in progress, queueing new join req");
8257
8258 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 pwdiJoinParams->wdiReqInfo.macBSSID);
8261
8262 wpalMutexRelease(&pWDICtx->wptMutex);
8263
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 }
8266
8267 /*Starting a new association */
8268 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8269 wpalMutexRelease(&pWDICtx->wptMutex);
8270
8271 /*Process the Join Request*/
8272 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8273 wdiJoinRspCb,pEventData->pUserData);
8274
8275}/*WDI_ProcessJoinReq*/
8276
8277
8278/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008281
8282 @param pWDICtx: pointer to the WLAN DAL context
8283 pEventData: pointer to the event information structure
8284
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 @see
8286 @return Result of the function call
8287*/
8288WDI_Status
8289WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008290(
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 WDI_ControlBlockType* pWDICtx,
8292 WDI_EventInfoType* pEventData
8293)
8294{
8295 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8296 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 wpt_uint16 uMsgSize = 0;
8300 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 wpt_uint16 usDataOffset = 0;
8302 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008304
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8307
8308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 -------------------------------------------------------------------------*/
8311 if (( NULL == pEventData ) ||
8312 ( NULL == pEventData->pEventData ) ||
8313 ( NULL == pEventData->pCBfnc ))
8314 {
8315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 }
8320
Abhishek Singh6927fa02014-06-27 17:19:55 +05308321 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8323 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8324 /*-------------------------------------------------------------------------
8325 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 -------------------------------------------------------------------------*/
8328 wpalMutexAcquire(&pWDICtx->wptMutex);
8329
8330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8334 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8335 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008336
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 {
8339#ifdef WLAN_FEATURE_VOWIFI_11R
8340 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 if ( NULL == pBSSSes )
8345 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008346
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8348 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008349
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008353
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8356 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008358
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8362#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 * Request in case of IBSS*/
8365 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8366 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8367 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8368 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8369 {
8370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 if ( NULL == pBSSSes )
8375 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008376
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8378 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008379
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008383
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8386 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008388
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8392 }
8393 else
8394 {
8395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8397 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8398 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8399
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 /* for IBSS testing */
8401 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 }
8404#endif
8405 }
8406
8407 /*------------------------------------------------------------------------
8408 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 ------------------------------------------------------------------------*/
8411 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8412 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8414 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8415 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8416 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008419
8420 wpalMutexRelease(&pWDICtx->wptMutex);
8421
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 }
8424
8425 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8427 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 sizeof(pWDICtx->wdiCachedConfigBssReq));
8429
8430 wpalMutexRelease(&pWDICtx->wptMutex);
8431
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8433#ifdef WLAN_FEATURE_11AC
8434 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008435 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 else
8437#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008438 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008439
8440 /*-----------------------------------------------------------------------
8441 Get message buffer
8442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8445 ( usSendSize < (usDataOffset + uMsgSize )))
8446 {
8447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008448 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 }
8453
8454 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008455#ifdef WLAN_FEATURE_11AC
8456 if (WDI_getFwWlanFeatCaps(DOT11AC))
8457 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8458 &pwdiConfigBSSParams->wdiReqInfo);
8459 else
8460#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 &pwdiConfigBSSParams->wdiReqInfo);
8463
8464 /* Need to fill in the STA Index to invalid, since at this point we have not
8465 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
8468 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8470
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008471#ifdef WLAN_FEATURE_11AC
8472 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8473 wpalMemoryCopy( pSendBuffer+usDataOffset,
8474 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8475 uMsgSize);
8476 }else
8477#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008478 {
8479 if ( uMsgSize <= sizeof(tConfigBssParams) )
8480 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008481 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008482 &halConfigBssReqMsg.uBssParams.configBssParams,
8483 uMsgSize);
8484 }
8485 else
8486 {
8487 return WDI_STATUS_E_FAILURE;
8488 }
8489 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008490
8491 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493
8494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8498 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 WDI_CONFIG_BSS_RESP);
8500
8501}/*WDI_ProcessConfigBSSReq*/
8502
8503
8504/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008507
8508 @param pWDICtx: pointer to the WLAN DAL context
8509 pEventData: pointer to the event information structure
8510
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 @see
8512 @return Result of the function call
8513*/
8514WDI_Status
8515WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008516(
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 WDI_ControlBlockType* pWDICtx,
8518 WDI_EventInfoType* pEventData
8519)
8520{
8521 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8522 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 wpt_uint16 usDataOffset = 0;
8527 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008529
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8532
8533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 -------------------------------------------------------------------------*/
8536 if (( NULL == pEventData ) ||
8537 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8538 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8539 {
8540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 }
8545
8546 /*-------------------------------------------------------------------------
8547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 -------------------------------------------------------------------------*/
8550 wpalMutexAcquire(&pWDICtx->wptMutex);
8551
8552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8556 pwdiDelBSSParams->ucBssIdx,
8557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008558
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 {
8561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 "%s: BSS does not yet exist. ucBssIdx %d",
8563 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008564
8565 wpalMutexRelease(&pWDICtx->wptMutex);
8566
8567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008569
8570 /*------------------------------------------------------------------------
8571 Check if this BSS is being currently processed or queued,
8572 if queued - queue the new request as well
8573 ------------------------------------------------------------------------*/
8574 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8577 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8578 __func__, pwdiDelBSSParams->ucBssIdx);
8579
8580 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8581
8582 wpalMutexRelease(&pWDICtx->wptMutex);
8583
8584 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008586
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 /*-----------------------------------------------------------------------
8588 If we receive a Del BSS request for an association that is already in
8589 progress, it indicates that the assoc has failed => we no longer have
8590 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 -----------------------------------------------------------------------*/
8593 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8594 {
8595 /*We can switch to false here because even if a subsequent Join comes in
8596 it will only be processed when DAL transitions out of BUSY state which
8597 happens when the Del BSS request comes */
8598 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8599
8600 /*Former association is complete - prepare next pending assoc for
8601 processing */
8602 WDI_DequeueAssocRequest(pWDICtx);
8603 }
8604
8605 wpalMutexRelease(&pWDICtx->wptMutex);
8606 /*-----------------------------------------------------------------------
8607 Get message buffer
8608 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 sizeof(halBssReqMsg.deleteBssParams),
8611 &pSendBuffer, &usDataOffset, &usSendSize))||
8612 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8613 {
8614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008615 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 }
8620
8621 /*Fill in the message request structure*/
8622
8623 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008624 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008625
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 wpalMemoryCopy( pSendBuffer+usDataOffset,
8627 &halBssReqMsg.deleteBssParams,
8628 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008629
8630 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008632
Jeff Johnsone7245742012-09-05 17:12:55 -07008633
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8639
Jeff Johnsone7245742012-09-05 17:12:55 -07008640
Jeff Johnson295189b2012-06-20 16:38:30 -07008641}/*WDI_ProcessDelBSSReq*/
8642
8643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008646
8647 @param pWDICtx: pointer to the WLAN DAL context
8648 pEventData: pointer to the event information structure
8649
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 @see
8651 @return Result of the function call
8652*/
8653WDI_Status
8654WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008655(
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 WDI_ControlBlockType* pWDICtx,
8657 WDI_EventInfoType* pEventData
8658)
8659{
8660 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8661 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 wpt_uint16 usDataOffset = 0;
8666 wpt_uint16 usSendSize = 0;
8667 wpt_uint16 uMsgSize = 0;
8668 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008670
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8673
8674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 -------------------------------------------------------------------------*/
8677 if (( NULL == pEventData ) ||
8678 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8679 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8680 {
8681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 }
8686
8687 /*-------------------------------------------------------------------------
8688 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 -------------------------------------------------------------------------*/
8691 wpalMutexAcquire(&pWDICtx->wptMutex);
8692
8693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008694 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8697 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8698 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008699
8700 if ( NULL == pBSSSes )
8701 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8703 "%s: Association sequence for this BSS does not yet exist - "
8704 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8705 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008706
8707 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 }
8710
8711 /*------------------------------------------------------------------------
8712 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 ------------------------------------------------------------------------*/
8715 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8716 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8718 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8719 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008720
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008722
8723 wpalMutexRelease(&pWDICtx->wptMutex);
8724
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
8728 /*-----------------------------------------------------------------------
8729 If Post Assoc was not yet received - the current association must
8730 be in progress
8731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8734 {
8735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8736 "Association sequence for this BSS association no longer in "
8737 "progress - not allowed");
8738
8739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 }
8742
8743 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 -----------------------------------------------------------------------*/
8746 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8747 {
8748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8749 "Post Assoc not allowed before JOIN - failing request");
8750
8751 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 }
8754
8755 wpalMutexRelease(&pWDICtx->wptMutex);
8756
8757 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8758 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8759 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8764 ( usSendSize < (usDataOffset + uMsgSize )))
8765 {
8766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008767 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 }
8772
8773 /*Copy the STA parameters */
8774 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8775 &pwdiPostAssocParams->wdiSTAParams );
8776
8777 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 WDI_STATableFindStaidByAddr(pWDICtx,
8780 pwdiPostAssocParams->wdiSTAParams.macSTA,
8781 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8782 {
8783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008784 MAC_ADDRESS_STR
8785 ": This station does not exist in the WDI Station Table",
8786 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008788 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 }
8791
8792 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 pBSSSes->ucBSSIdx;
8795
8796 /*Copy the BSS parameters */
8797 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8798 &pwdiPostAssocParams->wdiBSSParams);
8799
8800 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 WDI_STATableFindStaidByAddr(pWDICtx,
8803 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 {
8806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008807 MAC_ADDRESS_STR
8808 ": This station does not exist in the WDI Station Table",
8809 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008811 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 }
8814
8815 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 pBSSSes->ucBSSIdx;
8818
Jeff Johnsone7245742012-09-05 17:12:55 -07008819
8820 wpalMemoryCopy( pSendBuffer+usDataOffset,
8821 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8822 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
8824 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8825
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8827 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8828 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
Jeff Johnsone7245742012-09-05 17:12:55 -07008830
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833
Jeff Johnsone7245742012-09-05 17:12:55 -07008834
8835 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008838
8839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8844
Jeff Johnsone7245742012-09-05 17:12:55 -07008845
Jeff Johnson295189b2012-06-20 16:38:30 -07008846}/*WDI_ProcessPostAssocReq*/
8847
8848/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008851
8852 @param pWDICtx: pointer to the WLAN DAL context
8853 pEventData: pointer to the event information structure
8854
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 @see
8856 @return Result of the function call
8857*/
8858WDI_Status
8859WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008860(
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 WDI_ControlBlockType* pWDICtx,
8862 WDI_EventInfoType* pEventData
8863)
8864{
8865 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8866 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 wpt_uint16 usDataOffset = 0;
8871 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8874
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8877
8878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 -------------------------------------------------------------------------*/
8881 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8882 ( NULL == pEventData->pCBfnc ))
8883 {
8884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 }
8889
8890 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8891 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8892 /*-------------------------------------------------------------------------
8893 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 -------------------------------------------------------------------------*/
8896 wpalMutexAcquire(&pWDICtx->wptMutex);
8897
8898 /*------------------------------------------------------------------------
8899 Find the BSS for which the request is made and identify WDI session
8900 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8902 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 &macBSSID))
8904 {
8905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008906 "This station does not exist in the WDI Station Table %d",
8907 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 }
8911
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8913 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8916 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8917 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008918
8919 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 }
8922
8923 /*------------------------------------------------------------------------
8924 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 ------------------------------------------------------------------------*/
8927 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8928 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8930 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8931 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008932
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 }
8937
8938 wpalMutexRelease(&pWDICtx->wptMutex);
8939 /*-----------------------------------------------------------------------
8940 Get message buffer
8941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 sizeof(halDelStaReqMsg.delStaParams),
8944 &pSendBuffer, &usDataOffset, &usSendSize))||
8945 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8946 {
8947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008948 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 }
8953
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8955 wpalMemoryCopy( pSendBuffer+usDataOffset,
8956 &halDelStaReqMsg.delStaParams,
8957 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
8959 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008961
8962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8967
8968}/*WDI_ProcessDelSTAReq*/
8969
8970
8971/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008973==========================================================================*/
8974/**
8975 @brief Process Set BSS Key Request function (called when Main FSM
8976 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008977
8978 @param pWDICtx: pointer to the WLAN DAL context
8979 pEventData: pointer to the event information structure
8980
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 @see
8982 @return Result of the function call
8983*/
8984WDI_Status
8985WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008986(
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 WDI_ControlBlockType* pWDICtx,
8988 WDI_EventInfoType* pEventData
8989)
8990{
8991 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8992 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 wpt_uint16 usDataOffset = 0;
8997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9000 wpt_uint8 keyIndex = 0;
9001
9002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9003
9004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 -------------------------------------------------------------------------*/
9007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9008 ( NULL == pEventData->pCBfnc ))
9009 {
9010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 }
9015
9016 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9017 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9018 /*-------------------------------------------------------------------------
9019 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 -------------------------------------------------------------------------*/
9022 wpalMutexAcquire(&pWDICtx->wptMutex);
9023
9024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9028 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9029 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 {
9033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9035 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009036
9037 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 }
9040
9041 /*------------------------------------------------------------------------
9042 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 ------------------------------------------------------------------------*/
9045 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9046 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9048 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9049 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009050
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 }
9055
9056
9057 wpalMutexRelease(&pWDICtx->wptMutex);
9058 /*-----------------------------------------------------------------------
9059 Get message buffer
9060 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9063 &pSendBuffer, &usDataOffset, &usSendSize))||
9064 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9065 {
9066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009067 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 }
9072
9073 /*-----------------------------------------------------------------------
9074 Copy the Key parameters into the HAL message
9075 -----------------------------------------------------------------------*/
9076
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9084
9085 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9086 keyIndex++)
9087 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9090 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9091 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9092 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9093 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
9094 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
9101 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 WDI_MAX_KEY_LENGTH);
9104 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009105
9106 wpalMemoryCopy( pSendBuffer+usDataOffset,
9107 &halSetBssKeyReqMsg.setBssKeyParams,
9108 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009109
9110 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009112
9113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9117 wdiSetBSSKeyRspCb, pEventData->pUserData,
9118 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009119
9120}/*WDI_ProcessSetBssKeyReq*/
9121
9122/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009125
9126 @param pWDICtx: pointer to the WLAN DAL context
9127 pEventData: pointer to the event information structure
9128
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 @see
9130 @return Result of the function call
9131*/
9132WDI_Status
9133WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009134(
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 WDI_ControlBlockType* pWDICtx,
9136 WDI_EventInfoType* pEventData
9137)
9138{
9139 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9140 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 wpt_uint16 usDataOffset = 0;
9145 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9149
9150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -------------------------------------------------------------------------*/
9153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9154 ( NULL == pEventData->pCBfnc ))
9155 {
9156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 }
9161
9162 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9163 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9164 /*-------------------------------------------------------------------------
9165 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 -------------------------------------------------------------------------*/
9168 wpalMutexAcquire(&pWDICtx->wptMutex);
9169
9170 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9174 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9175 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009176
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 {
9179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9181 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009182
9183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 }
9186
9187 /*------------------------------------------------------------------------
9188 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 ------------------------------------------------------------------------*/
9191 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9192 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9194 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9195 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 }
9201
9202
9203 wpalMutexRelease(&pWDICtx->wptMutex);
9204
9205 /*-----------------------------------------------------------------------
9206 Get message buffer
9207 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9210 &pSendBuffer, &usDataOffset, &usSendSize))||
9211 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9212 {
9213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009214 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 }
9219 /*-----------------------------------------------------------------------
9220 Copy the Key parameters into the HAL message
9221 -----------------------------------------------------------------------*/
9222 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9223
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9226
9227 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9228
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 wpalMemoryCopy( pSendBuffer+usDataOffset,
9233 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9234 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009235
9236 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238
9239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009245}/*WDI_ProcessRemoveBssKeyReq*/
9246
9247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009250
9251 @param pWDICtx: pointer to the WLAN DAL context
9252 pEventData: pointer to the event information structure
9253
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 @see
9255 @return Result of the function call
9256*/
9257WDI_Status
9258WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009259(
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 WDI_ControlBlockType* pWDICtx,
9261 WDI_EventInfoType* pEventData
9262)
9263{
9264 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9265 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 wpt_uint16 usDataOffset = 0;
9269 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9274 wpt_uint8 keyIndex = 0;
9275
9276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9277
9278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 -------------------------------------------------------------------------*/
9281 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9282 ( NULL == pEventData->pCBfnc ))
9283 {
9284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 }
9289
9290 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9291 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9292 /*-------------------------------------------------------------------------
9293 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 -------------------------------------------------------------------------*/
9296 wpalMutexAcquire(&pWDICtx->wptMutex);
9297
9298 /*------------------------------------------------------------------------
9299 Find the BSS for which the request is made and identify WDI session
9300 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9302 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 &macBSSID))
9304 {
9305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009306 "This station does not exist in the WDI Station Table %d",
9307 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 }
9311
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9313 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9316 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9317 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009318
9319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009322
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 /*------------------------------------------------------------------------
9324 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 ------------------------------------------------------------------------*/
9327 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9328 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9330 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9331 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
9337
9338
9339 wpalMutexRelease(&pWDICtx->wptMutex);
9340 /*-----------------------------------------------------------------------
9341 Get message buffer
9342 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9345 &pSendBuffer, &usDataOffset, &usSendSize))||
9346 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009349 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 }
9354 /*-----------------------------------------------------------------------
9355 Copy the STA Key parameters into the HAL message
9356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9359
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9362
9363 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9364
9365 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9366
9367 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9368
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9370 keyIndex++)
9371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9374 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9375 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9376 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9377 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9378 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9385 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 WDI_MAX_KEY_LENGTH);
9388 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 wpalMemoryCopy( pSendBuffer+usDataOffset,
9391 &halSetStaKeyReqMsg.setStaKeyParams,
9392 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
9394 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
9397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9401 wdiSetSTAKeyRspCb, pEventData->pUserData,
9402 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009403
9404}/*WDI_ProcessSetSTAKeyReq*/
9405
9406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009409
9410 @param pWDICtx: pointer to the WLAN DAL context
9411 pEventData: pointer to the event information structure
9412
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 @see
9414 @return Result of the function call
9415*/
9416WDI_Status
9417WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009418(
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 WDI_ControlBlockType* pWDICtx,
9420 WDI_EventInfoType* pEventData
9421)
9422{
9423 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9424 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9425 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 wpt_uint16 usDataOffset = 0;
9428 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 wpt_macAddr macBSSID;
9431 wpt_uint8 ucCurrentBSSSesIdx;
9432 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9434
9435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -------------------------------------------------------------------------*/
9438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9439 ( NULL == pEventData->pCBfnc ))
9440 {
9441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 }
9446
9447 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9448 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9449 /*-------------------------------------------------------------------------
9450 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 -------------------------------------------------------------------------*/
9453 wpalMutexAcquire(&pWDICtx->wptMutex);
9454
9455 /*------------------------------------------------------------------------
9456 Find the BSS for which the request is made and identify WDI session
9457 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9459 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 &macBSSID))
9461 {
9462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009463 "This station does not exist in the WDI Station Table %d",
9464 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 }
9468
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9470 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9473 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9474 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475
9476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009479
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 /*------------------------------------------------------------------------
9481 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 ------------------------------------------------------------------------*/
9484 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9485 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9487 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9488 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009489
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 }
9494
9495
9496
9497 wpalMutexRelease(&pWDICtx->wptMutex);
9498 /*-----------------------------------------------------------------------
9499 Get message buffer
9500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9503 &pSendBuffer, &usDataOffset, &usSendSize))||
9504 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9505 {
9506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009507 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 }
9512
9513 /*-----------------------------------------------------------------------
9514 Copy the Key parameters into the HAL message
9515 -----------------------------------------------------------------------*/
9516
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9522
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9525
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 wpalMemoryCopy( pSendBuffer+usDataOffset,
9530 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9531 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
9533 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009534 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009535
9536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009542
9543}/*WDI_ProcessRemoveSTAKeyReq*/
9544
9545/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009548
9549 @param pWDICtx: pointer to the WLAN DAL context
9550 pEventData: pointer to the event information structure
9551
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 @see
9553 @return Result of the function call
9554*/
9555WDI_Status
9556WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009557(
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 WDI_ControlBlockType* pWDICtx,
9559 WDI_EventInfoType* pEventData
9560)
9561{
9562 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9563 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9564 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 wpt_uint16 usDataOffset = 0;
9567 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9572 wpt_uint8 keyIndex = 0;
9573
9574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9575
9576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 -------------------------------------------------------------------------*/
9579 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9580 ( NULL == pEventData->pCBfnc ))
9581 {
9582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 }
9587
9588 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9589 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9590 /*-------------------------------------------------------------------------
9591 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 -------------------------------------------------------------------------*/
9594 wpalMutexAcquire(&pWDICtx->wptMutex);
9595
9596 /*------------------------------------------------------------------------
9597 Find the BSS for which the request is made and identify WDI session
9598 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9600 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 &macBSSID))
9602 {
9603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009604 "This station does not exist in the WDI Station Table %d",
9605 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 }
9609
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9611 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 {
9613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009614 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009616
9617 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009620
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 /*------------------------------------------------------------------------
9622 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009624 ------------------------------------------------------------------------*/
9625 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9626 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9628 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9629 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009630
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 }
9635
9636
9637 wpalMutexRelease(&pWDICtx->wptMutex);
9638 /*-----------------------------------------------------------------------
9639 Get message buffer
9640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9643 &pSendBuffer, &usDataOffset, &usSendSize))||
9644 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9645 {
9646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009647 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652 /*-----------------------------------------------------------------------
9653 Copy the STA Key parameters into the HAL message
9654 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9657
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9660
9661 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9662
9663 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9664
9665 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9666
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9668 keyIndex++)
9669 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9672 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9673 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9674 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9675 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9676 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9683 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 WDI_MAX_KEY_LENGTH);
9686 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009687
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 wpalMemoryCopy( pSendBuffer+usDataOffset,
9689 &halSetStaKeyReqMsg.setStaKeyParams,
9690 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009691
9692 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009694
9695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9699 wdiSetSTAKeyRspCb, pEventData->pUserData,
9700 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009701
9702}/*WDI_ProcessSetSTABcastKeyReq*/
9703
9704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009707
9708 @param pWDICtx: pointer to the WLAN DAL context
9709 pEventData: pointer to the event information structure
9710
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 @see
9712 @return Result of the function call
9713*/
9714WDI_Status
9715WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009716(
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 WDI_ControlBlockType* pWDICtx,
9718 WDI_EventInfoType* pEventData
9719)
9720{
9721 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9722 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9723 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 wpt_uint16 usDataOffset = 0;
9726 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 wpt_macAddr macBSSID;
9729 wpt_uint8 ucCurrentBSSSesIdx;
9730 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9732
9733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 -------------------------------------------------------------------------*/
9736 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9737 ( NULL == pEventData->pCBfnc ))
9738 {
9739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 }
9744
9745 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9746 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9747 /*-------------------------------------------------------------------------
9748 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 -------------------------------------------------------------------------*/
9751 wpalMutexAcquire(&pWDICtx->wptMutex);
9752
9753 /*------------------------------------------------------------------------
9754 Find the BSS for which the request is made and identify WDI session
9755 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9757 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 &macBSSID))
9759 {
9760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009761 "This station does not exist in the WDI Station Table %d",
9762 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9768 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9771 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9772 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009773
9774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009777
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 /*------------------------------------------------------------------------
9779 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 ------------------------------------------------------------------------*/
9782 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9783 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9785 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9786 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009787
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 }
9792
9793
9794
9795 wpalMutexRelease(&pWDICtx->wptMutex);
9796 /*-----------------------------------------------------------------------
9797 Get message buffer
9798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9801 &pSendBuffer, &usDataOffset, &usSendSize))||
9802 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9803 {
9804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009805 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
9810
9811 /*-----------------------------------------------------------------------
9812 Copy the Key parameters into the HAL message
9813 -----------------------------------------------------------------------*/
9814
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9817
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9820
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9823
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9826
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 wpalMemoryCopy( pSendBuffer+usDataOffset,
9828 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9829 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009830
9831 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833
9834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009840
9841}/*WDI_ProcessRemoveSTABcastKeyReq*/
9842
9843/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009845==========================================================================*/
9846/**
9847 @brief Process Add TSpec Request function (called when Main FSM
9848 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009849
9850 @param pWDICtx: pointer to the WLAN DAL context
9851 pEventData: pointer to the event information structure
9852
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 @see
9854 @return Result of the function call
9855*/
9856WDI_Status
9857WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009858(
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_ControlBlockType* pWDICtx,
9860 WDI_EventInfoType* pEventData
9861)
9862{
9863 WDI_AddTSReqParamsType* pwdiAddTSParams;
9864 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 wpt_uint16 usDataOffset = 0;
9869 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 wpt_macAddr macBSSID;
9872 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009873
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9875
9876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 -------------------------------------------------------------------------*/
9879 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9880 ( NULL == pEventData->pCBfnc ))
9881 {
9882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 }
9887
9888 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9889 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9890 /*-------------------------------------------------------------------------
9891 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 -------------------------------------------------------------------------*/
9894 wpalMutexAcquire(&pWDICtx->wptMutex);
9895
9896 /*------------------------------------------------------------------------
9897 Find the BSS for which the request is made and identify WDI session
9898 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9900 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 &macBSSID))
9902 {
9903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009904 "This station does not exist in the WDI Station Table %d",
9905 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 }
9909
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9911 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9914 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9915 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009916
9917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009920
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 /*------------------------------------------------------------------------
9922 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 ------------------------------------------------------------------------*/
9925 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9926 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9928 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9929 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009930
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 }
9935
9936 wpalMutexRelease(&pWDICtx->wptMutex);
9937 /*-----------------------------------------------------------------------
9938 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9942 sizeof(halAddTsParams),
9943 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 &usSendSize))||
9945 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9946 {
9947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009948 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 }
9953
9954 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9955 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9956
9957 //TSPEC IE
9958 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9959 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9990
9991 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10006
10007 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10012
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 wpalMemoryCopy( pSendBuffer+usDataOffset,
10014 &halAddTsParams,
10015 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010016
10017 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
10020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010026}/*WDI_ProcessAddTSpecReq*/
10027
10028
10029/**
10030 @brief Process Del TSpec Request function (called when Main FSM
10031 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010032
10033 @param pWDICtx: pointer to the WLAN DAL context
10034 pEventData: pointer to the event information structure
10035
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 @see
10037 @return Result of the function call
10038*/
10039WDI_Status
10040WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010041(
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 WDI_ControlBlockType* pWDICtx,
10043 WDI_EventInfoType* pEventData
10044)
10045{
10046 WDI_DelTSReqParamsType* pwdiDelTSParams;
10047 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 wpt_uint16 usDataOffset = 0;
10052 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10055
10056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 -------------------------------------------------------------------------*/
10059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10060 ( NULL == pEventData->pCBfnc ))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 }
10067
10068 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10069 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10070
10071 /*-------------------------------------------------------------------------
10072 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010073 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 -------------------------------------------------------------------------*/
10075 wpalMutexAcquire(&pWDICtx->wptMutex);
10076
10077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10081 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10082 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010083
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10087 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10088 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10089
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 }
10093
10094 /*------------------------------------------------------------------------
10095 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 ------------------------------------------------------------------------*/
10098 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10101 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10102 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010103
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 }
10108
10109
10110 wpalMutexRelease(&pWDICtx->wptMutex);
10111 /*-----------------------------------------------------------------------
10112 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10117 &pSendBuffer, &usDataOffset, &usSendSize))||
10118 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10119 {
10120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010121 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 }
10126
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 wpalMemoryCopy( pSendBuffer+usDataOffset,
10128 &pwdiDelTSParams->wdiDelTSInfo,
10129 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010130
10131 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010133
10134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10138 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010139}/*WDI_ProcessDelTSpecReq*/
10140
10141/**
10142 @brief Process Update EDCA Params Request function (called when
10143 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010144
10145 @param pWDICtx: pointer to the WLAN DAL context
10146 pEventData: pointer to the event information structure
10147
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 @see
10149 @return Result of the function call
10150*/
10151WDI_Status
10152WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010153(
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 WDI_ControlBlockType* pWDICtx,
10155 WDI_EventInfoType* pEventData
10156)
10157{
10158 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10159 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 wpt_uint16 usDataOffset = 0;
10164 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10167
10168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 -------------------------------------------------------------------------*/
10171 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10172 ( NULL == pEventData->pCBfnc ))
10173 {
10174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 }
10179
10180 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10181 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10182 /*-------------------------------------------------------------------------
10183 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 -------------------------------------------------------------------------*/
10186 wpalMutexAcquire(&pWDICtx->wptMutex);
10187
10188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10192 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10193 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010194
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 {
10197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10199 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 }
10204
10205 /*------------------------------------------------------------------------
10206 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 ------------------------------------------------------------------------*/
10209 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10210 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10212 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10213 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010214
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 }
10219
10220
10221 wpalMutexRelease(&pWDICtx->wptMutex);
10222 /*-----------------------------------------------------------------------
10223 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10228 &pSendBuffer, &usDataOffset, &usSendSize))||
10229 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10230 {
10231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010232 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 }
10237
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 wpalMemoryCopy( pSendBuffer+usDataOffset,
10239 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10240 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010241
10242 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244
10245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10249 wdiUpdateEDCARspCb, pEventData->pUserData,
10250 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010251}/*WDI_ProcessUpdateEDCAParamsReq*/
10252
10253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010256
10257 @param pWDICtx: pointer to the WLAN DAL context
10258 pEventData: pointer to the event information structure
10259
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 @see
10261 @return Result of the function call
10262*/
10263WDI_Status
10264WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010265(
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ControlBlockType* pWDICtx,
10267 WDI_EventInfoType* pEventData
10268)
10269{
10270 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10271 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 wpt_uint16 usDataOffset = 0;
10276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 wpt_macAddr macBSSID;
10279
10280 tAddBASessionReqMsg halAddBASessionReq;
10281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10282
10283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 -------------------------------------------------------------------------*/
10286 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10287 ( NULL == pEventData->pCBfnc ))
10288 {
10289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 }
10294
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10299 /*-------------------------------------------------------------------------
10300 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 -------------------------------------------------------------------------*/
10303 wpalMutexAcquire(&pWDICtx->wptMutex);
10304
10305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10309 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 &macBSSID))
10311 {
10312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010313 "This station does not exist in the WDI Station Table %d",
10314 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 }
10318
10319
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010321
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10326 __func__, MAC_ADDR_ARRAY(macBSSID));
10327
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 }
10331
10332 /*------------------------------------------------------------------------
10333 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 ------------------------------------------------------------------------*/
10336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10340 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010341
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
10346
10347
10348 wpalMutexRelease(&pWDICtx->wptMutex);
10349 /*-----------------------------------------------------------------------
10350 Get message buffer
10351 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10353 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 sizeof(halAddBASessionReq.addBASessionParams),
10355 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10358 {
10359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010360 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 }
10365
10366 halAddBASessionReq.addBASessionParams.staIdx =
10367 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10368 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10369 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10370 WDI_MAC_ADDR_LEN);
10371 halAddBASessionReq.addBASessionParams.baTID =
10372 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10373 halAddBASessionReq.addBASessionParams.baPolicy =
10374 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10375 halAddBASessionReq.addBASessionParams.baBufferSize =
10376 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10377 halAddBASessionReq.addBASessionParams.baTimeout =
10378 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10379 halAddBASessionReq.addBASessionParams.baSSN =
10380 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10381 halAddBASessionReq.addBASessionParams.baDirection =
10382 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10383
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 wpalMemoryCopy( pSendBuffer+usDataOffset,
10385 &halAddBASessionReq.addBASessionParams,
10386 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010387
10388 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010390
10391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10395 wdiAddBASessionRspCb, pEventData->pUserData,
10396 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010397}/*WDI_ProcessAddBASessionReq*/
10398
10399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010402
10403 @param pWDICtx: pointer to the WLAN DAL context
10404 pEventData: pointer to the event information structure
10405
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 @see
10407 @return Result of the function call
10408*/
10409WDI_Status
10410WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010411(
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 WDI_ControlBlockType* pWDICtx,
10413 WDI_EventInfoType* pEventData
10414)
10415{
10416 WDI_DelBAReqParamsType* pwdiDelBAParams;
10417 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 wpt_uint16 usDataOffset = 0;
10422 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 wpt_macAddr macBSSID;
10425 tDelBAParams halDelBAparam;
10426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10427
10428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 -------------------------------------------------------------------------*/
10431 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10432 ( NULL == pEventData->pCBfnc ))
10433 {
10434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 }
10439
10440 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10441 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10442 /*-------------------------------------------------------------------------
10443 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 -------------------------------------------------------------------------*/
10446 wpalMutexAcquire(&pWDICtx->wptMutex);
10447
10448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10452 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 &macBSSID))
10454 {
10455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010456 "This station does not exist in the WDI Station Table %d",
10457 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010458 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 }
10461
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010463
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10467 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10468 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010469
10470 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 }
10473
10474 /*------------------------------------------------------------------------
10475 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 ------------------------------------------------------------------------*/
10478 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10479 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10481 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10482 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010483
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
10489 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 sizeof(halDelBAparam),
10492 &pSendBuffer, &usDataOffset, &usSendSize))||
10493 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10494 {
10495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010496 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 }
10501
10502 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10503 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10504 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10505
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 wpalMemoryCopy( pSendBuffer+usDataOffset,
10507 &halDelBAparam,
10508 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010509
10510 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010512
10513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10517 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010518}/*WDI_ProcessDelBAReq*/
10519
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010520#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010521
10522WDI_Status
10523WDI_ProcessTSMStatsReq
10524(
10525 WDI_ControlBlockType* pWDICtx,
10526 WDI_EventInfoType* pEventData
10527)
10528{
10529 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10530 WDI_TsmRspCb wdiTSMRspCb;
10531 wpt_uint8 ucCurrentBSSSesIdx = 0;
10532 WDI_BSSSessionType* pBSSSes = NULL;
10533 wpt_uint8* pSendBuffer = NULL;
10534 wpt_uint16 usDataOffset = 0;
10535 wpt_uint16 usSendSize = 0;
10536 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10537 tTsmStatsParams halTsmStatsReqParams = {0};
10538
10539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10540
10541 /*-------------------------------------------------------------------------
10542 Sanity check
10543 -------------------------------------------------------------------------*/
10544 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10545 ( NULL == pEventData->pCBfnc ))
10546 {
10547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 WDI_ASSERT(0);
10550 return WDI_STATUS_E_FAILURE;
10551 }
10552
10553 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10554 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10555 /*-------------------------------------------------------------------------
10556 Check to see if we are in the middle of an association, if so queue, if
10557 not it means it is free to process request
10558 -------------------------------------------------------------------------*/
10559 wpalMutexAcquire(&pWDICtx->wptMutex);
10560
10561 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10562 if ( NULL == pBSSSes )
10563 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10565 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10566 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010567
10568 wpalMutexRelease(&pWDICtx->wptMutex);
10569 return WDI_STATUS_E_NOT_ALLOWED;
10570 }
10571
10572 /*------------------------------------------------------------------------
10573 Check if this BSS is being currently processed or queued,
10574 if queued - queue the new request as well
10575 ------------------------------------------------------------------------*/
10576 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010579 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
10582 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10583 wpalMutexRelease(&pWDICtx->wptMutex);
10584 return wdiStatus;
10585 }
10586
10587 wpalMutexRelease(&pWDICtx->wptMutex);
10588 /*-----------------------------------------------------------------------
10589 Get message buffer
10590 ! TO DO : proper conversion into the HAL Message Request Format
10591 -----------------------------------------------------------------------*/
10592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10593 sizeof(halTsmStatsReqParams),
10594 &pSendBuffer, &usDataOffset, &usSendSize))||
10595 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10596 {
10597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010598 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 pEventData, pwdiTSMParams, wdiTSMRspCb);
10600 WDI_ASSERT(0);
10601 return WDI_STATUS_E_FAILURE;
10602 }
10603
10604 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10605 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10606 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10607 WDI_MAC_ADDR_LEN);
10608 wpalMemoryCopy( pSendBuffer+usDataOffset,
10609 &halTsmStatsReqParams,
10610 sizeof(halTsmStatsReqParams));
10611
10612 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10613 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10614
10615 /*-------------------------------------------------------------------------
10616 Send TSM Stats Request to HAL
10617 -------------------------------------------------------------------------*/
10618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10619 wdiTSMRspCb, pEventData->pUserData,
10620 WDI_TSM_STATS_RESP);
10621}/*WDI_ProcessTSMStatsReq*/
10622
10623#endif
10624
10625
10626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010629
10630 @param pWDICtx: pointer to the WLAN DAL context
10631 pEventData: pointer to the event information structure
10632
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 @see
10634 @return Result of the function call
10635*/
10636WDI_Status
10637WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010638(
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 WDI_ControlBlockType* pWDICtx,
10640 WDI_EventInfoType* pEventData
10641)
10642{
10643 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10644 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 wpt_uint16 usDataOffset = 0;
10647 wpt_uint16 usSendSize = 0;
10648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10649
10650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
10653 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10654 ( NULL == pEventData->pCBfnc ))
10655 {
10656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 }
10661
10662 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10663 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10664 /*-----------------------------------------------------------------------
10665 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10670 &pSendBuffer, &usDataOffset, &usSendSize))||
10671 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10672 {
10673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010674 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 }
10679
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 wpalMemoryCopy( pSendBuffer+usDataOffset,
10681 &pwdiFlushAcParams->wdiFlushAcInfo,
10682 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010683
10684 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010686
10687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10691 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692}/*WDI_ProcessFlushAcReq*/
10693
10694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010697
10698 @param pWDICtx: pointer to the WLAN DAL context
10699 pEventData: pointer to the event information structure
10700
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 @see
10702 @return Result of the function call
10703*/
10704WDI_Status
10705WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010706(
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 WDI_ControlBlockType* pWDICtx,
10708 WDI_EventInfoType* pEventData
10709)
10710{
10711 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10712 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 wpt_uint16 usDataOffset = 0;
10715 wpt_uint16 usSendSize = 0;
10716
10717 tBtAmpEventMsg haltBtAmpEventMsg;
10718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10719
10720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 -------------------------------------------------------------------------*/
10723 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10724 ( NULL == pEventData->pCBfnc ))
10725 {
10726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 }
10731
10732 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10733 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10734 /*-----------------------------------------------------------------------
10735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10740 &pSendBuffer, &usDataOffset, &usSendSize))||
10741 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10742 {
10743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010744 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 }
10749
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 wpalMemoryCopy( pSendBuffer+usDataOffset,
10753 &haltBtAmpEventMsg.btAmpEventParams,
10754 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010755
10756 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010758
10759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10763 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010764}/*WDI_ProcessBtAmpEventReq*/
10765
10766/**
10767 @brief Process Add STA self Request function (called when Main FSM
10768 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010769
10770 @param pWDICtx: pointer to the WLAN DAL context
10771 pEventData: pointer to the event information structure
10772
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 @see
10774 @return Result of the function call
10775*/
10776WDI_Status
10777WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010778(
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 WDI_ControlBlockType* pWDICtx,
10780 WDI_EventInfoType* pEventData
10781)
10782{
10783 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10784 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 wpt_uint16 usDataOffset = 0;
10787 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010788 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10790
10791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 -------------------------------------------------------------------------*/
10794 if (( NULL == pEventData ) ||
10795 ( NULL == pEventData->pEventData) ||
10796 ( NULL == pEventData->pCBfnc))
10797 {
10798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 }
10803
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10808 /*-----------------------------------------------------------------------
10809 Get message buffer
10810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10812 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010813 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010815 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 {
10817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010818 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 }
10823
10824 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10827
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010829 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10830 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10831 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10832 {
10833 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10834 }
10835 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10836 VOS_P2P_CLIENT_MODE) ||
10837 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10838 VOS_P2P_DEVICE))
10839 {
10840 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010843 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010844
10845 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010847
10848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10852 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10853 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010854}/*WDI_ProcessAddSTASelfReq*/
10855
10856
10857
10858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010861
10862 @param pWDICtx: pointer to the WLAN DAL context
10863 pEventData: pointer to the event information structure
10864
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 @see
10866 @return Result of the function call
10867*/
10868WDI_Status
10869WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010870(
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 WDI_ControlBlockType* pWDICtx,
10872 WDI_EventInfoType* pEventData
10873)
10874{
10875 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10876 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 wpt_uint16 usDataOffset = 0;
10879 wpt_uint16 usSendSize = 0;
10880 tDelStaSelfParams halSetDelSelfSTAParams;
10881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10882
10883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 -------------------------------------------------------------------------*/
10886 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10887 ( NULL == pEventData->pCBfnc ))
10888 {
10889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 }
10894
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10897 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10898
10899 /*-----------------------------------------------------------------------
10900 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010901 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10905 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10908 {
10909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010910 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10918
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10920 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010921
10922 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010924
10925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10929 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 WDI_DEL_STA_SELF_RESP);
10931
10932}
10933
Jeff Johnsone7245742012-09-05 17:12:55 -070010934#ifdef FEATURE_OEM_DATA_SUPPORT
10935/**
10936 @brief Process Start Oem Data Request function (called when Main
10937 FSM allows it)
10938
10939 @param pWDICtx: pointer to the WLAN DAL context
10940 pEventData: pointer to the event information structure
10941
10942 @see
10943 @return Result of the function call
10944*/
10945WDI_Status
10946WDI_ProcessStartOemDataReq
10947(
10948 WDI_ControlBlockType* pWDICtx,
10949 WDI_EventInfoType* pEventData
10950)
10951{
10952 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10953 WDI_oemDataRspCb wdiOemDataRspCb;
10954 wpt_uint8* pSendBuffer = NULL;
10955 wpt_uint16 usDataOffset = 0;
10956 wpt_uint16 usSendSize = 0;
10957 wpt_uint16 reqLen;
10958 tStartOemDataReqParams* halStartOemDataReqParams;
10959
10960 /*-------------------------------------------------------------------------
10961 Sanity check
10962 -------------------------------------------------------------------------*/
10963 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10964 ( NULL == pEventData->pCBfnc ))
10965 {
10966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010967 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 WDI_ASSERT(0);
10969 return WDI_STATUS_E_FAILURE;
10970 }
10971
10972 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10973 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10974
10975 /*-----------------------------------------------------------------------
10976 Get message buffer
10977 -----------------------------------------------------------------------*/
10978
10979 reqLen = sizeof(tStartOemDataReqParams);
10980
10981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10982 WDI_START_OEM_DATA_REQ, reqLen,
10983 &pSendBuffer, &usDataOffset, &usSendSize))||
10984 (usSendSize < (usDataOffset + reqLen)))
10985 {
10986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010987 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10989 WDI_ASSERT(0);
10990 return WDI_STATUS_E_FAILURE;
10991 }
10992
10993 //copying WDI OEM DATA REQ PARAMS to shared memory
10994 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10995
10996 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10997 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10998
10999 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11000 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11001
11002 /*-------------------------------------------------------------------------
11003 Send Start Request to HAL
11004 -------------------------------------------------------------------------*/
11005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11006 wdiOemDataRspCb, pEventData->pUserData,
11007 WDI_START_OEM_DATA_RESP);
11008}/*WDI_ProcessStartOemDataReq*/
11009#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011010
11011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011012 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011014
11015 @param pWDICtx: pointer to the WLAN DAL context
11016 pEventData: pointer to the event information structure
11017
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 @see
11019 @return Result of the function call
11020*/
11021WDI_Status
11022WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011023(
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 WDI_ControlBlockType* pWDICtx,
11025 WDI_EventInfoType* pEventData
11026)
11027{
11028 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11029 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011030 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 wpt_uint16 usDataOffset = 0;
11032 wpt_uint16 usSendSize = 0;
11033 tHalWlanHostResumeReqParam halResumeReqParams;
11034
11035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11036
11037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 -------------------------------------------------------------------------*/
11040 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11041 ( NULL == pEventData->pCBfnc ))
11042 {
11043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011044 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 }
11048
11049 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11050 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11051
11052 /*-----------------------------------------------------------------------
11053 Get message buffer
11054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11057 &pSendBuffer, &usDataOffset, &usSendSize))||
11058 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11059 {
11060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011061 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 }
11066
Jeff Johnsone7245742012-09-05 17:12:55 -070011067 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011069
11070 wpalMemoryCopy( pSendBuffer+usDataOffset,
11071 &halResumeReqParams,
11072 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011073
11074 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011076
11077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11081 wdiHostResumeRspCb, pEventData->pUserData,
11082 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011083}/*WDI_ProcessHostResumeReq*/
11084
11085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011088
11089 @param pWDICtx: pointer to the WLAN DAL context
11090 pEventData: pointer to the event information structure
11091
Jeff Johnson295189b2012-06-20 16:38:30 -070011092 @see
11093 @return Result of the function call
11094*/
11095WDI_Status
11096WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011097(
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 WDI_ControlBlockType* pWDICtx,
11099 WDI_EventInfoType* pEventData
11100)
11101{
11102 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11103 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 wpt_uint16 usDataOffset = 0;
11106 wpt_uint16 usSendSize = 0;
11107 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11109
11110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 -------------------------------------------------------------------------*/
11113 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11114 ( NULL == pEventData->pCBfnc ))
11115 {
11116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011117 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 }
11121
11122 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11123 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011124
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 /*-----------------------------------------------------------------------
11126 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 sizeof(halTxPerTrackingReqParam),
11131 &pSendBuffer, &usDataOffset, &usSendSize))||
11132 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11133 {
11134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011135 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011140
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11142 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11143 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11144 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011145
11146 wpalMemoryCopy( pSendBuffer+usDataOffset,
11147 &halTxPerTrackingReqParam,
11148 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011149
11150 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011152
11153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11157 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011158}/*WDI_ProcessSetTxPerTrackingReq*/
11159
11160/*=========================================================================
11161 Indications
11162=========================================================================*/
11163
11164/**
11165 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011166
11167 @param pWDICtx: pointer to the WLAN DAL context
11168 pEventData: pointer to the event information structure
11169
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 @see
11171 @return Result of the function call
11172*/
11173WDI_Status
11174WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011175(
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 WDI_ControlBlockType* pWDICtx,
11177 WDI_EventInfoType* pEventData
11178)
11179{
11180 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011182 wpt_uint16 usDataOffset = 0;
11183 wpt_uint16 usSendSize = 0;
11184 WDI_Status wdiStatus;
11185 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11187
11188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 -------------------------------------------------------------------------*/
11191 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11192 {
11193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011194 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011197 }
11198
11199 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11200
11201 /*-----------------------------------------------------------------------
11202 Get message buffer
11203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11205 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 sizeof(halWlanSuspendIndparams),
11207 &pSendBuffer, &usDataOffset, &usSendSize))||
11208 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11209 {
11210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11211 "Unable to get send buffer in Suspend Ind ");
11212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 }
11215
11216 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11217 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11218
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011220 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011221
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11223 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011224
11225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 -------------------------------------------------------------------------*/
11228 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011230
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11233}/*WDI_ProcessHostSuspendInd*/
11234
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011235
11236
11237/**
11238 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11239
11240 @param pWDICtx: pointer to the WLAN DAL context
11241 pEventData: pointer to the event information structure
11242
11243 @see
11244 @return Result of the function call
11245*/
11246WDI_Status
11247WDI_ProcessTrafficStatsInd
11248(
11249 WDI_ControlBlockType* pWDICtx,
11250 WDI_EventInfoType* pEventData
11251)
11252{
11253 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11254 wpt_uint8* pSendBuffer = NULL;
11255 wpt_uint16 usDataOffset = 0;
11256 wpt_uint16 usSendSize = 0;
11257 WDI_Status wdiStatus;
11258 tStatsClassBIndParams* pStatsClassBIndParams;
11259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11260
11261 /*-------------------------------------------------------------------------
11262 Sanity check
11263 -------------------------------------------------------------------------*/
11264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11265 {
11266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11267 "%s: Invalid parameters in Traffic Stats ind",__func__);
11268 WDI_ASSERT(0);
11269 return WDI_STATUS_E_FAILURE;
11270 }
11271
11272 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11273
11274 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11275 {
11276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11277 "%s: Invalid parameters in Traffic Stats ind",__func__);
11278 WDI_ASSERT(0);
11279 return WDI_STATUS_E_FAILURE;
11280 }
11281
11282 /*-----------------------------------------------------------------------
11283 Get message buffer
11284 -----------------------------------------------------------------------*/
11285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11286 WDI_TRAFFIC_STATS_IND,
11287 sizeof(tStatsClassBIndParams),
11288 &pSendBuffer, &usDataOffset, &usSendSize))||
11289 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11290 {
11291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11292 "Unable to get send buffer in Traffic Stats Ind ");
11293 WDI_ASSERT(0);
11294 return WDI_STATUS_E_FAILURE;
11295 }
11296
11297 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11298
11299 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11300
11301 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11302 pTrafficStatsIndParams->pTrafficStats,
11303 pTrafficStatsIndParams->length);
11304
11305 /*-------------------------------------------------------------------------
11306 Send Suspend Request to HAL
11307 -------------------------------------------------------------------------*/
11308 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11309 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11310
11311 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11312 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11313}/*WDI_ProcessTrafficStatsInd*/
11314
Chet Lanctot186b5732013-03-18 10:26:30 -070011315#ifdef WLAN_FEATURE_11W
11316/**
11317 @brief Process Exclude Unencrypted Indications function (called
11318 when Main FSM allows it)
11319
11320 @param pWDICtx: pointer to the WLAN DAL context
11321 pEventData: pointer to the event information structure
11322
11323 @see
11324 @return Result of the function call
11325*/
11326WDI_Status
11327WDI_ProcessExcludeUnencryptInd
11328(
11329 WDI_ControlBlockType* pWDICtx,
11330 WDI_EventInfoType* pEventData
11331)
11332{
11333 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11334 wpt_uint8* pSendBuffer = NULL;
11335 wpt_uint16 usDataOffset = 0;
11336 wpt_uint16 usSendSize = 0;
11337 WDI_Status wdiStatus;
11338 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11340
11341 /*-------------------------------------------------------------------------
11342 Sanity check
11343 -------------------------------------------------------------------------*/
11344 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11345 {
11346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11347 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11348 WDI_ASSERT(0);
11349 return WDI_STATUS_E_FAILURE;
11350 }
11351
11352 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11353
11354 /*-----------------------------------------------------------------------
11355 Get message buffer
11356 -----------------------------------------------------------------------*/
11357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11358 WDI_EXCLUDE_UNENCRYPTED_IND,
11359 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11360 &pSendBuffer, &usDataOffset, &usSendSize))||
11361 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11362 {
11363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11364 "Unable to get send buffer in Exclude Unencrypted Ind ");
11365 WDI_ASSERT(0);
11366 return WDI_STATUS_E_FAILURE;
11367 }
11368
11369 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11370
11371 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11372
11373 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11374 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11375
11376 /*-------------------------------------------------------------------------
11377 Send Suspend Request to HAL
11378 -------------------------------------------------------------------------*/
11379 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11380 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11381
11382 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11383 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11384}/*WDI_ProcessExcludeUnencryptInd*/
11385#endif
11386
Yue Mab9c86f42013-08-14 15:59:08 -070011387/**
11388 @brief Process Add Periodic Tx Pattern Indication function (called when
11389 Main FSM allows it)
11390
11391 @param pWDICtx: pointer to the WLAN DAL context
11392 pEventData: pointer to the event information structure
11393
11394 @see
11395 @return Result of the function call
11396*/
11397WDI_Status
11398WDI_ProcessAddPeriodicTxPtrnInd
11399(
11400 WDI_ControlBlockType* pWDICtx,
11401 WDI_EventInfoType* pEventData
11402)
11403{
11404 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11405 wpt_uint8* pSendBuffer = NULL;
11406 wpt_uint16 usDataOffset = 0;
11407 wpt_uint16 usSendSize = 0;
11408 WDI_Status wdiStatus;
11409 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11410 wpt_uint8 selfStaIdx = 0;
11411
11412 /*-------------------------------------------------------------------------
11413 Sanity check
11414 -------------------------------------------------------------------------*/
11415 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11416 {
11417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11418 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11419 WDI_ASSERT(0);
11420 return WDI_STATUS_E_FAILURE;
11421 }
11422
11423 pAddPeriodicTxPtrnParams =
11424 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11425
11426 /*------------------------------------------------------------------------
11427 Get message buffer
11428 ------------------------------------------------------------------------*/
11429 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11430 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11431 &pSendBuffer, &usDataOffset, &usSendSize))||
11432 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11433 {
11434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11435 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11436 __func__);
11437 WDI_ASSERT(0);
11438 return WDI_STATUS_E_FAILURE;
11439 }
11440
11441 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11442
11443 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11444 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11445 &selfStaIdx))
11446 {
11447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11448 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011449 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011450
11451 return WDI_STATUS_E_FAILURE;
11452 }
11453
11454 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11455 halAddPeriodicTxPtrn->ucPtrnId =
11456 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11457 halAddPeriodicTxPtrn->usPtrnSize =
11458 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11459 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11460 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11461
11462 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11463 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11464 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11465
11466 /*-------------------------------------------------------------------------
11467 Send Indication to HAL
11468 -------------------------------------------------------------------------*/
11469 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11470 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11471
11472 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11473
11474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11475 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11476
11477 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11478} /* WDI_ProcessAddPeriodicTxPtrnInd */
11479
11480/**
11481 @brief Process Delete Periodic Tx Pattern Indication function (called when
11482 Main FSM allows it)
11483
11484 @param pWDICtx: pointer to the WLAN DAL context
11485 pEventData: pointer to the event information structure
11486
11487 @see
11488 @return Result of the function call
11489*/
11490WDI_Status
11491WDI_ProcessDelPeriodicTxPtrnInd
11492(
11493 WDI_ControlBlockType* pWDICtx,
11494 WDI_EventInfoType* pEventData
11495)
11496{
11497 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11498 wpt_uint8* pSendBuffer = NULL;
11499 wpt_uint16 usDataOffset = 0;
11500 wpt_uint16 usSendSize = 0;
11501 WDI_Status wdiStatus;
11502 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11503 wpt_uint8 selfStaIdx = 0;
11504
11505 /*-------------------------------------------------------------------------
11506 Sanity check
11507 -------------------------------------------------------------------------*/
11508 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11509 {
11510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11511 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11512 WDI_ASSERT(0);
11513 return WDI_STATUS_E_FAILURE;
11514 }
11515
11516 pDelPeriodicTxPtrnParams =
11517 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11518
11519 /*------------------------------------------------------------------------
11520 Get message buffer
11521 ------------------------------------------------------------------------*/
11522 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11523 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11524 &pSendBuffer, &usDataOffset, &usSendSize))||
11525 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11526 {
11527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11528 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11529 __func__);
11530 WDI_ASSERT(0);
11531 return WDI_STATUS_E_FAILURE;
11532 }
11533
11534 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11535
11536 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11537 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11538 &selfStaIdx))
11539 {
11540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11541 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011542 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011543
11544 return WDI_STATUS_E_FAILURE;
11545 }
11546
11547 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11548 halDelPeriodicTxPtrn->uPatternIdBitmap =
11549 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11550
11551 /*-------------------------------------------------------------------------
11552 Send Indication to HAL
11553 -------------------------------------------------------------------------*/
11554 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11555 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11556
11557 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11558
11559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11560 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11561
11562 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11563} /* WDI_ProcessDelPeriodicTxPtrnInd */
11564
Jeff Johnson295189b2012-06-20 16:38:30 -070011565/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011567==========================================================================*/
11568/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011571
11572 @param pWDICtx: pointer to the WLAN DAL context
11573 pEventData: pointer to the event information structure
11574
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 @see
11576 @return Result of the function call
11577*/
11578WDI_Status
11579WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011580(
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 WDI_ControlBlockType* pWDICtx,
11582 WDI_EventInfoType* pEventData
11583)
11584{
11585 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11586 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 wpt_uint16 usDataOffset = 0;
11589 wpt_uint16 usSendSize = 0;
11590 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11592
11593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011595 -------------------------------------------------------------------------*/
11596 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11597 ( NULL == pEventData->pCBfnc ))
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604
11605 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11606 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11607 /*-----------------------------------------------------------------------
11608 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 sizeof(halSwitchChannelReq.switchChannelParams),
11613 &pSendBuffer, &usDataOffset, &usSendSize))||
11614 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11615 {
11616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011617 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 }
11622
Jeff Johnsone7245742012-09-05 17:12:55 -070011623 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011625#ifndef WLAN_FEATURE_VOWIFI
11626 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11628#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11631
11632#ifdef WLAN_FEATURE_VOWIFI
11633 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11636 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11637 WDI_MAC_ADDR_LEN);
11638 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11639 pwdiSwitchChParams->wdiChInfo.macBSSId,
11640 WDI_MAC_ADDR_LEN);
11641#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 wpalMemoryCopy( pSendBuffer+usDataOffset,
11643 &halSwitchChannelReq.switchChannelParams,
11644 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011645
11646 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011647 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011648
11649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11653 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011654}/*WDI_ProcessChannelSwitchReq*/
11655
11656/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011657 @brief Process Channel Switch Request function (called when
11658 Main FSM allows it)
11659
11660 @param pWDICtx: pointer to the WLAN DAL context
11661 pEventData: pointer to the event information structure
11662
11663 @see
11664 @return Result of the function call
11665*/
11666WDI_Status WDI_ProcessChannelSwitchReq_V1
11667(
11668 WDI_ControlBlockType* pWDICtx,
11669 WDI_EventInfoType* pEventData
11670)
11671{
11672 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11673 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11674 wpt_uint8* pSendBuffer = NULL;
11675 wpt_uint16 usDataOffset = 0;
11676 wpt_uint16 usSendSize = 0;
11677 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11679
11680 /*-------------------------------------------------------------------------
11681 Sanity check
11682 -------------------------------------------------------------------------*/
11683 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11684 ( NULL == pEventData->pCBfnc ))
11685 {
11686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11687 "%s: Invalid parameters", __func__);
11688 WDI_ASSERT(0);
11689 return WDI_STATUS_E_FAILURE;
11690 }
11691
11692 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11693 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11694 /*-----------------------------------------------------------------------
11695 Get message buffer
11696 ! TO DO : proper conversion into the HAL Message Request Format
11697 -----------------------------------------------------------------------*/
11698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11699 WDI_CH_SWITCH_REQ_V1,
11700 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11701 &pSendBuffer, &usDataOffset, &usSendSize))||
11702 ( usSendSize < (usDataOffset +
11703 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11704 {
11705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11706 "Unable to get send buffer in channel switch req %p %p %p",
11707 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11708 WDI_ASSERT(0);
11709 return WDI_STATUS_E_FAILURE;
11710 }
11711
11712 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11713 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11714
11715 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11716 pwdiSwitchChParams->wdiChInfo.ucChannel;
11717#ifndef WLAN_FEATURE_VOWIFI
11718 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11719 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11720#endif
11721 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11722 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11723
11724#ifdef WLAN_FEATURE_VOWIFI
11725 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11726 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11727 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11728 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11729 WDI_MAC_ADDR_LEN);
11730 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11731 pwdiSwitchChParams->wdiChInfo.macBSSId,
11732 WDI_MAC_ADDR_LEN);
11733#endif
11734 wpalMemoryCopy( pSendBuffer+usDataOffset,
11735 &halSwitchChannelReq.switchChannelParams_V1,
11736 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11737
11738 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11739 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11740
11741 /*-------------------------------------------------------------------------
11742 Send Switch Channel Request to HAL
11743 -------------------------------------------------------------------------*/
11744 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11745 wdiSwitchChRspCb, pEventData->pUserData,
11746 WDI_CH_SWITCH_RESP_V1);
11747}/*WDI_ProcessChannelSwitchReq_V1*/
11748
11749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011752
11753 @param pWDICtx: pointer to the WLAN DAL context
11754 pEventData: pointer to the event information structure
11755
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 @see
11757 @return Result of the function call
11758*/
11759WDI_Status
11760WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011761(
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 WDI_ControlBlockType* pWDICtx,
11763 WDI_EventInfoType* pEventData
11764)
11765{
11766 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11767 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 wpt_uint16 usDataOffset = 0;
11772 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 tConfigStaReqMsg halConfigStaReqMsg;
11776 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11778
11779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 -------------------------------------------------------------------------*/
11782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11783 ( NULL == pEventData->pCBfnc ))
11784 {
11785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 }
11790
Abhishek Singh6927fa02014-06-27 17:19:55 +053011791 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11793 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11794 /*-------------------------------------------------------------------------
11795 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 -------------------------------------------------------------------------*/
11798 wpalMutexAcquire(&pWDICtx->wptMutex);
11799
11800 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011801 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011802 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11804 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11805 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011806
Jeff Johnsone7245742012-09-05 17:12:55 -070011807 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011808 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11810 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11811 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011812
11813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 }
11816
11817 /*------------------------------------------------------------------------
11818 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 ------------------------------------------------------------------------*/
11821 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11822 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11824 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11825 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011826
Jeff Johnsone7245742012-09-05 17:12:55 -070011827 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 }
11831
11832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011833
11834 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11835#ifdef WLAN_FEATURE_11AC
11836 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011837 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 else
11839#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011840 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011841
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 /*-----------------------------------------------------------------------
11843 Get message buffer
11844 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11846 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011848 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 {
11850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011851 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 }
11856
11857 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 &pwdiConfigSTAParams->wdiReqInfo);
11860
11861 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11862 {
11863 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 WDI_STATableFindStaidByAddr(pWDICtx,
11866 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 {
11869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011870 MAC_ADDRESS_STR
11871 ": This station does not exist in the WDI Station Table",
11872 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011874 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 }
11877 }
11878 else
11879 {
11880 /* Need to fill in the STA Index to invalid, since at this point we have not
11881 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011882 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 }
11884
11885 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011887
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 wpalMemoryCopy( pSendBuffer+usDataOffset,
11889 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011890 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011891
11892 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011894
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11896 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 sizeof(pWDICtx->wdiCachedConfigStaReq));
11898
11899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11903 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011904}/*WDI_ProcessConfigStaReq*/
11905
11906
11907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011910
11911 @param pWDICtx: pointer to the WLAN DAL context
11912 pEventData: pointer to the event information structure
11913
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 @see
11915 @return Result of the function call
11916*/
11917WDI_Status
11918WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011919(
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 WDI_ControlBlockType* pWDICtx,
11921 WDI_EventInfoType* pEventData
11922)
11923{
11924 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11925 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 wpt_uint16 usDataOffset = 0;
11930 wpt_uint16 usSendSize = 0;
11931 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11934
11935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011937 -------------------------------------------------------------------------*/
11938 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11939 ( NULL == pEventData->pCBfnc ))
11940 {
11941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 }
11946
11947 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11948 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11949 /*-------------------------------------------------------------------------
11950 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 -------------------------------------------------------------------------*/
11953 wpalMutexAcquire(&pWDICtx->wptMutex);
11954
11955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11959 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11960 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011961
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11966 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 }
11968 else
11969 {
11970 /*------------------------------------------------------------------------
11971 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 ------------------------------------------------------------------------*/
11974 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11975 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11977 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11978 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11979
11980 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 }
11984 }
11985 /* If the link is set to enter IDLE - the Session allocated for this BSS
11986 will be deleted on the Set Link State response coming from HAL
11987 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11990
11991 wpalMutexRelease(&pWDICtx->wptMutex);
11992 /*-----------------------------------------------------------------------
11993 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011994 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011996
11997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011998 sizeof(halLinkStateReqMsg),
11999 &pSendBuffer, &usDataOffset, &usSendSize))||
12000 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12001 {
12002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012003 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 }
12008
12009 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12010 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12011
12012 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12013 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12014
Jeff Johnsone7245742012-09-05 17:12:55 -070012015 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12017
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 wpalMemoryCopy( pSendBuffer+usDataOffset,
12019 &halLinkStateReqMsg,
12020 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012021
12022 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012024
12025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12029 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012030}/*WDI_ProcessSetLinkStateReq*/
12031
12032
12033/**
12034 @brief Process Get Stats Request function (called when Main FSM
12035 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012036
12037 @param pWDICtx: pointer to the WLAN DAL context
12038 pEventData: pointer to the event information structure
12039
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 @see
12041 @return Result of the function call
12042*/
12043WDI_Status
12044WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012045(
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 WDI_ControlBlockType* pWDICtx,
12047 WDI_EventInfoType* pEventData
12048)
12049{
12050 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12051 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 wpt_uint16 usDataOffset = 0;
12054 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 WDI_BSSSessionType* pBSSSes = NULL;
12057 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 tHalStatsReqMsg halStatsReqMsg;
12060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12061
12062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 -------------------------------------------------------------------------*/
12065 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12066 ( NULL == pEventData->pCBfnc ) )
12067 {
12068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 }
12073
12074 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12075 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12076
12077 /*-------------------------------------------------------------------------
12078 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 -------------------------------------------------------------------------*/
12081 wpalMutexAcquire(&pWDICtx->wptMutex);
12082
12083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12087 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 &macBSSID))
12089 {
12090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012091 "This station does not exist in the WDI Station Table %d",
12092 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 }
12096
Jeff Johnsone7245742012-09-05 17:12:55 -070012097 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12098 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12101 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12102 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012103
12104 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 }
12107
12108 /*------------------------------------------------------------------------
12109 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 ------------------------------------------------------------------------*/
12112 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12113 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12115 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12116 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012117
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012119 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 }
12122
12123
12124 wpalMutexRelease(&pWDICtx->wptMutex);
12125
12126 /*-----------------------------------------------------------------------
12127 Get message buffer
12128 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 sizeof(halStatsReqMsg.statsReqParams),
12131 &pSendBuffer, &usDataOffset, &usSendSize))||
12132 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12133 {
12134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012135 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 }
12140
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 wpalMemoryCopy( pSendBuffer+usDataOffset,
12146 &halStatsReqMsg.statsReqParams,
12147 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012148
12149 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012151
12152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12156 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012157}/*WDI_ProcessGetStatsReq*/
12158
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012159#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012160/**
12161 @brief Process Get Roam Rssi Request function (called when Main FSM
12162 allows it)
12163
12164 @param pWDICtx: pointer to the WLAN DAL context
12165 pEventData: pointer to the event information structure
12166
12167 @see
12168 @return Result of the function call
12169*/
12170WDI_Status
12171WDI_ProcessGetRoamRssiReq
12172(
12173 WDI_ControlBlockType* pWDICtx,
12174 WDI_EventInfoType* pEventData
12175)
12176{
12177 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12178 WDI_GetStatsRspCb wdiGetStatsRspCb;
12179 wpt_uint8* pSendBuffer = NULL;
12180 wpt_uint16 usDataOffset = 0;
12181 wpt_uint16 usSendSize = 0;
12182 wpt_uint8 ucCurrentBSSSesIdx = 0;
12183 WDI_BSSSessionType* pBSSSes = NULL;
12184 wpt_macAddr macBSSID;
12185 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12186 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12188 /*-------------------------------------------------------------------------
12189 Sanity check
12190 -------------------------------------------------------------------------*/
12191 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12192 ( NULL == pEventData->pCBfnc ) )
12193 {
12194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12195 "%s: Invalid parameters", __func__);
12196 WDI_ASSERT(0);
12197 return WDI_STATUS_E_FAILURE;
12198 }
12199
12200 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12201 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12202
12203 /*-------------------------------------------------------------------------
12204 Check to see if we are in the middle of an association, if so queue, if
12205 not it means it is free to process request
12206 -------------------------------------------------------------------------*/
12207 wpalMutexAcquire(&pWDICtx->wptMutex);
12208
12209 /*------------------------------------------------------------------------
12210 Find the BSS for which the request is made
12211 ------------------------------------------------------------------------*/
12212 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12213 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12214 &macBSSID))
12215 {
12216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012217 "This station does not exist in the WDI Station Table %d",
12218 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012219 wpalMutexRelease(&pWDICtx->wptMutex);
12220 return WDI_STATUS_E_FAILURE;
12221 }
12222
12223 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12224 if ( NULL == pBSSSes )
12225 {
12226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12227 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12228 __func__, MAC_ADDR_ARRAY(macBSSID));
12229
12230 wpalMutexRelease(&pWDICtx->wptMutex);
12231 return WDI_STATUS_E_NOT_ALLOWED;
12232 }
12233
12234 /*------------------------------------------------------------------------
12235 Check if this BSS is being currently processed or queued,
12236 if queued - queue the new request as well
12237 ------------------------------------------------------------------------*/
12238 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12239 {
12240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12241 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12242 __func__, MAC_ADDR_ARRAY(macBSSID));
12243
12244 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12245 wpalMutexRelease(&pWDICtx->wptMutex);
12246 return wdiStatus;
12247 }
12248
12249 wpalMutexRelease(&pWDICtx->wptMutex);
12250
12251 /*-----------------------------------------------------------------------
12252 Get message buffer
12253 -----------------------------------------------------------------------*/
12254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12255 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12256 &pSendBuffer, &usDataOffset, &usSendSize))||
12257 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12258 {
12259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012260 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012261 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12262 WDI_ASSERT(0);
12263 return WDI_STATUS_E_FAILURE;
12264 }
12265
12266 halRssiRoamReqMsg.roamRssiReqParams.staId =
12267 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12268 wpalMemoryCopy( pSendBuffer+usDataOffset,
12269 &halRssiRoamReqMsg.roamRssiReqParams,
12270 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12271
12272 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12273 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12274
12275 /*-------------------------------------------------------------------------
12276 Send Get STA Request to HAL
12277 -------------------------------------------------------------------------*/
12278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12279 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12280}/*WDI_ProcessGetRoamRssiReq*/
12281#endif
12282
Jeff Johnson295189b2012-06-20 16:38:30 -070012283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012286
12287 @param pWDICtx: pointer to the WLAN DAL context
12288 pEventData: pointer to the event information structure
12289
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 @see
12291 @return Result of the function call
12292*/
12293WDI_Status
12294WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012295(
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 WDI_ControlBlockType* pWDICtx,
12297 WDI_EventInfoType* pEventData
12298)
12299{
12300 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12301 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12302
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 wpt_uint16 usDataOffset = 0;
12305 wpt_uint16 usSendSize = 0;
12306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12307
12308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 -------------------------------------------------------------------------*/
12311 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12312 ( NULL == pEventData->pCBfnc))
12313 {
12314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 }
12319
12320 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12321 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12322
12323 /*-----------------------------------------------------------------------
12324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 -----------------------------------------------------------------------*/
12327
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12330 &pSendBuffer, &usDataOffset, &usSendSize))||
12331 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12332 {
12333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012334 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 }
12339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 wpalMemoryCopy( pSendBuffer+usDataOffset,
12341 &pwdiUpdateCfgParams->uConfigBufferLen,
12342 sizeof(wpt_uint32));
12343 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12344 pwdiUpdateCfgParams->pConfigBuffer,
12345 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012346
12347 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012349
12350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 -------------------------------------------------------------------------*/
12353
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12355 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012356
12357}/*WDI_ProcessUpdateCfgReq*/
12358
12359
12360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012361 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012363
12364 @param pWDICtx: pointer to the WLAN DAL context
12365 pEventData: pointer to the event information structure
12366
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 @see
12368 @return Result of the function call
12369*/
12370WDI_Status
12371WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012372(
Jeff Johnson295189b2012-06-20 16:38:30 -070012373 WDI_ControlBlockType* pWDICtx,
12374 WDI_EventInfoType* pEventData
12375)
12376{
12377 WDI_AddBAReqParamsType* pwdiAddBAParams;
12378 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 wpt_uint16 usDataOffset = 0;
12383 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 wpt_macAddr macBSSID;
12386
12387 tAddBAReqMsg halAddBAReq;
12388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12389
12390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 -------------------------------------------------------------------------*/
12393 if (( NULL == pEventData ) ||
12394 ( NULL == pEventData->pEventData) ||
12395 ( NULL == pEventData->pCBfnc ))
12396 {
12397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012398 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 }
12402
12403 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12404 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12405
12406 /*-------------------------------------------------------------------------
12407 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 -------------------------------------------------------------------------*/
12410 wpalMutexAcquire(&pWDICtx->wptMutex);
12411
12412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12416 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 &macBSSID))
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012420 "This station does not exist in the WDI Station Table %d",
12421 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 }
12425
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12427 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12430 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12431 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012432
12433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 }
12436
12437 /*------------------------------------------------------------------------
12438 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012440 ------------------------------------------------------------------------*/
12441 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12442 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12444 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12445 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012446
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 }
12451
12452
12453 wpalMutexRelease(&pWDICtx->wptMutex);
12454 /*-----------------------------------------------------------------------
12455 Get message buffer
12456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 sizeof(halAddBAReq.addBAParams),
12459 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12462 {
12463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012464 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 }
12469
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12472 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12473#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012474 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012475 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12476#endif
12477
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 wpalMemoryCopy( pSendBuffer+usDataOffset,
12479 &halAddBAReq.addBAParams,
12480 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012481
12482 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012484
12485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12489 wdiAddBARspCb, pEventData->pUserData,
12490 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012491}/*WDI_ProcessAddBAReq*/
12492
12493
12494
12495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012498
12499 @param pWDICtx: pointer to the WLAN DAL context
12500 pEventData: pointer to the event information structure
12501
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 @see
12503 @return Result of the function call
12504*/
12505WDI_Status
12506WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012507(
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 WDI_ControlBlockType* pWDICtx,
12509 WDI_EventInfoType* pEventData
12510)
12511{
12512 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12513 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 wpt_uint16 usDataOffset = 0;
12518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 wpt_uint16 index;
12521 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012522
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 tTriggerBAReqMsg halTriggerBAReq;
12524 tTriggerBaReqCandidate* halTriggerBACandidate;
12525 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12527
12528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 -------------------------------------------------------------------------*/
12531 if (( NULL == pEventData ) ||
12532 ( NULL == pEventData->pEventData ) ||
12533 ( NULL == pEventData->pCBfnc ))
12534 {
12535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 }
12540
12541 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12542 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12543 /*-------------------------------------------------------------------------
12544 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 -------------------------------------------------------------------------*/
12547 wpalMutexAcquire(&pWDICtx->wptMutex);
12548
12549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12553 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 &macBSSID))
12555 {
12556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012557 "This station does not exist in the WDI Station Table %d",
12558 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 }
12562
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12564 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12567 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12568 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012569
12570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 }
12573
12574 /*------------------------------------------------------------------------
12575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 ------------------------------------------------------------------------*/
12578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12579 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12581 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12582 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012583
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 }
12588
12589
12590 wpalMutexRelease(&pWDICtx->wptMutex);
12591 /*-----------------------------------------------------------------------
12592 Get message buffer
12593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12595 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12599 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012600 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12604 {
12605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012606 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 }
12611
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12616
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 wpalMemoryCopy( pSendBuffer+usDataOffset,
12618 &halTriggerBAReq.triggerBAParams,
12619 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012620
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12623 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12624 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012625
12626 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 index++)
12628 {
12629 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12630 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12631 halTriggerBACandidate++;
12632 wdiTriggerBACandidate++;
12633 }
12634
12635 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012637
12638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12642 wdiTriggerBARspCb, pEventData->pUserData,
12643 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012644}/*WDI_ProcessTriggerBAReq*/
12645
12646
12647
12648/**
12649 @brief Process Update Beacon Params Request function (called when Main FSM
12650 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012651
12652 @param pWDICtx: pointer to the WLAN DAL context
12653 pEventData: pointer to the event information structure
12654
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 @see
12656 @return Result of the function call
12657*/
12658WDI_Status
12659WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012660(
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 WDI_ControlBlockType* pWDICtx,
12662 WDI_EventInfoType* pEventData
12663)
12664{
12665 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12666 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 wpt_uint16 usDataOffset = 0;
12669 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12672
12673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 -------------------------------------------------------------------------*/
12676 if (( NULL == pEventData ) ||
12677 ( NULL == pEventData->pEventData) ||
12678 ( NULL == pEventData->pCBfnc))
12679 {
12680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012681 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 }
12685
12686 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12687 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12688 /*-----------------------------------------------------------------------
12689 Get message buffer
12690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 sizeof(halUpdateBeaconParams),
12693 &pSendBuffer, &usDataOffset, &usSendSize))||
12694 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12695 {
12696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012697 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 }
12702
12703 /*BSS Index of the BSS*/
12704 halUpdateBeaconParams.bssIdx =
12705 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12706 /*shortPreamble mode. HAL should update all the STA rates when it
12707 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12710 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12713 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012714 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12716
12717 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12730 halUpdateBeaconParams.fRIFSMode =
12731 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12734
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12736 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012737
12738 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012740
12741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12745 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012746}/*WDI_ProcessUpdateBeaconParamsReq*/
12747
12748
12749
12750/**
12751 @brief Process Send Beacon template Request function (called when Main FSM
12752 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012753
12754 @param pWDICtx: pointer to the WLAN DAL context
12755 pEventData: pointer to the event information structure
12756
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 @see
12758 @return Result of the function call
12759*/
12760WDI_Status
12761WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012762(
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 WDI_ControlBlockType* pWDICtx,
12764 WDI_EventInfoType* pEventData
12765)
12766{
12767 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12768 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 wpt_uint16 usDataOffset = 0;
12771 wpt_uint16 usSendSize = 0;
12772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12773
12774 tSendBeaconReqMsg halSendBeaconReq;
12775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 -------------------------------------------------------------------------*/
12778 if (( NULL == pEventData ) ||
12779 ( NULL == pEventData->pEventData ) ||
12780 ( NULL == pEventData->pCBfnc ))
12781 {
12782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 }
12787
12788 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12789 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12790 /*-----------------------------------------------------------------------
12791 Get message buffer
12792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 sizeof(halSendBeaconReq.sendBeaconParam),
12795 &pSendBuffer, &usDataOffset, &usSendSize))||
12796 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12797 {
12798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012799 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
12805 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12806 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12807 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12810 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12811 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12812 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012815 /* usP2PIeOffset should be atleast greater than timIeOffset */
12816 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12817 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12818 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12819 {
12820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12821 "Invalid usP2PIeOffset %hu",
12822 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12823 WDI_ASSERT(0);
12824 return WDI_STATUS_E_FAILURE;
12825 }
12826
Jeff Johnsone7245742012-09-05 17:12:55 -070012827 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012829
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 wpalMemoryCopy( pSendBuffer+usDataOffset,
12831 &halSendBeaconReq.sendBeaconParam,
12832 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012833
12834 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012836
12837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12841 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012842}/*WDI_ProcessSendBeaconParamsReq*/
12843
12844/**
12845 @brief Process Update Beacon Params Request function (called when Main FSM
12846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012847
12848 @param pWDICtx: pointer to the WLAN DAL context
12849 pEventData: pointer to the event information structure
12850
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 @see
12852 @return Result of the function call
12853*/
12854WDI_Status
12855WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012856(
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 WDI_ControlBlockType* pWDICtx,
12858 WDI_EventInfoType* pEventData
12859)
12860{
12861 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12862 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 wpt_uint16 usDataOffset = 0;
12865 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12868
12869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 -------------------------------------------------------------------------*/
12872 if (( NULL == pEventData ) ||
12873 ( NULL == pEventData->pEventData) ||
12874 ( NULL == pEventData->pCBfnc))
12875 {
12876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 }
12881
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12886 /*-----------------------------------------------------------------------
12887 Get message buffer
12888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 sizeof(halUpdateProbeRspTmplParams),
12891 &pSendBuffer, &usDataOffset, &usSendSize))||
12892 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12893 {
12894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900
12901 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 WDI_MAC_ADDR_LEN);
12904
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12907
12908 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12909 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
12912
12913 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12914 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12915 WDI_PROBE_REQ_BITMAP_IE_LEN);
12916
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 wpalMemoryCopy( pSendBuffer+usDataOffset,
12918 &halUpdateProbeRspTmplParams,
12919 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012920
12921 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012923
12924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12928 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12929 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012930}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12931
12932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012935
12936 @param pWDICtx: pointer to the WLAN DAL context
12937 pEventData: pointer to the event information structure
12938
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 @see
12940 @return Result of the function call
12941*/
12942WDI_Status
12943WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012944(
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 WDI_ControlBlockType* pWDICtx,
12946 WDI_EventInfoType* pEventData
12947)
12948{
12949
12950 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12951 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12952
12953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 -------------------------------------------------------------------------*/
12956 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012957 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012958 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12961 {
12962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 }
12967
12968 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12971
12972 /*cache the wdi nv request message here if the the first fragment
12973 * To issue the request to HAL for the next fragment */
12974 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12975 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012976 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12977 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12979
12980 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12981 pWDICtx->pRspCBUserData = pEventData->pUserData;
12982 }
12983
12984 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12985}
12986
12987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012988 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012990
12991 @param pWDICtx: pointer to the WLAN DAL context
12992 pEventData: pointer to the event information structure
12993
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 @see
12995 @return Result of the function call
12996*/
12997WDI_Status WDI_ProcessSetMaxTxPowerReq
12998(
12999 WDI_ControlBlockType* pWDICtx,
13000 WDI_EventInfoType* pEventData
13001)
13002{
13003 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13004 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 wpt_uint16 usDataOffset = 0;
13007 wpt_uint16 usSendSize = 0;
13008 tSetMaxTxPwrReq halSetMaxTxPower;
13009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13010
13011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 -------------------------------------------------------------------------*/
13014 if (( NULL == pEventData ) ||
13015 ( NULL == pEventData->pEventData ) ||
13016 ( NULL == pEventData->pCBfnc ))
13017 {
13018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013024 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013025 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13027
13028 /*-----------------------------------------------------------------------
13029 Get message buffer
13030 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013031if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13033 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013035)))
13036 {
13037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013038 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 }
13043
13044 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13045 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13046 WDI_MAC_ADDR_LEN);
13047
13048 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13049 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13050 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013053
13054 wpalMemoryCopy( pSendBuffer+usDataOffset,
13055 &halSetMaxTxPower.setMaxTxPwrParams,
13056 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013057
13058 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013060
13061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13065 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13066 WDI_SET_MAX_TX_POWER_RESP);
13067
Jeff Johnson295189b2012-06-20 16:38:30 -070013068}
13069
Arif Hussaina5ebce02013-08-09 15:09:58 -070013070/*
13071 @brief Process Set Max Tx Power Per Band Request function (called when Main
13072 FSM allows it)
13073
13074 @param pWDICtx: pointer to the WLAN DAL context
13075 pEventData: pointer to the event information structure
13076
13077 @see
13078 @return Result of the function call
13079*/
13080WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13081(
13082 WDI_ControlBlockType* pWDICtx,
13083 WDI_EventInfoType* pEventData
13084)
13085{
13086 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13087 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13088 wpt_uint8* pSendBuffer = NULL;
13089 wpt_uint16 usDataOffset = 0;
13090 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013091 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013092 WDI_Status rValue = WDI_STATUS_SUCCESS;
13093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13094
13095 /*-------------------------------------------------------------------------
13096 Sanity check
13097 -------------------------------------------------------------------------*/
13098 if (( NULL == pEventData ) ||
13099 ( NULL == pEventData->pEventData ) ||
13100 ( NULL == pEventData->pCBfnc ))
13101 {
13102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13103 "%s: Invalid parameters", __func__);
13104 WDI_ASSERT(0);
13105 return WDI_STATUS_E_FAILURE;
13106 }
13107 pwdiSetMaxTxPowerPerBandParams = \
13108 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13109
13110 wdiSetMaxTxPowerPerBandRspCb = \
13111 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13112
13113 /*-----------------------------------------------------------------------
13114 Get message buffer
13115 -----------------------------------------------------------------------*/
13116
13117 rValue = WDI_GetMessageBuffer(pWDICtx,
13118 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13119 sizeof(tSetMaxTxPwrPerBandParams),
13120 &pSendBuffer, &usDataOffset, &usSendSize);
13121
13122 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13123 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13124 {
13125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13126 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13127 pEventData, pwdiSetMaxTxPowerPerBandParams,
13128 wdiSetMaxTxPowerPerBandRspCb);
13129 WDI_ASSERT(0);
13130 return WDI_STATUS_E_FAILURE;
13131 }
13132
13133
Arif Hussainf8f080c2014-04-03 09:48:36 -070013134 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13135 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013136 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13137
Arif Hussainf8f080c2014-04-03 09:48:36 -070013138 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013139 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13140
13141 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13142 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13143
13144 /*-------------------------------------------------------------------------
13145 Send Set Max Tx Power Per Band Request to HAL
13146 -------------------------------------------------------------------------*/
13147 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13148 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13149 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13150}
13151
schang86c22c42013-03-13 18:41:24 -070013152/**
13153 @brief Process Set Tx Power Request function (called when Main
13154 FSM allows it)
13155
13156 @param pWDICtx: pointer to the WLAN DAL context
13157 pEventData: pointer to the event information structure
13158
13159 @see
13160 @return Result of the function call
13161*/
13162WDI_Status WDI_ProcessSetTxPowerReq
13163(
13164 WDI_ControlBlockType* pWDICtx,
13165 WDI_EventInfoType* pEventData
13166)
13167{
13168 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13169 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13170 wpt_uint8* pSendBuffer = NULL;
13171 wpt_uint16 usDataOffset = 0;
13172 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013173 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13175
13176 /*-------------------------------------------------------------------------
13177 Sanity check
13178 -------------------------------------------------------------------------*/
13179 if (( NULL == pEventData ) ||
13180 ( NULL == pEventData->pEventData ) ||
13181 ( NULL == pEventData->pCBfnc ))
13182 {
13183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13184 "%s: Invalid parameters", __func__);
13185 WDI_ASSERT(0);
13186 return WDI_STATUS_E_FAILURE;
13187 }
13188
13189 pwdiSetTxPowerParams =
13190 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13191 wdiSetTxPowerRspCb =
13192 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13193
13194 /*-----------------------------------------------------------------------
13195 Get message buffer
13196 -----------------------------------------------------------------------*/
13197 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13198 sizeof(tSetTxPwrReqParams),
13199 &pSendBuffer, &usDataOffset, &usSendSize))||
13200 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13201 )))
13202 {
13203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013204 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013205 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13206 WDI_ASSERT(0);
13207 return WDI_STATUS_E_FAILURE;
13208 }
13209
Leo Chang9a43db92013-03-25 17:39:58 -070013210 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13211 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13212 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013213
13214 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13215 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13216
13217 /*-------------------------------------------------------------------------
13218 Send Set Tx Power Request to HAL
13219 -------------------------------------------------------------------------*/
13220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13221 wdiSetTxPowerRspCb, pEventData->pUserData,
13222 WDI_SET_TX_POWER_RESP);
13223}
Jeff Johnson295189b2012-06-20 16:38:30 -070013224
13225/**
13226 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13227 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013228
13229 @param pWDICtx: pointer to the WLAN DAL context
13230 pEventData: pointer to the event information structure
13231
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 @see
13233 @return Result of the function call
13234*/
13235WDI_Status
13236WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013237(
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 WDI_ControlBlockType* pWDICtx,
13239 WDI_EventInfoType* pEventData
13240)
13241{
13242 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13243 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 wpt_uint16 usDataOffset = 0;
13246 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13249
13250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 -------------------------------------------------------------------------*/
13253 if (( NULL == pEventData ) ||
13254 ( NULL == pEventData->pEventData) ||
13255 ( NULL == pEventData->pCBfnc))
13256 {
13257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13267 /*-----------------------------------------------------------------------
13268 Get message buffer
13269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13271 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 sizeof(halSetP2PGONOAParams),
13273 &pSendBuffer, &usDataOffset, &usSendSize))||
13274 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13275 {
13276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013277 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 }
13282
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13287 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13296
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 wpalMemoryCopy( pSendBuffer+usDataOffset,
13298 &halSetP2PGONOAParams,
13299 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013300
13301 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013303
13304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13308 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13309 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013310}/*WDI_ProcessP2PGONOAReq*/
13311
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013312#ifdef FEATURE_WLAN_TDLS
13313
13314/**
13315 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13316 allows it)
13317
13318 @param pWDICtx: pointer to the WLAN DAL context
13319 pEventData: pointer to the event information structure
13320
13321 @see
13322 @return Result of the function call
13323*/
13324WDI_Status
13325WDI_ProcessTdlsLinkEstablishReq
13326(
13327 WDI_ControlBlockType* pWDICtx,
13328 WDI_EventInfoType* pEventData
13329)
13330{
13331 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13332 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13333 wpt_uint8* pSendBuffer = NULL;
13334 wpt_uint16 usDataOffset = 0;
13335 wpt_uint16 usSendSize = 0;
13336
13337 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13339
13340 /*-------------------------------------------------------------------------
13341 Sanity check
13342 -------------------------------------------------------------------------*/
13343 if (( NULL == pEventData ) ||
13344 ( NULL == pEventData->pEventData) ||
13345 ( NULL == pEventData->pCBfnc))
13346 {
13347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13348 "%s: Invalid parameters", __func__);
13349 WDI_ASSERT(0);
13350 return WDI_STATUS_E_FAILURE;
13351 }
13352 pwdiTDLSLinkEstablishReqParams =
13353 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13354 wdiTDLSLinkEstablishReqRspCb =
13355 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13356
13357
13358 /*-----------------------------------------------------------------------
13359 Get message buffer
13360 -----------------------------------------------------------------------*/
13361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13362 WDI_TDLS_LINK_ESTABLISH_REQ,
13363 sizeof(halSetTDLSLinkEstablishParams),
13364 &pSendBuffer, &usDataOffset, &usSendSize))||
13365 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13366 {
13367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013368 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013369 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13370 WDI_ASSERT(0);
13371 return WDI_STATUS_E_FAILURE;
13372 }
13373
13374 halSetTDLSLinkEstablishParams.staIdx =
13375 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13376 halSetTDLSLinkEstablishParams.bIsResponder =
13377 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13378 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13379 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13380 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13381 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13382 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13383 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13384 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13385 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13386 halSetTDLSLinkEstablishParams.aAck = 0;
13387 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13388 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13389 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013390 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13391 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13392
13393 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13394 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13395 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13396 halSetTDLSLinkEstablishParams.validChannelsLen =
13397 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13398
13399 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13400 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13401 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13402 halSetTDLSLinkEstablishParams.validOperClassesLen =
13403 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013404
13405 wpalMemoryCopy( pSendBuffer+usDataOffset,
13406 &halSetTDLSLinkEstablishParams,
13407 sizeof(halSetTDLSLinkEstablishParams));
13408
13409 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13410 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13411
13412 /*-------------------------------------------------------------------------
13413 Send Update Probe Resp Template Request to HAL
13414 -------------------------------------------------------------------------*/
13415 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13416 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13417 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13418 return 0;
13419}/*WDI_ProcessTdlsLinkEstablishReq*/
13420
13421
13422#endif
13423
Jeff Johnson295189b2012-06-20 16:38:30 -070013424
13425
13426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 @param None
13430
13431 @see
13432 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013433*/
13434void
13435WDI_SetPowerStateCb
13436(
13437 wpt_status status,
13438 unsigned int dxePhyAddr,
13439 void *pContext
13440)
13441{
13442 wpt_status wptStatus;
13443 WDI_ControlBlockType *pCB = NULL;
13444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 /*
13446 * Trigger the event to bring the Enter BMPS req function to come
13447 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013448*/
13449 if( NULL != pContext )
13450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 }
13453 else
13454 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 pCB = &gWDICb;
13457 }
Mihir Shetea4306052014-03-25 00:02:54 +053013458
13459 if(eWLAN_PAL_STATUS_SUCCESS == status )
13460 {
13461 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13462 }
13463 else
13464 {
13465 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13466 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 pCB->dxePhyAddr = dxePhyAddr;
13468 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13469 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13470 {
13471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13472 "Failed to set an event");
13473
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 }
13476 return;
13477}
13478
13479
13480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013483
13484 @param pWDICtx: pointer to the WLAN DAL context
13485 pEventData: pointer to the event information structure
13486
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 @see
13488 @return Result of the function call
13489*/
13490WDI_Status
13491WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013492(
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 WDI_ControlBlockType* pWDICtx,
13494 WDI_EventInfoType* pEventData
13495)
13496{
Jeff Johnson43971f52012-07-17 12:26:56 -070013497 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 wpt_uint16 usDataOffset = 0;
13501 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013502 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13504
13505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013508 if ((NULL == pEventData ) ||
13509 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13510 (NULL == (pwdiEnterImpsReqParams =
13511 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013516 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 }
13518
13519 /*-----------------------------------------------------------------------
13520 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 0,
13525 &pSendBuffer, &usDataOffset, &usSendSize))||
13526 ( usSendSize < (usDataOffset )))
13527 {
13528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013529 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 pEventData, wdiEnterImpsRspCb);
13531 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013532 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 }
13534
13535 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013536 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13537 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 {
13539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13540 "WDI Init failed to reset an event");
13541
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013543 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 }
13545
13546 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013547 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13548 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013550 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013551 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013552 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013553 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013554
13555 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013558 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13559 WDI_SET_POWER_STATE_TIMEOUT);
13560 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 {
13562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13563 "WDI Init failed to wait on an event");
13564
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013566 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013567 }
13568
Mihir Shetea4306052014-03-25 00:02:54 +053013569 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13570 {
13571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13572 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13573
13574 goto fail;
13575 }
13576
13577 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13578 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013582 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13583 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013584
13585fail:
13586 // Release the message buffer so we don't leak
13587 wpalMemoryFree(pSendBuffer);
13588
13589failRequest:
13590 //WDA should have failure check to avoid the memory leak
13591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013592}/*WDI_ProcessEnterImpsReq*/
13593
13594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013597
13598 @param pWDICtx: pointer to the WLAN DAL context
13599 pEventData: pointer to the event information structure
13600
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 @see
13602 @return Result of the function call
13603*/
13604WDI_Status
13605WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013606(
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 WDI_ControlBlockType* pWDICtx,
13608 WDI_EventInfoType* pEventData
13609)
13610{
13611 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 wpt_uint16 usDataOffset = 0;
13614 wpt_uint16 usSendSize = 0;
13615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13616
13617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 -------------------------------------------------------------------------*/
13620 if (( NULL == pEventData ) ||
13621 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13622 {
13623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 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 /*-----------------------------------------------------------------------
13630 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 0,
13635 &pSendBuffer, &usDataOffset, &usSendSize))||
13636 ( usSendSize < (usDataOffset )))
13637 {
13638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013639 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 pEventData, wdiExitImpsRspCb);
13641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 }
13644
13645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13649 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013650}/*WDI_ProcessExitImpsReq*/
13651
13652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013655
13656 @param pWDICtx: pointer to the WLAN DAL context
13657 pEventData: pointer to the event information structure
13658
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 @see
13660 @return Result of the function call
13661*/
13662WDI_Status
13663WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013664(
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 WDI_ControlBlockType* pWDICtx,
13666 WDI_EventInfoType* pEventData
13667)
13668{
13669 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13670 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 wpt_uint16 usDataOffset = 0;
13673 wpt_uint16 usSendSize = 0;
13674 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013675 wpt_status wptStatus;
13676
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13678
13679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 -------------------------------------------------------------------------*/
13682 if (( NULL == pEventData ) ||
13683 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13684 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13685 {
13686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013689 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 }
13691
13692 /*-----------------------------------------------------------------------
13693 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 sizeof(enterBmpsReq),
13698 &pSendBuffer, &usDataOffset, &usSendSize))||
13699 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13700 {
13701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013702 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13704 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013705 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 }
13707
13708 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013709 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13710 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 {
13712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13713 "WDI Init failed to reset an event");
13714
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013716 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 }
13718
13719 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013720 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13721 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13722 {
13723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013724 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013725 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013726 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013727 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013728
13729/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013730 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013732 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13733 WDI_SET_POWER_STATE_TIMEOUT);
13734 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 {
13736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13737 "WDI Init failed to wait on an event");
13738
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013740 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 }
13742
13743 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13744
13745 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13746 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13747 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13748 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13749
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013750 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13752 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13753 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13754
13755 wpalMemoryCopy( pSendBuffer+usDataOffset,
13756 &enterBmpsReq,
13757 sizeof(enterBmpsReq));
13758
13759 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013761
13762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13766 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013767
13768fail:
13769 // Release the message buffer so we don't leak
13770 wpalMemoryFree(pSendBuffer);
13771
13772failRequest:
13773 //WDA should have failure check to avoid the memory leak
13774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013775}/*WDI_ProcessEnterBmpsReq*/
13776
13777/**
13778 @brief Process Exit BMPS Request function (called when Main FSM
13779 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013780
13781 @param pWDICtx: pointer to the WLAN DAL context
13782 pEventData: pointer to the event information structure
13783
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 @see
13785 @return Result of the function call
13786*/
13787WDI_Status
13788WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013789(
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 WDI_ControlBlockType* pWDICtx,
13791 WDI_EventInfoType* pEventData
13792)
13793{
13794 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13795 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 wpt_uint16 usDataOffset = 0;
13798 wpt_uint16 usSendSize = 0;
13799 tHalExitBmpsReqParams exitBmpsReq;
13800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13801
13802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 -------------------------------------------------------------------------*/
13805 if (( NULL == pEventData ) ||
13806 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13807 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13808 {
13809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 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
13815 /*-----------------------------------------------------------------------
13816 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 sizeof(exitBmpsReq),
13821 &pSendBuffer, &usDataOffset, &usSendSize))||
13822 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13823 {
13824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013825 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 }
13830 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13831
Jeff Johnsone7245742012-09-05 17:12:55 -070013832 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13833
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 wpalMemoryCopy( pSendBuffer+usDataOffset,
13835 &exitBmpsReq,
13836 sizeof(exitBmpsReq));
13837
13838 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013840
13841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13845 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013846}/*WDI_ProcessExitBmpsReq*/
13847
13848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013851
13852 @param pWDICtx: pointer to the WLAN DAL context
13853 pEventData: pointer to the event information structure
13854
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 @see
13856 @return Result of the function call
13857*/
13858WDI_Status
13859WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013860(
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 WDI_ControlBlockType* pWDICtx,
13862 WDI_EventInfoType* pEventData
13863)
13864{
13865 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13866 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 wpt_uint16 usDataOffset = 0;
13869 wpt_uint16 usSendSize = 0;
13870 tUapsdReqParams enterUapsdReq;
13871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13872
13873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 -------------------------------------------------------------------------*/
13876 if (( NULL == pEventData ) ||
13877 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13878 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13879 {
13880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013882 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 /*-----------------------------------------------------------------------
13887 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 sizeof(enterUapsdReq),
13892 &pSendBuffer, &usDataOffset, &usSendSize))||
13893 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13894 {
13895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013896 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 }
13901
13902 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13903 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13904 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13905 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13906 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13907 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13908 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13909 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013910 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013911
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 wpalMemoryCopy( pSendBuffer+usDataOffset,
13913 &enterUapsdReq,
13914 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013918
13919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13923 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013924}/*WDI_ProcessEnterUapsdReq*/
13925
13926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013929
13930 @param pWDICtx: pointer to the WLAN DAL context
13931 pEventData: pointer to the event information structure
13932
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 @see
13934 @return Result of the function call
13935*/
13936WDI_Status
13937WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013938(
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 WDI_ControlBlockType* pWDICtx,
13940 WDI_EventInfoType* pEventData
13941)
13942{
13943 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 wpt_uint16 usDataOffset = 0;
13946 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013947 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13948 wpt_uint8 bssIdx = 0;
13949
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13951
13952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 -------------------------------------------------------------------------*/
13955 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013956 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 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
13965 /*-----------------------------------------------------------------------
13966 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013970 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013972 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013975 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 pEventData, wdiExitUapsdRspCb);
13977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 }
13980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013981 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13982
13983 wpalMemoryCopy( pSendBuffer+usDataOffset,
13984 &bssIdx,
13985 sizeof(wpt_uint8));
13986
13987 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13988 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13989
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13994 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013995}/*WDI_ProcessExitUapsdReq*/
13996
13997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014000
14001 @param pWDICtx: pointer to the WLAN DAL context
14002 pEventData: pointer to the event information structure
14003
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 @see
14005 @return Result of the function call
14006*/
14007WDI_Status
14008WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014009(
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 WDI_ControlBlockType* pWDICtx,
14011 WDI_EventInfoType* pEventData
14012)
14013{
14014 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14015 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 wpt_uint16 usDataOffset = 0;
14018 wpt_uint16 usSendSize = 0;
14019 tUapsdInfo uapsdAcParamsReq;
14020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14021
14022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 -------------------------------------------------------------------------*/
14025 if (( NULL == pEventData ) ||
14026 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14027 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14028 {
14029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 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 /*-----------------------------------------------------------------------
14036 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 sizeof(uapsdAcParamsReq),
14041 &pSendBuffer, &usDataOffset, &usSendSize))||
14042 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14043 {
14044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014045 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 }
14050
14051 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14052 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14053 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14054 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14055 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14056 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14057
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 wpalMemoryCopy( pSendBuffer+usDataOffset,
14059 &uapsdAcParamsReq,
14060 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014061
14062 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014064
14065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014066 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14069 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014070}/*WDI_ProcessSetUapsdAcParamsReq*/
14071
14072/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014075
14076 @param pWDICtx: pointer to the WLAN DAL context
14077 pEventData: pointer to the event information structure
14078
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 @see
14080 @return Result of the function call
14081*/
14082WDI_Status
14083WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014084(
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 WDI_ControlBlockType* pWDICtx,
14086 WDI_EventInfoType* pEventData
14087)
14088{
14089 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14090 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 wpt_uint16 usDataOffset = 0;
14093 wpt_uint16 usSendSize = 0;
14094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14095
14096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 -------------------------------------------------------------------------*/
14099 if (( NULL == pEventData ) ||
14100 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14101 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14102 {
14103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014105 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
14109 /*-----------------------------------------------------------------------
14110 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14115 &pSendBuffer, &usDataOffset, &usSendSize))||
14116 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14117 {
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014119 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 }
14124
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 wpalMemoryCopy( pSendBuffer+usDataOffset,
14126 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14127 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014128
14129 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014131
14132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014133 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14136 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014137}/*WDI_ProcessUpdateUapsdParamsReq*/
14138
14139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014142
14143 @param pWDICtx: pointer to the WLAN DAL context
14144 pEventData: pointer to the event information structure
14145
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 @see
14147 @return Result of the function call
14148*/
14149WDI_Status
14150WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014151(
Jeff Johnson295189b2012-06-20 16:38:30 -070014152 WDI_ControlBlockType* pWDICtx,
14153 WDI_EventInfoType* pEventData
14154)
14155{
14156 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14157 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014158 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014159 wpt_uint16 usDataOffset = 0;
14160 wpt_uint16 usSendSize = 0;
14161 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14162
14163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14164
14165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 -------------------------------------------------------------------------*/
14168 if (( NULL == pEventData ) ||
14169 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14170 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14171 {
14172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 }
14177
14178 /*-----------------------------------------------------------------------
14179 Get message buffer
14180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 sizeof(halRxpFilterParams),
14183 &pSendBuffer, &usDataOffset, &usSendSize))||
14184 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14185 {
14186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014187 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 }
14192
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14197
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 wpalMemoryCopy( pSendBuffer+usDataOffset,
14199 &halRxpFilterParams,
14200 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014201
14202 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014204
14205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14209 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014210}/*WDI_ProcessConfigureRxpFilterReq*/
14211
14212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014215
14216 @param pWDICtx: pointer to the WLAN DAL context
14217 pEventData: pointer to the event information structure
14218
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 @see
14220 @return Result of the function call
14221*/
14222WDI_Status
14223WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014224(
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 WDI_ControlBlockType* pWDICtx,
14226 WDI_EventInfoType* pEventData
14227)
14228{
14229 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14230 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 wpt_uint16 usDataOffset = 0;
14233 wpt_uint16 usSendSize = 0;
14234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14235
14236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 -------------------------------------------------------------------------*/
14239 if (( NULL == pEventData ) ||
14240 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14241 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14242 {
14243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014245 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
14249 /*-----------------------------------------------------------------------
14250 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14255 &pSendBuffer, &usDataOffset, &usSendSize))||
14256 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14257 {
14258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014259 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 }
14264
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 wpalMemoryCopy( pSendBuffer+usDataOffset,
14266 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14267 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14268 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14269 &pwdiBeaconFilterParams->aFilters[0],
14270 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014271
14272 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014274
14275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14279 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014280}/*WDI_ProcessSetBeaconFilterReq*/
14281
14282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014285
14286 @param pWDICtx: pointer to the WLAN DAL context
14287 pEventData: pointer to the event information structure
14288
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 @see
14290 @return Result of the function call
14291*/
14292WDI_Status
14293WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014294(
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 WDI_ControlBlockType* pWDICtx,
14296 WDI_EventInfoType* pEventData
14297)
14298{
14299 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14300 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 wpt_uint16 usDataOffset = 0;
14303 wpt_uint16 usSendSize = 0;
14304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14305
14306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 -------------------------------------------------------------------------*/
14309 if (( NULL == pEventData ) ||
14310 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14311 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14312 {
14313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 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
14319 /*-----------------------------------------------------------------------
14320 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14325 &pSendBuffer, &usDataOffset, &usSendSize))||
14326 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14327 {
14328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014329 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 }
14334
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 wpalMemoryCopy( pSendBuffer+usDataOffset,
14336 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14337 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014338
14339 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014341
14342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014343 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14346 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014347}
14348
14349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014350 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014352
14353 @param pWDICtx: pointer to the WLAN DAL context
14354 pEventData: pointer to the event information structure
14355
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 @see
14357 @return Result of the function call
14358*/
14359WDI_Status
14360WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014361(
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 WDI_ControlBlockType* pWDICtx,
14363 WDI_EventInfoType* pEventData
14364)
14365{
14366 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14367 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 wpt_uint16 usDataOffset = 0;
14370 wpt_uint16 usSendSize = 0;
14371 tHalRSSIThresholds rssiThresholdsReq;
14372 WDI_Status ret_status = 0;
14373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14374
14375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 -------------------------------------------------------------------------*/
14378 if (( NULL == pEventData ) ||
14379 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14380 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14381 {
14382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 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
14388 /*-----------------------------------------------------------------------
14389 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 sizeof(rssiThresholdsReq),
14394 &pSendBuffer, &usDataOffset, &usSendSize))||
14395 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14396 {
14397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014398 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 }
14403
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014409 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014412 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014413 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14424
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 wpalMemoryCopy( pSendBuffer+usDataOffset,
14426 &rssiThresholdsReq,
14427 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014428
14429 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014431
14432 /*-------------------------------------------------------------------------
14433 Send Set threshold req to HAL
14434 -------------------------------------------------------------------------*/
14435 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14436 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14437 {
14438 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14439 // req. Then as a result of processing the threshold cross ind, we trigger
14440 // a Set threshold req, then we need to indicate to WDI that it needs to
14441 // go to busy state as a result of the indication as we sent a req in the
14442 // same WDI context.
14443 // Hence expected state transition is to busy.
14444 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14445 }
14446
14447 return ret_status;
14448}
14449
14450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014453
14454 @param pWDICtx: pointer to the WLAN DAL context
14455 pEventData: pointer to the event information structure
14456
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 @see
14458 @return Result of the function call
14459*/
14460WDI_Status
14461WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014462(
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 WDI_ControlBlockType* pWDICtx,
14464 WDI_EventInfoType* pEventData
14465)
14466{
14467 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14468 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014469 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 wpt_uint16 usDataOffset = 0;
14471 wpt_uint16 usSendSize = 0;
14472 tHalHostOffloadReq hostOffloadParams;
14473 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014474 wpt_uint8 ucCurrentBSSSesIdx = 0;
14475 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014476
14477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14478
14479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 -------------------------------------------------------------------------*/
14482 if (( NULL == pEventData ) ||
14483 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14484 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14485 {
14486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014489 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 }
14491
14492 /*-----------------------------------------------------------------------
14493 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14498 &pSendBuffer, &usDataOffset, &usSendSize))||
14499 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14500 {
14501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014502 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14504 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014505 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 }
14507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14509 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14510 &pBSSSes);
14511 if ( NULL == pBSSSes )
14512 {
14513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014514 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14515 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014516 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014517 }
14518
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14520 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014521
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14523 {
14524 // ARP Offload
14525 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14526 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14527 4);
14528 }
14529 else
14530 {
14531 // NS Offload
14532 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14533 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14534 16);
14535
14536#ifdef WLAN_NS_OFFLOAD
14537 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14538 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14539 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14540 16);
14541 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14542 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14543 16);
14544 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14545 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14546 16);
14547 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14548 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14549 16);
14550 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14551 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14552 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014553 nsOffloadParams.srcIPv6AddrValid =
14554 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14555
14556 nsOffloadParams.targetIPv6Addr1Valid =
14557 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14558
14559 nsOffloadParams.targetIPv6Addr2Valid =
14560 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14561
14562 nsOffloadParams.slotIndex =
14563 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014564
Jeff Johnson295189b2012-06-20 16:38:30 -070014565#endif // WLAN_NS_OFFLOAD
14566 }
14567
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014568 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14569
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 // copy hostOffloadParams into pSendBuffer
14571 wpalMemoryCopy( pSendBuffer+usDataOffset,
14572 &hostOffloadParams,
14573 sizeof(hostOffloadParams));
14574
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014575 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014577 // copy nsOffloadParams into pSendBuffer
14578 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 &nsOffloadParams,
14580 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014581 }
14582 else
14583 {
14584#ifdef WLAN_NS_OFFLOAD
14585 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14586 {
14587 // copy nsOffloadParams into pSendBuffer
14588 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14589 &nsOffloadParams,
14590 sizeof(nsOffloadParams));
14591 }
14592#endif
14593 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014594
14595 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014597
14598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14602 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014603
14604fail:
14605 // Release the message buffer so we don't leak
14606 wpalMemoryFree(pSendBuffer);
14607
14608failRequest:
14609 //WDA should have failure check to avoid the memory leak
14610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611}/*WDI_ProcessHostOffloadReq*/
14612
14613/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014614 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014616
14617 @param pWDICtx: pointer to the WLAN DAL context
14618 pEventData: pointer to the event information structure
14619
Jeff Johnson295189b2012-06-20 16:38:30 -070014620 @see
14621 @return Result of the function call
14622*/
14623WDI_Status
14624WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014625(
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 WDI_ControlBlockType* pWDICtx,
14627 WDI_EventInfoType* pEventData
14628)
14629{
14630 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14631 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 wpt_uint16 usDataOffset = 0;
14634 wpt_uint16 usSendSize = 0;
14635 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014636 wpt_uint8 ucCurrentBSSSesIdx = 0;
14637 WDI_BSSSessionType* pBSSSes = NULL;
14638
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14640
14641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 -------------------------------------------------------------------------*/
14644 if (( NULL == pEventData ) ||
14645 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14646 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14647 {
14648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14649 "Invalid parameters in Keep Alive req");
14650 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014651 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 }
14653
14654 /*-----------------------------------------------------------------------
14655 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 sizeof(keepAliveReq),
14660 &pSendBuffer, &usDataOffset, &usSendSize))||
14661 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14662 {
14663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014664 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14666 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014667 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014670 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14671 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14672 &pBSSSes);
14673 if ( NULL == pBSSSes )
14674 {
14675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014676 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014677 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014678 }
14679
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14681 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14682
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014683 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014684
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14686 {
14687 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14688 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14689 HAL_IPV4_ADDR_LEN);
14690 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14691 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 wpalMemoryCopy(keepAliveReq.destMacAddr,
14694 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14695 HAL_MAC_ADDR_LEN);
14696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014697
14698 wpalMemoryCopy( pSendBuffer+usDataOffset,
14699 &keepAliveReq,
14700 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014701
14702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014703 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014704
14705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014706 "Process keep alive req time period %d",
14707 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014708
14709 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014711
14712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14713 "Sending keep alive req to HAL");
14714
14715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14719 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014720
14721fail:
14722 // Release the message buffer so we don't leak
14723 wpalMemoryFree(pSendBuffer);
14724
14725failRequest:
14726 //WDA should have failure check to avoid the memory leak
14727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014728}/*WDI_ProcessKeepAliveReq*/
14729
14730
14731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014734
14735 @param pWDICtx: pointer to the WLAN DAL context
14736 pEventData: pointer to the event information structure
14737
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 @see
14739 @return Result of the function call
14740*/
14741WDI_Status
14742WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014743(
Jeff Johnson295189b2012-06-20 16:38:30 -070014744 WDI_ControlBlockType* pWDICtx,
14745 WDI_EventInfoType* pEventData
14746)
14747{
14748 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14749 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 wpt_uint16 usDataOffset = 0;
14752 wpt_uint16 usSendSize = 0;
14753 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014754 wpt_uint8 ucCurrentBSSSesIdx = 0;
14755 WDI_BSSSessionType* pBSSSes = NULL;
14756
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14758
14759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 -------------------------------------------------------------------------*/
14762 if (( NULL == pEventData ) ||
14763 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14764 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14765 {
14766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014769 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 }
14771
14772 /*-----------------------------------------------------------------------
14773 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 sizeof(wowlAddBcPtrnReq),
14778 &pSendBuffer, &usDataOffset, &usSendSize))||
14779 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14780 {
14781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014782 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14784 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014785 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014786 }
14787
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014788 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14789 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14790 &pBSSSes);
14791 if ( NULL == pBSSSes )
14792 {
14793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014794 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014795 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014796 }
14797
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14806
14807 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14808 {
14809 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14810 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14811 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14812 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14813 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14814 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14815 }
14816 else
14817 {
14818 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14819 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14820 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14821 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14822 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14823 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14824
14825 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14826 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14827 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14828 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14829 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14830 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14831 }
14832
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014833 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14834
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 wpalMemoryCopy( pSendBuffer+usDataOffset,
14836 &wowlAddBcPtrnReq,
14837 sizeof(wowlAddBcPtrnReq));
14838
14839 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014841
14842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14846 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014847fail:
14848 // Release the message buffer so we don't leak
14849 wpalMemoryFree(pSendBuffer);
14850
14851failRequest:
14852 //WDA should have failure check to avoid the memory leak
14853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014854}/*WDI_ProcessWowlAddBcPtrnReq*/
14855
14856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014859
14860 @param pWDICtx: pointer to the WLAN DAL context
14861 pEventData: pointer to the event information structure
14862
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 @see
14864 @return Result of the function call
14865*/
14866WDI_Status
14867WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014868(
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 WDI_ControlBlockType* pWDICtx,
14870 WDI_EventInfoType* pEventData
14871)
14872{
14873 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14874 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 wpt_uint16 usDataOffset = 0;
14877 wpt_uint16 usSendSize = 0;
14878 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014879 wpt_uint8 ucCurrentBSSSesIdx = 0;
14880 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14882
14883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 -------------------------------------------------------------------------*/
14886 if (( NULL == pEventData ) ||
14887 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14888 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14889 {
14890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014893 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 }
14895
14896 /*-----------------------------------------------------------------------
14897 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 sizeof(wowlDelBcPtrnReq),
14902 &pSendBuffer, &usDataOffset, &usSendSize))||
14903 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14904 {
14905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014906 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14908 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014909 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 }
14911
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014912 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14913 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14914 &pBSSSes);
14915 if ( NULL == pBSSSes )
14916 {
14917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014918 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014919 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014920 }
14921
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014924
14925 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14926
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 wpalMemoryCopy( pSendBuffer+usDataOffset,
14928 &wowlDelBcPtrnReq,
14929 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014930
14931 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933
14934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14938 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014939
14940fail:
14941 // Release the message buffer so we don't leak
14942 wpalMemoryFree(pSendBuffer);
14943
14944failRequest:
14945 //WDA should have failure check to avoid the memory leak
14946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014947}/*WDI_ProcessWowlDelBcPtrnReq*/
14948
14949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014952
14953 @param pWDICtx: pointer to the WLAN DAL context
14954 pEventData: pointer to the event information structure
14955
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 @see
14957 @return Result of the function call
14958*/
14959WDI_Status
14960WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014961(
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 WDI_ControlBlockType* pWDICtx,
14963 WDI_EventInfoType* pEventData
14964)
14965{
14966 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14967 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 wpt_uint16 usDataOffset = 0;
14970 wpt_uint16 usSendSize = 0;
14971 tHalWowlEnterParams wowlEnterReq;
14972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14973
14974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 -------------------------------------------------------------------------*/
14977 if (( NULL == pEventData ) ||
14978 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14979 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14980 {
14981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 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
14987 /*-----------------------------------------------------------------------
14988 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 sizeof(wowlEnterReq),
14993 &pSendBuffer, &usDataOffset, &usSendSize))||
14994 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14995 {
14996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014997 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 }
15002
Kumar Anandaca924e2013-07-22 14:35:34 -070015003 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15004
Jeff Johnsone7245742012-09-05 17:12:55 -070015005 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015007 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015010 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015011 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015012 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015017 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015018 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15021
15022#ifdef WLAN_WAKEUP_EVENTS
15023 wowlEnterReq.ucWoWEAPIDRequestEnable =
15024 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15025
15026 wowlEnterReq.ucWoWEAPOL4WayEnable =
15027 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15028
15029 wowlEnterReq.ucWowNetScanOffloadMatch =
15030 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15031
15032 wowlEnterReq.ucWowGTKRekeyError =
15033 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15034
15035 wowlEnterReq.ucWoWBSSConnLoss =
15036 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15037#endif // WLAN_WAKEUP_EVENTS
15038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015039 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15040
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15042 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15043 sizeof(tSirMacAddr));
15044
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 wpalMemoryCopy( pSendBuffer+usDataOffset,
15046 &wowlEnterReq,
15047 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015048
15049 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051
15052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15056 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015057}/*WDI_ProcessWowlEnterReq*/
15058
15059/**
15060 @brief Process Wowl exit Request function (called when Main FSM
15061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015062
15063 @param pWDICtx: pointer to the WLAN DAL context
15064 pEventData: pointer to the event information structure
15065
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 @see
15067 @return Result of the function call
15068*/
15069WDI_Status
15070WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015071(
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 WDI_ControlBlockType* pWDICtx,
15073 WDI_EventInfoType* pEventData
15074)
15075{
15076 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015077 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 wpt_uint16 usDataOffset = 0;
15080 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015081 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15083
15084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 -------------------------------------------------------------------------*/
15087 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015088 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15090 {
15091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 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
15097 /*-----------------------------------------------------------------------
15098 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015102 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015104 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015105 {
15106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015107 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 pEventData, wdiWowlExitCb);
15109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 }
15112
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015113 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15114
15115 wpalMemoryCopy( pSendBuffer+usDataOffset,
15116 &wowlExitparams,
15117 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15122 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015123}/*WDI_ProcessWowlExitReq*/
15124
15125/**
15126 @brief Process Configure Apps Cpu Wakeup State Request function
15127 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015128
15129 @param pWDICtx: pointer to the WLAN DAL context
15130 pEventData: pointer to the event information structure
15131
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 @see
15133 @return Result of the function call
15134*/
15135WDI_Status
15136WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015137(
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 WDI_ControlBlockType* pWDICtx,
15139 WDI_EventInfoType* pEventData
15140)
15141{
15142 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15143 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 wpt_uint16 usDataOffset = 0;
15146 wpt_uint16 usSendSize = 0;
15147 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15149
15150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 -------------------------------------------------------------------------*/
15153 if (( NULL == pEventData ) ||
15154 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15155 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15156 {
15157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 }
15162
15163 /*-----------------------------------------------------------------------
15164 Get message buffer
15165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 sizeof(halCfgAppsCpuWakeupStateReqParams),
15168 &pSendBuffer, &usDataOffset, &usSendSize))||
15169 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15170 {
15171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015172 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 }
15177
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15180
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 wpalMemoryCopy( pSendBuffer+usDataOffset,
15182 &halCfgAppsCpuWakeupStateReqParams,
15183 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015184
15185 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015187
15188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015191 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15192 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15193 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015194}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15195
15196#ifdef WLAN_FEATURE_VOWIFI_11R
15197/**
15198 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15199 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
15201 @param pWDICtx: pointer to the WLAN DAL context
15202 pEventData: pointer to the event information structure
15203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 @see
15205 @return Result of the function call
15206*/
15207WDI_Status
15208WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015209(
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 WDI_ControlBlockType* pWDICtx,
15211 WDI_EventInfoType* pEventData
15212)
15213{
15214 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15215 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 wpt_uint16 usDataOffset = 0;
15220 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 wpt_macAddr macBSSID;
15223 tAggrAddTsReq halAggrAddTsReq;
15224 int i;
15225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15226
15227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 -------------------------------------------------------------------------*/
15230 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15231 ( NULL == pEventData->pCBfnc ))
15232 {
15233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 }
15238 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15239 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15240 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15241 /*-------------------------------------------------------------------------
15242 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 -------------------------------------------------------------------------*/
15245 wpalMutexAcquire(&pWDICtx->wptMutex);
15246
15247 /*------------------------------------------------------------------------
15248 Find the BSS for which the request is made and identify WDI session
15249 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15251 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 &macBSSID))
15253 {
15254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015255 "This station does not exist in the WDI Station Table %d",
15256 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 }
15260
Jeff Johnsone7245742012-09-05 17:12:55 -070015261 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15262 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15265 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15266 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015267
15268 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015271
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 /*------------------------------------------------------------------------
15273 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 ------------------------------------------------------------------------*/
15276 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15277 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15279 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15280 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015281
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 }
15286
15287 wpalMutexRelease(&pWDICtx->wptMutex);
15288 /*-----------------------------------------------------------------------
15289 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 sizeof(tAggrAddTsParams),
15294 &pSendBuffer, &usDataOffset, &usSendSize))||
15295 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15296 {
15297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015298 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 }
15303
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15308
15309 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15317 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15320 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015321 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15323 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15326 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15329 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15332 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15335 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15338 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015343
15344
15345 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15375 }
15376
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 wpalMemoryCopy( pSendBuffer+usDataOffset,
15378 &halAggrAddTsReq,
15379 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015380
15381 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015383
15384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015385 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015390}/*WDI_ProcessAggrAddTSpecReq*/
15391#endif /* WLAN_FEATURE_VOWIFI_11R */
15392
15393/**
15394 @brief Process Shutdown Request function (called when Main FSM
15395 allows it)
15396
15397 @param pWDICtx: pointer to the WLAN DAL context
15398 pEventData: pointer to the event information structure
15399
15400 @see
15401 @return Result of the function call
15402*/
15403WDI_Status
15404WDI_ProcessShutdownReq
15405(
15406 WDI_ControlBlockType* pWDICtx,
15407 WDI_EventInfoType* pEventData
15408 )
15409{
15410 wpt_status wptStatus;
15411
15412
15413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15414
15415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 -------------------------------------------------------------------------*/
15418 if ( NULL == pEventData )
15419 {
15420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 WDI_ASSERT(0);
15423 return WDI_STATUS_E_FAILURE;
15424 }
15425
15426 wpalMutexAcquire(&pWDICtx->wptMutex);
15427
15428
15429 gWDIInitialized = eWLAN_PAL_FALSE;
15430 /*! TO DO: stop the data services */
15431 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15432 {
15433 /*Stop the STA Table !UT- check this logic again
15434 It is safer to do it here than on the response - because a stop is imminent*/
15435 WDI_STATableStop(pWDICtx);
15436
15437 /* Stop Transport Driver, DXE */
15438 WDTS_Stop(pWDICtx);
15439 }
15440
15441 /*Clear all pending request*/
15442 WDI_ClearPendingRequests(pWDICtx);
15443 /* Close Data transport*/
15444 /* FTM mode does not open Data Path */
15445 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15446 {
15447 WDTS_Close(pWDICtx);
15448 }
15449 /*Close the STA Table !UT- check this logic again*/
15450 WDI_STATableClose(pWDICtx);
15451 /*close the PAL */
15452 wptStatus = wpalClose(pWDICtx->pPALContext);
15453 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15454 {
15455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15456 "Failed to wpal Close %d", wptStatus);
15457 WDI_ASSERT(0);
15458 }
15459
15460 /*Transition back to init state*/
15461 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15462
15463 wpalMutexRelease(&pWDICtx->wptMutex);
15464
15465 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015466 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015467
15468
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015470}/*WDI_ProcessShutdownReq*/
15471
15472/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015474========================================================================*/
15475
15476/**
15477 @brief Process Start Response function (called when a response
15478 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015479
15480 @param pWDICtx: pointer to the WLAN DAL context
15481 pEventData: pointer to the event information structure
15482
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 @see
15484 @return Result of the function call
15485*/
15486WDI_Status
15487WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015488(
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 WDI_ControlBlockType* pWDICtx,
15490 WDI_EventInfoType* pEventData
15491)
15492{
15493 WDI_StartRspParamsType wdiRspParams;
15494 WDI_StartRspCb wdiStartRspCb = NULL;
15495
15496 tHalMacStartRspParams* startRspParams;
15497
15498#ifndef HAL_SELF_STA_PER_BSS
15499 WDI_AddStaParams wdiAddSTAParam = {0};
15500#endif
15501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15502
Jeff Johnsone7245742012-09-05 17:12:55 -070015503 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 -------------------------------------------------------------------------*/
15507 if (( NULL == pEventData ) ||
15508 ( NULL == pEventData->pEventData) ||
15509 ( NULL == wdiStartRspCb ))
15510 {
15511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 }
15516
15517 /*-------------------------------------------------------------------------
15518 Extract response and send it to UMAC
15519 -------------------------------------------------------------------------*/
15520 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15521 {
15522 // not enough data was received
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015524 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 }
15529
15530 /*-------------------------------------------------------------------------
15531 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015532 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 -------------------------------------------------------------------------*/
15534 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15535
15536 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15537 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15538 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15539 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15540 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15541 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15542 wdiRspParams.wlanReportedVersion.major =
15543 startRspParams->wcnssWlanVersion.major;
15544 wdiRspParams.wlanReportedVersion.minor =
15545 startRspParams->wcnssWlanVersion.minor;
15546 wdiRspParams.wlanReportedVersion.version =
15547 startRspParams->wcnssWlanVersion.version;
15548 wdiRspParams.wlanReportedVersion.revision =
15549 startRspParams->wcnssWlanVersion.revision;
15550 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15551 startRspParams->wcnssCrmVersionString,
15552 sizeof(wdiRspParams.wcnssSoftwareVersion));
15553 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15554 startRspParams->wcnssWlanVersionString,
15555 sizeof(wdiRspParams.wcnssHardwareVersion));
15556 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15557
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015558 /*Save the HAL Version*/
15559 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 wpalMutexAcquire(&pWDICtx->wptMutex);
15562 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15563 {
15564 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15565
15566 /*Cache the start response for further use*/
15567 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 sizeof(pWDICtx->wdiCachedStartRspParams));
15570
15571 }
15572 else
15573 {
15574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15575 "Failed to start device with status %s(%d)",
15576 WDI_getHALStatusMsgString(startRspParams->status),
15577 startRspParams->status);
15578
15579 /*Set the expected state transition to stopped - because the start has
15580 failed*/
15581 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15582
15583 wpalMutexRelease(&pWDICtx->wptMutex);
15584
15585 /*Notify UMAC*/
15586 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015587
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015589 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015590
15591 /*Although the response is an error - it was processed by our function
15592 so as far as the caller is concerned this is a succesful reponse processing*/
15593 return WDI_STATUS_SUCCESS;
15594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015595
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 wpalMutexRelease(&pWDICtx->wptMutex);
15597
15598 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15599 {
15600 /* FTM mode does not need to execute below */
15601 /* Notify UMAC */
15602 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15603 return WDI_STATUS_SUCCESS;
15604 }
15605
15606 /* START the Data transport */
15607 WDTS_startTransport(pWDICtx);
15608
15609 /*Start the STA Table !- check this logic again*/
15610 WDI_STATableStart(pWDICtx);
15611
15612#ifndef HAL_SELF_STA_PER_BSS
15613 /* Store the Self STA Index */
15614 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15615
15616 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15617 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15618 WDI_MAC_ADDR_LEN);
15619
15620 /* At this point add the self-STA */
15621
15622 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15623 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15624 /*! TO DO: wdiAddSTAParam.dpuSig */
15625 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15626 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15627 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15628
15629 //all DPU indices are the same for self STA
15630 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15631 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015632 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15634 WDI_MAC_ADDR_LEN);
15635 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15636 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15637
15638 /* Note: Since we don't get an explicit config STA request for self STA, we
15639 add the self STA upon receiving the Start response message. But the
15640 self STA entry in the table is deleted when WDI gets an explicit delete STA
15641 request */
15642 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15643#endif
15644
15645 /*Notify UMAC*/
15646 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15647
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015649}/*WDI_ProcessStartRsp*/
15650
15651
15652/**
15653 @brief Process Stop Response function (called when a response
15654 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015655
15656 @param pWDICtx: pointer to the WLAN DAL context
15657 pEventData: pointer to the event information structure
15658
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 @see
15660 @return Result of the function call
15661*/
15662WDI_Status
15663WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015664(
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 WDI_ControlBlockType* pWDICtx,
15666 WDI_EventInfoType* pEventData
15667)
15668{
15669 WDI_Status wdiStatus;
15670 WDI_StopRspCb wdiStopRspCb = NULL;
15671
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15674
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 -------------------------------------------------------------------------*/
15679 if (( NULL == pEventData ) ||
15680 ( NULL == pEventData->pEventData) ||
15681 ( NULL == wdiStopRspCb ))
15682 {
15683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 }
15688
15689 /*-------------------------------------------------------------------------
15690 Extract response and send it to UMAC
15691 -------------------------------------------------------------------------*/
15692 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15693 {
15694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015695 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 pEventData->uEventDataSize);
15697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 }
15700
15701 /*-------------------------------------------------------------------------
15702 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15706 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 sizeof(halMacStopRspMsg.stopRspParams));
15708
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015710
15711 wpalMutexAcquire(&pWDICtx->wptMutex);
15712
15713 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015714 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 --------------------------------------------------------------------------*/
15716 if ( WDI_STATUS_SUCCESS != wdiStatus )
15717 {
15718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15719 "Failed to stop the device with status %s (%d)",
15720 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15721 halMacStopRspMsg.stopRspParams.status);
15722
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015724 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015725
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015729
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15731
15732 /*Transition now as WDI may get preempted imediately after it sends
15733 up the Stop Response and it will not get to process the state transition
15734 from Main Rsp function*/
15735 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15736 wpalMutexRelease(&pWDICtx->wptMutex);
15737
15738 /*! TO DO: - STOP the Data transport */
15739
15740 /*Notify UMAC*/
15741 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15742
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015744}/*WDI_ProcessStopRsp*/
15745
15746/**
15747 @brief Process Close Rsp function (called when a response
15748 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015749
15750 @param pWDICtx: pointer to the WLAN DAL context
15751 pEventData: pointer to the event information structure
15752
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 @see
15754 @return Result of the function call
15755*/
15756WDI_Status
15757WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015758(
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 WDI_ControlBlockType* pWDICtx,
15760 WDI_EventInfoType* pEventData
15761)
15762{
15763 /*There is no close response comming from HAL - function just kept for
15764 simmetry */
15765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015767}/*WDI_ProcessCloseRsp*/
15768
15769
15770/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015772============================================================================*/
15773
15774/**
15775 @brief Process Init Scan Rsp function (called when a response
15776 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015777
15778 @param pWDICtx: pointer to the WLAN DAL context
15779 pEventData: pointer to the event information structure
15780
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 @see
15782 @return Result of the function call
15783*/
15784WDI_Status
15785WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015786(
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 WDI_ControlBlockType* pWDICtx,
15788 WDI_EventInfoType* pEventData
15789)
15790{
15791 WDI_Status wdiStatus;
15792 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015794 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15796
15797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 -------------------------------------------------------------------------*/
15800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15801 ( NULL == pEventData->pEventData))
15802 {
15803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 }
15808
15809 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15810 if( NULL == wdiInitScanRspCb)
15811 {
15812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015813 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 }
15817
15818 /*-------------------------------------------------------------------------
15819 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15823 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 sizeof(halInitScanRspMsg.initScanRspParams));
15825
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015827
15828 if ( pWDICtx->bInBmps )
15829 {
15830 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015831 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15832 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015834 "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 -080015835 WDI_ASSERT(0);
15836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 }
15838
15839 /*Notify UMAC*/
15840 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15841
Jeff Johnsone7245742012-09-05 17:12:55 -070015842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015843}/*WDI_ProcessInitScanRsp*/
15844
15845
15846/**
15847 @brief Process Start Scan Rsp function (called when a response
15848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015849
15850 @param pWDICtx: pointer to the WLAN DAL context
15851 pEventData: pointer to the event information structure
15852
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 @see
15854 @return Result of the function call
15855*/
15856WDI_Status
15857WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015858(
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 WDI_ControlBlockType* pWDICtx,
15860 WDI_EventInfoType* pEventData
15861)
15862{
15863 WDI_StartScanRspParamsType wdiStartScanParams;
15864 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015865
15866 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15868
15869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 -------------------------------------------------------------------------*/
15872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15873 ( NULL == pEventData->pEventData))
15874 {
15875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015879 }
15880
15881 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15882 if( NULL == wdiStartScanRspCb)
15883 {
15884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015885 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 }
15889
15890 /*-------------------------------------------------------------------------
15891 Extract response and send it to UMAC
15892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15894 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 sizeof(halStartScanRspMsg.startScanRspParams));
15896
15897 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15898 halStartScanRspMsg.startScanRspParams.status);
15899#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015900 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 halStartScanRspMsg.startScanRspParams.startTSF,
15904 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015905#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015906
15907 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15908 {
15909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15910 "Start scan failed with status %s (%d)",
15911 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15912 halStartScanRspMsg.startScanRspParams.status);
15913 /* send the status to UMAC, don't return from here*/
15914 }
15915
15916 /*Notify UMAC*/
15917 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15918
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920
15921}/*WDI_ProcessStartScanRsp*/
15922
15923
15924/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015927
15928 @param pWDICtx: pointer to the WLAN DAL context
15929 pEventData: pointer to the event information structure
15930
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 @see
15932 @return Result of the function call
15933*/
15934WDI_Status
15935WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015936(
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 WDI_ControlBlockType* pWDICtx,
15938 WDI_EventInfoType* pEventData
15939)
15940{
15941 WDI_Status wdiStatus;
15942 tHalEndScanRspMsg halEndScanRspMsg;
15943 WDI_EndScanRspCb wdiEndScanRspCb;
15944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15945
15946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 -------------------------------------------------------------------------*/
15949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15950 ( NULL == pEventData->pEventData))
15951 {
15952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 }
15957
15958 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15959
15960 /*-------------------------------------------------------------------------
15961 Extract response and send it to UMAC
15962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15964 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 sizeof(halEndScanRspMsg.endScanRspParams));
15966
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015968
15969 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15970 {
15971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15972 "End Scan failed with status %s (%d )",
15973 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15974 halEndScanRspMsg.endScanRspParams.status);
15975 /* send the status to UMAC, don't return from here*/
15976 }
15977
15978 /*Notify UMAC*/
15979 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015982}/*WDI_ProcessEndScanRsp*/
15983
15984
15985/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015988
15989 @param pWDICtx: pointer to the WLAN DAL context
15990 pEventData: pointer to the event information structure
15991
Jeff Johnson295189b2012-06-20 16:38:30 -070015992 @see
15993 @return Result of the function call
15994*/
15995WDI_Status
15996WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015997(
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 WDI_ControlBlockType* pWDICtx,
15999 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016000)
Jeff Johnson295189b2012-06-20 16:38:30 -070016001{
16002 WDI_Status wdiStatus;
16003 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016004
16005 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16007
16008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 -------------------------------------------------------------------------*/
16011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16012 ( NULL == pEventData->pEventData))
16013 {
16014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 }
16019
16020 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16021
16022 /*-------------------------------------------------------------------------
16023 Extract response and send it to UMAC
16024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16026 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016030
16031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 halFinishScanRspMsg.finishScanRspParams.status);
16034
16035 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16036 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16037 {
16038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16039 "Finish Scan failed with status %s (%d)",
16040 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16041 halFinishScanRspMsg.finishScanRspParams.status);
16042 /* send the status to UMAC, don't return from here*/
16043 }
16044
16045 /*Notify UMAC*/
16046 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16047
Jeff Johnsone7245742012-09-05 17:12:55 -070016048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016049}/*WDI_ProcessFinishScanRsp*/
16050
16051/**
16052 @brief Process Join Response function (called when a response
16053 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016054
16055 @param pWDICtx: pointer to the WLAN DAL context
16056 pEventData: pointer to the event information structure
16057
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 @see
16059 @return Result of the function call
16060*/
16061WDI_Status
16062WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016063(
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 WDI_ControlBlockType* pWDICtx,
16065 WDI_EventInfoType* pEventData
16066)
16067{
16068 WDI_Status wdiStatus;
16069 WDI_JoinRspCb wdiJoinRspCb;
16070 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016071
16072 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16074
16075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 -------------------------------------------------------------------------*/
16078 if (( NULL == pWDICtx ) ||
16079 ( NULL == pWDICtx->pfncRspCB ) ||
16080 ( NULL == pEventData ) ||
16081 ( NULL == pEventData->pEventData))
16082 {
16083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 }
16088
16089 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16090
16091 /*-------------------------------------------------------------------------
16092 Extract response and send it to UMAC
16093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16095 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 sizeof(halJoinRspMsg.joinRspParams));
16097
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016099
16100 wpalMutexAcquire(&pWDICtx->wptMutex);
16101
16102 /*-----------------------------------------------------------------------
16103 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16108 {
16109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16111 "association no longer in progress %d - mysterious HAL response",
16112 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016113
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 }
16118
16119 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16120
16121 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 -----------------------------------------------------------------------*/
16124 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16125 {
16126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16127 "Join only allowed in Joining state - failure state is %d "
16128 "strange HAL response", pBSSSes->wdiAssocState);
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16131
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 }
16135
16136
16137 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 -----------------------------------------------------------------------*/
16140 if ( WDI_STATUS_SUCCESS != wdiStatus )
16141 {
16142 /*Association was failed by HAL - remove session*/
16143 WDI_DeleteSession(pWDICtx, pBSSSes);
16144
16145 /*Association no longer in progress */
16146 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16147
16148 /*Association no longer in progress - prepare pending assoc for processing*/
16149 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016150
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 }
16152 else
16153 {
16154 /*Transition to state Joining - this may be redundant as we are supposed
16155 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 }
16158
16159 wpalMutexRelease(&pWDICtx->wptMutex);
16160
16161 /*Notify UMAC*/
16162 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16163
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016165}/*WDI_ProcessJoinRsp*/
16166
16167
16168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016171
16172 @param pWDICtx: pointer to the WLAN DAL context
16173 pEventData: pointer to the event information structure
16174
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 @see
16176 @return Result of the function call
16177*/
16178WDI_Status
16179WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016180(
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 WDI_ControlBlockType* pWDICtx,
16182 WDI_EventInfoType* pEventData
16183)
16184{
16185 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16186 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 WDI_BSSSessionType* pBSSSes = NULL;
16189
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16192 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016193
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16195
16196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 -------------------------------------------------------------------------*/
16199 if (( NULL == pEventData ) ||
16200 ( NULL == pEventData->pEventData))
16201 {
16202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 }
16207
16208 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16209
16210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16214 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 sizeof(halConfigBssRspMsg.configBssRspParams));
16216
16217 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16218 halConfigBssRspMsg.configBssRspParams.status);
16219 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16220 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16223 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016226
16227 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016229
16230 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016232
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016234
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16238 #endif
16239 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16240 halConfigBssRspMsg.configBssRspParams.staMac,
16241 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016242
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 wpalMutexAcquire(&pWDICtx->wptMutex);
16244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16248 wdiConfigBSSParams.macBSSID,
16249 &pBSSSes);
16250
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 /*-----------------------------------------------------------------------
16252 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 -----------------------------------------------------------------------*/
16255 if ( NULL == pBSSSes )
16256 {
16257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16258 "Association sequence for this BSS does not yet exist "
16259 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016260
16261 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16262
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016266
Jeff Johnson295189b2012-06-20 16:38:30 -070016267 /*Save data for this BSS*/
16268 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16269 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16280 pBSSSes->bcastStaIdx =
16281 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016282
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016284
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 /*-------------------------------------------------------------------------
16286 Add Peer STA
16287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16290 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016291
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 wdiAddSTAParam.ucHTCapable =
16296 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16297 wdiAddSTAParam.ucStaType =
16298 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16299
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16302 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016304
16305 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16306 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16307 WDI_MAC_ADDR_LEN);
16308
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016322
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16324 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016325
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16327 /*-------------------------------------------------------------------------
16328 Add Broadcast STA only in AP mode
16329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016331 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 {
16333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16334 "Add BCAST STA to table for index: %d",
16335 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016336
16337 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016339
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16341 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16342 }
16343 wpalMutexRelease(&pWDICtx->wptMutex);
16344 }
16345 else
16346 {
16347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16348 "Config BSS RSP failed with status : %s(%d)",
16349 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 halConfigBssRspMsg.configBssRspParams.status);
16352
Jeff Johnsone7245742012-09-05 17:12:55 -070016353
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 /*Association was failed by HAL - remove session*/
16355 WDI_DeleteSession(pWDICtx, pBSSSes);
16356
16357 /*Association no longer in progress */
16358 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16359
16360 /*Association no longer in progress - prepare pending assoc for processing*/
16361 WDI_DequeueAssocRequest(pWDICtx);
16362
16363 }
16364
16365 /*Notify UMAC*/
16366 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16367
Jeff Johnsone7245742012-09-05 17:12:55 -070016368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016369}/*WDI_ProcessConfigBSSRsp*/
16370
16371
16372/**
16373 @brief Process Del BSS Response function (called when a response
16374 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016375
16376 @param pWDICtx: pointer to the WLAN DAL context
16377 pEventData: pointer to the event information structure
16378
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 @see
16380 @return Result of the function call
16381*/
16382WDI_Status
16383WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016384(
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 WDI_ControlBlockType* pWDICtx,
16386 WDI_EventInfoType* pEventData
16387)
16388{
16389 WDI_DelBSSRspParamsType wdiDelBSSParams;
16390 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 WDI_BSSSessionType* pBSSSes = NULL;
16393
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16396
16397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 -------------------------------------------------------------------------*/
16400 if (( NULL == pEventData ) ||
16401 ( NULL == pEventData->pEventData))
16402 {
16403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 }
16408
16409 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16410
16411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016412 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16415 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016416 sizeof(halDelBssRspMsg.deleteBssRspParams));
16417
16418
16419 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016421
16422 wpalMutexAcquire(&pWDICtx->wptMutex);
16423
16424 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016425 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16428 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16429 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016430
16431 /*-----------------------------------------------------------------------
16432 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016434 -----------------------------------------------------------------------*/
16435 if ( NULL == pBSSSes )
16436 {
16437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16438 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016439 "association no longer in progress - mysterious HAL response");
16440
16441 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16442
16443 wpalMutexRelease(&pWDICtx->wptMutex);
16444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016446
16447 /*Extract BSSID for the response to UMAC*/
16448 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16449 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16450
16451 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16452
16453 /*-----------------------------------------------------------------------
16454 The current session will be deleted
16455 -----------------------------------------------------------------------*/
16456 WDI_DeleteSession(pWDICtx, pBSSSes);
16457
16458
16459 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016460 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16461 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016463 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016464 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016465
16466 /* Delete the STA's in this BSS */
16467 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16468
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 wpalMutexRelease(&pWDICtx->wptMutex);
16470
16471 /*Notify UMAC*/
16472 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16473
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016475}/*WDI_ProcessDelBSSRsp*/
16476
16477/**
16478 @brief Process Post Assoc Rsp function (called when a response
16479 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016480
16481 @param pWDICtx: pointer to the WLAN DAL context
16482 pEventData: pointer to the event information structure
16483
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 @see
16485 @return Result of the function call
16486*/
16487WDI_Status
16488WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016489(
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ControlBlockType* pWDICtx,
16491 WDI_EventInfoType* pEventData
16492)
16493{
16494 WDI_PostAssocRspParamsType wdiPostAssocParams;
16495 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016498 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16500
16501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 -------------------------------------------------------------------------*/
16504 if (( NULL == pEventData ) ||
16505 ( NULL == pEventData->pEventData))
16506 {
16507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 }
16512
16513 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16514
16515 /*-------------------------------------------------------------------------
16516 Extract response and send it to UMAC
16517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16519 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 sizeof(halPostAssocRspMsg.postAssocRspParams));
16521
16522 /*Extract the Post Assoc STA Params */
16523
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16530
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiPostAssocParams.wdiStatus =
16532 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533
16534 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16535 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16537 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 WDI_MAC_ADDR_LEN);
16539
16540 /* Extract Post Assoc BSS Params */
16541
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16543 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16544 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016545
16546 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16547 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16550 .macSTA, WDI_MAC_ADDR_LEN);
16551
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16554
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16557
16558 wdiPostAssocParams.bssParams.ucBSSIdx =
16559 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16560
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16563
16564 wpalMutexAcquire(&pWDICtx->wptMutex);
16565
16566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016572
16573 /*-----------------------------------------------------------------------
16574 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 -----------------------------------------------------------------------*/
16577 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016578 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016579 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16580 {
16581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16582 "Association sequence for this BSS does not yet exist or "
16583 "association no longer in progress - mysterious HAL response");
16584
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 }
16590
16591 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 -----------------------------------------------------------------------*/
16594 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16595 {
16596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16597 "Post Assoc not allowed before JOIN - failing request "
16598 "strange HAL response");
16599
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16601
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 }
16605
16606 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 -----------------------------------------------------------------------*/
16609 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16610 {
16611 /*Association was failed by HAL - remove session*/
16612 WDI_DeleteSession(pWDICtx, pBSSSes);
16613 }
16614 else
16615 {
16616 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016618
16619 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016620 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016622 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016623 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16628
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16631 }
16632
16633 /*Association no longer in progress */
16634 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16635
16636 /*Association no longer in progress - prepare pending assoc for processing*/
16637 WDI_DequeueAssocRequest(pWDICtx);
16638
16639 wpalMutexRelease(&pWDICtx->wptMutex);
16640
16641 /*Notify UMAC*/
16642 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016645}/*WDI_ProcessPostAssocRsp*/
16646
16647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016648 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016650
16651 @param pWDICtx: pointer to the WLAN DAL context
16652 pEventData: pointer to the event information structure
16653
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 @see
16655 @return Result of the function call
16656*/
16657WDI_Status
16658WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016659(
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 WDI_ControlBlockType* pWDICtx,
16661 WDI_EventInfoType* pEventData
16662)
16663{
16664 WDI_DelSTARspParamsType wdiDelSTARsp;
16665 WDI_DelSTARspCb wdiDelSTARspCb;
16666 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16669
16670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 -------------------------------------------------------------------------*/
16673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16674 ( NULL == pEventData->pEventData))
16675 {
16676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 }
16681
16682 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16683
16684 /*-------------------------------------------------------------------------
16685 Extract response and send it to UMAC
16686 -------------------------------------------------------------------------*/
16687 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 sizeof(halDelStaRspMsg.delStaRspParams));
16690
16691 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 wdiDelSTARsp.wdiStatus =
16693 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016694
16695 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16696
16697 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16698 if(staType == WDI_STA_ENTRY_SELF)
16699 {
16700 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16701
16702 /* At this point add the self-STA */
16703
16704 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16705 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16706 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16707
16708#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16709#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16710
16711 //all DPU indices are the same for self STA
16712 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16713 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16714 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16715 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16716 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16717 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016718
16719 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 }
16721 else
16722 {
16723 //Delete the station in the table
16724 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16725 }
16726
16727 /*Notify UMAC*/
16728 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16729
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016731}/*WDI_ProcessDelSTARsp*/
16732
16733
16734/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016736==========================================================================*/
16737
16738/**
16739 @brief Process Set BSS Key Rsp function (called when a response
16740 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016741
16742 @param pWDICtx: pointer to the WLAN DAL context
16743 pEventData: pointer to the event information structure
16744
Jeff Johnson295189b2012-06-20 16:38:30 -070016745 @see
16746 @return Result of the function call
16747*/
16748WDI_Status
16749WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016750(
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 WDI_ControlBlockType* pWDICtx,
16752 WDI_EventInfoType* pEventData
16753)
16754{
16755 WDI_Status wdiStatus;
16756 eHalStatus halStatus;
16757 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16759
16760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 -------------------------------------------------------------------------*/
16763 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16764 ( NULL == pEventData->pEventData))
16765 {
16766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 }
16771
16772 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16773
16774 /*-------------------------------------------------------------------------
16775 Extract response and send it to UMAC
16776 -------------------------------------------------------------------------*/
16777 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016778 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016779
16780 if ( eHAL_STATUS_SUCCESS != halStatus )
16781 {
16782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16783 "Set BSS Key failed with status %s (%d)",
16784 WDI_getHALStatusMsgString(halStatus),
16785 halStatus);
16786 /* send the status to UMAC, don't return from here*/
16787 }
16788
16789 /*Notify UMAC*/
16790 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16791
Jeff Johnsone7245742012-09-05 17:12:55 -070016792 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016793}/*WDI_ProcessSetBssKeyRsp*/
16794
16795/**
16796 @brief Process Remove BSS Key Rsp function (called when a response
16797 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016798
16799 @param pWDICtx: pointer to the WLAN DAL context
16800 pEventData: pointer to the event information structure
16801
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 @see
16803 @return Result of the function call
16804*/
16805WDI_Status
16806WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016807(
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 WDI_ControlBlockType* pWDICtx,
16809 WDI_EventInfoType* pEventData
16810)
16811{
16812 WDI_Status wdiStatus;
16813 eHalStatus halStatus;
16814 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16816
16817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 -------------------------------------------------------------------------*/
16820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16821 ( NULL == pEventData->pEventData))
16822 {
16823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016824 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 }
16828
16829 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16830
16831 /*-------------------------------------------------------------------------
16832 Extract response and send it to UMAC
16833 -------------------------------------------------------------------------*/
16834 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016836
16837 if ( eHAL_STATUS_SUCCESS != halStatus )
16838 {
16839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16840 "Remove BSS Key failed with status %s (%d )",
16841 WDI_getHALStatusMsgString(halStatus),
16842 halStatus);
16843 /* send the status to UMAC, don't return from here*/
16844 }
16845
16846 /*Notify UMAC*/
16847 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16848
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850}/*WDI_ProcessSetBssKeyRsp*/
16851
16852
16853/**
16854 @brief Process Set STA Key Rsp function (called when a response
16855 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016856
16857 @param pWDICtx: pointer to the WLAN DAL context
16858 pEventData: pointer to the event information structure
16859
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 @see
16861 @return Result of the function call
16862*/
16863WDI_Status
16864WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016865(
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 WDI_ControlBlockType* pWDICtx,
16867 WDI_EventInfoType* pEventData
16868)
16869{
16870 WDI_Status wdiStatus;
16871 eHalStatus halStatus;
16872 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16874
16875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 -------------------------------------------------------------------------*/
16878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16879 ( NULL == pEventData->pEventData))
16880 {
16881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 }
16886
16887 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16888
16889 /*-------------------------------------------------------------------------
16890 Extract response and send it to UMAC
16891 -------------------------------------------------------------------------*/
16892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016894
16895 if ( eHAL_STATUS_SUCCESS != halStatus )
16896 {
16897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16898 "Set STA Key failed with status %s (%d)",
16899 WDI_getHALStatusMsgString(halStatus),
16900 halStatus);
16901 /* send the status to UMAC, don't return from here*/
16902 }
16903
16904 /*Notify UMAC*/
16905 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16906
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016908}/*WDI_ProcessSetSTAKeyRsp*/
16909
16910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016913
16914 @param pWDICtx: pointer to the WLAN DAL context
16915 pEventData: pointer to the event information structure
16916
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 @see
16918 @return Result of the function call
16919*/
16920WDI_Status
16921WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016922(
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 WDI_ControlBlockType* pWDICtx,
16924 WDI_EventInfoType* pEventData
16925)
16926{
16927 WDI_Status wdiStatus;
16928 eHalStatus halStatus;
16929 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16931
16932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 -------------------------------------------------------------------------*/
16935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16936 ( NULL == pEventData->pEventData))
16937 {
16938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016939 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016942 }
16943
16944 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16945
16946 /*-------------------------------------------------------------------------
16947 Extract response and send it to UMAC
16948 -------------------------------------------------------------------------*/
16949 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016951
16952 if ( eHAL_STATUS_SUCCESS != halStatus )
16953 {
16954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16955 "Remove STA Key failed with status %s (%d)",
16956 WDI_getHALStatusMsgString(halStatus),
16957 halStatus);
16958 /* send the status to UMAC, don't return from here*/
16959 }
16960
16961 /*Notify UMAC*/
16962 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16963
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016965}/*WDI_ProcessRemoveStaKeyRsp*/
16966
16967/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016970
16971 @param pWDICtx: pointer to the WLAN DAL context
16972 pEventData: pointer to the event information structure
16973
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 @see
16975 @return Result of the function call
16976*/
16977WDI_Status
16978WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016979(
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 WDI_ControlBlockType* pWDICtx,
16981 WDI_EventInfoType* pEventData
16982)
16983{
16984 WDI_Status wdiStatus;
16985 eHalStatus halStatus;
16986 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16988
16989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 -------------------------------------------------------------------------*/
16992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16993 ( NULL == pEventData->pEventData))
16994 {
16995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016999 }
17000
17001 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17002
17003 /*-------------------------------------------------------------------------
17004 Extract response and send it to UMAC
17005 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 wpalMemoryCopy( &halStatus,
17007 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 sizeof(halStatus));
17009
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017011
17012 if ( eHAL_STATUS_SUCCESS != halStatus )
17013 {
17014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17015 "Set STA Key failed with status %s (%d)",
17016 WDI_getHALStatusMsgString(halStatus),
17017 halStatus);
17018 /* send the status to UMAC, don't return from here*/
17019 }
17020
17021 /*Notify UMAC*/
17022 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17023
Jeff Johnsone7245742012-09-05 17:12:55 -070017024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017025}/*WDI_ProcessSetSTABcastKeyRsp*/
17026
17027/**
17028 @brief Process Remove STA Bcast Key Rsp function (called when a
17029 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017030
17031 @param pWDICtx: pointer to the WLAN DAL context
17032 pEventData: pointer to the event information structure
17033
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 @see
17035 @return Result of the function call
17036*/
17037WDI_Status
17038WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017039(
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 WDI_ControlBlockType* pWDICtx,
17041 WDI_EventInfoType* pEventData
17042)
17043{
17044 WDI_Status wdiStatus;
17045 eHalStatus halStatus;
17046 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17048
17049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 -------------------------------------------------------------------------*/
17052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17053 ( NULL == pEventData->pEventData))
17054 {
17055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 }
17060
17061 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17062
17063 /*-------------------------------------------------------------------------
17064 Extract response and send it to UMAC
17065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 wpalMemoryCopy( &halStatus,
17067 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 sizeof(halStatus));
17069
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017071
17072 if ( eHAL_STATUS_SUCCESS != halStatus )
17073 {
17074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17075 "Remove STA Key failed with status %s (%d)",
17076 WDI_getHALStatusMsgString(halStatus),
17077 halStatus);
17078 /* send the status to UMAC, don't return from here*/
17079 }
17080
17081 /*Notify UMAC*/
17082 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17083
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017085}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17086
17087
17088/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017089 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017090==========================================================================*/
17091
17092/**
17093 @brief Process Add TSpec Rsp function (called when a response
17094 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017095
17096 @param pWDICtx: pointer to the WLAN DAL context
17097 pEventData: pointer to the event information structure
17098
Jeff Johnson295189b2012-06-20 16:38:30 -070017099 @see
17100 @return Result of the function call
17101*/
17102WDI_Status
17103WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017104(
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 WDI_ControlBlockType* pWDICtx,
17106 WDI_EventInfoType* pEventData
17107)
17108{
17109 WDI_Status wdiStatus;
17110 eHalStatus halStatus;
17111 WDI_AddTsRspCb wdiAddTsRspCb;
17112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17113
17114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 -------------------------------------------------------------------------*/
17117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17118 ( NULL == pEventData->pEventData))
17119 {
17120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 }
17125
17126 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17127
17128 /*-------------------------------------------------------------------------
17129 Extract response and send it to UMAC
17130 -------------------------------------------------------------------------*/
17131 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017133
17134 /*Notify UMAC*/
17135 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17136
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017138}/*WDI_ProcessAddTSpecRsp*/
17139
17140
Sunil Duttbd736ed2014-05-26 21:19:41 +053017141
17142#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17143
17144WDI_Status
17145WDI_ProcessLLStatsSetRsp
17146(
17147 WDI_ControlBlockType* pWDICtx,
17148 WDI_EventInfoType* pEventData
17149)
17150{
17151 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17152
17153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17154 "%s: Enter ", __func__);
17155 /*-------------------------------------------------------------------------
17156 Sanity check
17157 -------------------------------------------------------------------------*/
17158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17159 ( NULL == pEventData->pEventData))
17160 {
17161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17162 "%s: Invalid parameters", __func__);
17163 WDI_ASSERT(0);
17164 return WDI_STATUS_E_FAILURE;
17165 }
17166
17167 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17168
17169 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17170
17171 return WDI_STATUS_SUCCESS;
17172}
17173
17174WDI_Status
17175WDI_ProcessLLStatsGetRsp
17176(
17177 WDI_ControlBlockType* pWDICtx,
17178 WDI_EventInfoType* pEventData
17179)
17180{
17181 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17182
17183 /*-------------------------------------------------------------------------
17184 Sanity check
17185 -------------------------------------------------------------------------*/
17186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17187 ( NULL == pEventData->pEventData))
17188 {
17189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17190 "%s: Invalid parameters", __func__);
17191 WDI_ASSERT(0);
17192 return WDI_STATUS_E_FAILURE;
17193 }
17194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17195 "%s: Enter ", __func__);
17196
17197 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17198
17199 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17200
17201 return WDI_STATUS_SUCCESS;
17202}
17203
17204WDI_Status
17205WDI_ProcessLLStatsClearRsp
17206(
17207 WDI_ControlBlockType* pWDICtx,
17208 WDI_EventInfoType* pEventData
17209)
17210{
17211 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17212
17213 /*-------------------------------------------------------------------------
17214 Sanity check
17215 -------------------------------------------------------------------------*/
17216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17217 ( NULL == pEventData->pEventData))
17218 {
17219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17220 "%s: Invalid parameters", __func__);
17221 WDI_ASSERT(0);
17222 return WDI_STATUS_E_FAILURE;
17223 }
17224
17225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17226 "%s: CLEAR RESPONSE CALL BACK", __func__);
17227 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17228
17229 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17230
17231 return WDI_STATUS_SUCCESS;
17232}
17233#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17234
Jeff Johnson295189b2012-06-20 16:38:30 -070017235/**
17236 @brief Process Del TSpec Rsp function (called when a response
17237 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017238
17239 @param pWDICtx: pointer to the WLAN DAL context
17240 pEventData: pointer to the event information structure
17241
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 @see
17243 @return Result of the function call
17244*/
17245WDI_Status
17246WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017247(
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 WDI_ControlBlockType* pWDICtx,
17249 WDI_EventInfoType* pEventData
17250)
17251{
17252 WDI_Status wdiStatus;
17253 eHalStatus halStatus;
17254 WDI_DelTsRspCb wdiDelTsRspCb;
17255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17256
17257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 -------------------------------------------------------------------------*/
17260 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17261 ( NULL == pEventData->pEventData))
17262 {
17263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 }
17268
17269 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17270
17271 /*-------------------------------------------------------------------------
17272 Extract response and send it to UMAC
17273 -------------------------------------------------------------------------*/
17274 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017276
17277 /*Notify UMAC*/
17278 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17279
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017281}/*WDI_ProcessDelTSpecRsp*/
17282
17283/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017284 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017286
17287 @param pWDICtx: pointer to the WLAN DAL context
17288 pEventData: pointer to the event information structure
17289
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 @see
17291 @return Result of the function call
17292*/
17293WDI_Status
17294WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017295(
Jeff Johnson295189b2012-06-20 16:38:30 -070017296 WDI_ControlBlockType* pWDICtx,
17297 WDI_EventInfoType* pEventData
17298)
17299{
17300 WDI_Status wdiStatus;
17301 eHalStatus halStatus;
17302 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17304
17305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 -------------------------------------------------------------------------*/
17308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17309 ( NULL == pEventData->pEventData))
17310 {
17311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 }
17316
17317 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17318
17319 /*-------------------------------------------------------------------------
17320 Extract response and send it to UMAC
17321 -------------------------------------------------------------------------*/
17322 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017324
17325 /*Notify UMAC*/
17326 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17327
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017329}/*WDI_ProcessUpdateEDCAParamsRsp*/
17330
17331
17332/**
17333 @brief Process Add BA Rsp function (called when a response
17334 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017335
17336 @param pWDICtx: pointer to the WLAN DAL context
17337 pEventData: pointer to the event information structure
17338
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 @see
17340 @return Result of the function call
17341*/
17342WDI_Status
17343WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017344(
Jeff Johnson295189b2012-06-20 16:38:30 -070017345 WDI_ControlBlockType* pWDICtx,
17346 WDI_EventInfoType* pEventData
17347)
17348{
17349 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17350
17351 tAddBASessionRspParams halBASessionRsp;
17352 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17353
Jeff Johnsone7245742012-09-05 17:12:55 -070017354
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17356
17357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 -------------------------------------------------------------------------*/
17360 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17361 ( NULL == pEventData->pEventData))
17362 {
17363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017364 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 }
17368
17369 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17370
17371 /*-------------------------------------------------------------------------
17372 Extract response and send it to UMAC
17373 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 wpalMemoryCopy( &halBASessionRsp,
17375 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 sizeof(halBASessionRsp));
17377
17378 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17379
Jeff Johnson43971f52012-07-17 12:26:56 -070017380 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 {
17382 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17383 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17384 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17385 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17386 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17387 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17388 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17389 }
17390
17391 /*Notify UMAC*/
17392 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17393
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017395}/*WDI_ProcessAddSessionBARsp*/
17396
17397
17398/**
17399 @brief Process Del BA Rsp function (called when a response
17400 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017401
17402 @param pWDICtx: pointer to the WLAN DAL context
17403 pEventData: pointer to the event information structure
17404
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 @see
17406 @return Result of the function call
17407*/
17408WDI_Status
17409WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017410(
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 WDI_ControlBlockType* pWDICtx,
17412 WDI_EventInfoType* pEventData
17413)
17414{
17415 WDI_Status wdiStatus;
17416 eHalStatus halStatus;
17417 WDI_DelBARspCb wdiDelBARspCb;
17418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17419
17420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 -------------------------------------------------------------------------*/
17423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17424 ( NULL == pEventData->pEventData))
17425 {
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 }
17431
17432 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17433
17434 /*-------------------------------------------------------------------------
17435 Extract response and send it to UMAC
17436 -------------------------------------------------------------------------*/
17437 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017438 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017439
17440 if ( eHAL_STATUS_SUCCESS == halStatus )
17441 {
17442 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17443 }
17444
17445 /*Notify UMAC*/
17446 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17447
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017449}/*WDI_ProcessDelBARsp*/
17450
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017451#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017452/**
17453 @brief Process TSM Stats Rsp function (called when a response
17454 is being received over the bus from HAL)
17455
17456 @param pWDICtx: pointer to the WLAN DAL context
17457 pEventData: pointer to the event information structure
17458
17459 @see
17460 @return Result of the function call
17461*/
17462WDI_Status
17463WDI_ProcessTsmStatsRsp
17464(
17465 WDI_ControlBlockType* pWDICtx,
17466 WDI_EventInfoType* pEventData
17467)
17468{
17469 WDI_TsmRspCb wdiTsmStatsRspCb;
17470 tTsmStatsRspMsg halTsmStatsRspMsg;
17471 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17473
17474 /*-------------------------------------------------------------------------
17475 Sanity check
17476 -------------------------------------------------------------------------*/
17477 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17478 ( NULL == pEventData->pEventData))
17479 {
17480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017482 WDI_ASSERT(0);
17483 return WDI_STATUS_E_FAILURE;
17484 }
17485
17486 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17487
17488 /*-------------------------------------------------------------------------
17489 Unpack HAL Response Message - the header was already extracted by the
17490 main Response Handling procedure
17491 -------------------------------------------------------------------------*/
17492 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17493 pEventData->pEventData,
17494 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17495
17496 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17497 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17498 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17499 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17500 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17501 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17502 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17503 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17504 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17505 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17506 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17507 halTsmStatsRspMsg.tsmStatsRspParams.status);
17508
17509 /*Notify UMAC*/
17510 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17511
17512 return WDI_STATUS_SUCCESS;
17513}/*WDI_ProcessTsmStatsRsp*/
17514
17515#endif
17516
17517
17518
17519/**
17520 @brief Process Flush AC Rsp function (called when a response
17521 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017522
17523 @param pWDICtx: pointer to the WLAN DAL context
17524 pEventData: pointer to the event information structure
17525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 @see
17527 @return Result of the function call
17528*/
17529WDI_Status
17530WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017531(
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_ControlBlockType* pWDICtx,
17533 WDI_EventInfoType* pEventData
17534)
17535{
17536 WDI_Status wdiStatus;
17537 eHalStatus halStatus;
17538 WDI_FlushAcRspCb wdiFlushAcRspCb;
17539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17540
17541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 -------------------------------------------------------------------------*/
17544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17545 ( NULL == pEventData->pEventData))
17546 {
17547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 }
17552
17553 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17554
17555 /*-------------------------------------------------------------------------
17556 Extract response and send it to UMAC
17557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 wpalMemoryCopy( &halStatus,
17559 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 sizeof(halStatus));
17561
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563
17564 /*Notify UMAC*/
17565 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17566
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568}/*WDI_ProcessFlushAcRsp*/
17569
17570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017573
17574 @param pWDICtx: pointer to the WLAN DAL context
17575 pEventData: pointer to the event information structure
17576
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 @see
17578 @return Result of the function call
17579*/
17580WDI_Status
17581WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017582(
Jeff Johnson295189b2012-06-20 16:38:30 -070017583 WDI_ControlBlockType* pWDICtx,
17584 WDI_EventInfoType* pEventData
17585)
17586{
17587 WDI_Status wdiStatus;
17588 eHalStatus halStatus;
17589 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17591
17592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 -------------------------------------------------------------------------*/
17595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17596 ( NULL == pEventData->pEventData))
17597 {
17598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 }
17603
17604 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17605
17606 /*-------------------------------------------------------------------------
17607 Extract response and send it to UMAC
17608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 wpalMemoryCopy( &halStatus,
17610 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 sizeof(halStatus));
17612
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017614
17615 /*Notify UMAC*/
17616 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17617
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619}/*WDI_ProcessBtAmpEventRsp*/
17620
17621
17622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017625
17626 @param pWDICtx: pointer to the WLAN DAL context
17627 pEventData: pointer to the event information structure
17628
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 @see
17630 @return Result of the function call
17631*/
17632WDI_Status
17633WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017634(
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 WDI_ControlBlockType* pWDICtx,
17636 WDI_EventInfoType* pEventData
17637)
17638{
17639 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17640 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17641 tAddStaSelfRspMsg halAddStaSelfRsp;
17642 WDI_AddStaParams wdiAddSTAParam = {0};
17643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17644
17645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 -------------------------------------------------------------------------*/
17648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17649 ( NULL == pEventData->pEventData))
17650 {
17651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 }
17656
Jeff Johnsone7245742012-09-05 17:12:55 -070017657 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17659
17660 /*-------------------------------------------------------------------------
17661 Extract response and send it to UMAC
17662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17664 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17666
17667
Jeff Johnsone7245742012-09-05 17:12:55 -070017668 wdiAddSTASelfParams.wdiStatus =
17669 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017670
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17677
17678 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17679 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17680 WDI_MAC_ADDR_LEN);
17681
17682
17683#ifdef HAL_SELF_STA_PER_BSS
17684
17685 /* At this point add the self-STA */
17686
17687 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17688 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17689 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17690
17691 //all DPU indices are the same for self STA
17692
17693 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17696 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17697 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17698 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17699 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17700
17701 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17702 WDI_MAC_ADDR_LEN);
17703
17704 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17705 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17706
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17709 {
17710 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17711 }
17712#endif
17713
17714 /*Notify UMAC*/
17715 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17716
Jeff Johnsone7245742012-09-05 17:12:55 -070017717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017718}/*WDI_ProcessAddSTASelfRsp*/
17719
17720
17721
17722/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017723 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017725
17726 @param pWDICtx: pointer to the WLAN DAL context
17727 pEventData: pointer to the event information structure
17728
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 @see
17730 @return Result of the function call
17731*/
17732WDI_Status
17733WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017734(
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDI_ControlBlockType* pWDICtx,
17736 WDI_EventInfoType* pEventData
17737)
17738{
17739 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17740 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17741 tDelStaSelfRspParams delStaSelfRspParams;
17742 wpt_uint8 ucStaIdx;
17743
17744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17745
17746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 -------------------------------------------------------------------------*/
17749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17750 ( NULL == pEventData->pEventData))
17751 {
17752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 }
17757
17758 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17759
17760 /*-------------------------------------------------------------------------
17761 Extract response and send it to UMAC
17762 -------------------------------------------------------------------------*/
17763
Jeff Johnsone7245742012-09-05 17:12:55 -070017764 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 (wpt_uint8*)pEventData->pEventData,
17766 sizeof(tDelStaSelfRspParams));
17767
Jeff Johnsone7245742012-09-05 17:12:55 -070017768 wdiDelStaSelfRspParams.wdiStatus =
17769 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017770
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17773 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17774 {
17775 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 delStaSelfRspParams.selfMacAddr,
17778 &ucStaIdx);
17779 if(WDI_STATUS_E_FAILURE == wdiStatus)
17780 {
17781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017782 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 }
17786 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17787 }
17788
17789 /*Notify UMAC*/
17790 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17791
17792 return WDI_STATUS_SUCCESS;
17793}
17794
Jeff Johnsone7245742012-09-05 17:12:55 -070017795#ifdef FEATURE_OEM_DATA_SUPPORT
17796/**
17797 @brief Start Oem Data Rsp function (called when a
17798 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017799
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 @param pWDICtx: pointer to the WLAN DAL context
17801 pEventData: pointer to the event information structure
17802
17803 @see
17804 @return Result of the function call
17805*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017806
17807WDI_Status
17808WDI_ProcessStartOemDataRsp
17809(
17810 WDI_ControlBlockType* pWDICtx,
17811 WDI_EventInfoType* pEventData
17812)
17813{
17814 WDI_oemDataRspCb wdiOemDataRspCb;
17815 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17816 tStartOemDataRspParams* halStartOemDataRspParams;
17817
17818 /*-------------------------------------------------------------------------
17819 Sanity check
17820 -------------------------------------------------------------------------*/
17821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17822 ( NULL == pEventData->pEventData))
17823 {
17824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017825 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017826 WDI_ASSERT(0);
17827 return WDI_STATUS_E_FAILURE;
17828 }
17829
17830 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17831
17832 /*-------------------------------------------------------------------------
17833 Extract response and send it to UMAC
17834 -------------------------------------------------------------------------*/
17835 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17836
17837
17838 //It is the responsibility of the application code to check for failure
17839 //conditions!
17840
17841 //Allocate memory for WDI OEM DATA RSP structure
17842 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17843
17844 if(NULL == wdiOemDataRspParams)
17845 {
17846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017847 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 pWDICtx, pEventData, pEventData->pEventData);
17849 WDI_ASSERT(0);
17850 return WDI_STATUS_E_FAILURE;
17851 }
17852
17853 /* Populate WDI structure members */
17854 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17855
17856 /*Notify UMAC*/
17857 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17858
17859 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17860 wpalMemoryFree(wdiOemDataRspParams);
17861
17862 return WDI_STATUS_SUCCESS;
17863}/*WDI_PrcoessStartOemDataRsp*/
17864#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017865
17866/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017868===========================================================================*/
17869
17870/**
17871 @brief Process Channel Switch Rsp function (called when a response
17872 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017873
17874 @param pWDICtx: pointer to the WLAN DAL context
17875 pEventData: pointer to the event information structure
17876
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 @see
17878 @return Result of the function call
17879*/
17880WDI_Status
17881WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017882(
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 WDI_ControlBlockType* pWDICtx,
17884 WDI_EventInfoType* pEventData
17885)
17886{
17887 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17888 WDI_SwitchChRspCb wdiChSwitchRspCb;
17889 tSwitchChannelRspParams halSwitchChannelRsp;
17890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17891
17892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 -------------------------------------------------------------------------*/
17895 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17896 ( NULL == pEventData->pEventData))
17897 {
17898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 }
17903
17904 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17905
17906 /*-------------------------------------------------------------------------
17907 Extract response and send it to UMAC
17908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017909 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 (wpt_uint8*)pEventData->pEventData,
17911 sizeof(halSwitchChannelRsp));
17912
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 wdiSwitchChRsp.wdiStatus =
17914 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17916
17917#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017919#endif
17920
17921 /*Notify UMAC*/
17922 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925}/*WDI_ProcessChannelSwitchRsp*/
17926
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017927/**
17928 @brief Process Channel Switch Rsp function (called when a response
17929 is being received over the bus from HAL against
17930 WDI_ProcessChannelSwitchReq_V1)
17931
17932 @param pWDICtx: pointer to the WLAN DAL context
17933 pEventData: pointer to the event information structure
17934
17935 @see
17936 @return Result of the function call
17937*/
17938
17939WDI_Status
17940WDI_ProcessChannelSwitchRsp_V1
17941(
17942 WDI_ControlBlockType* pWDICtx,
17943 WDI_EventInfoType* pEventData
17944)
17945{
17946 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17947 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17948 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17950
17951 /*-------------------------------------------------------------------------
17952 Sanity check
17953 -------------------------------------------------------------------------*/
17954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17955 ( NULL == pEventData->pEventData))
17956 {
17957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17958 "%s: Invalid parameters", __func__);
17959 WDI_ASSERT(0);
17960 return WDI_STATUS_E_FAILURE;
17961 }
17962
17963 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17964
17965 /*-------------------------------------------------------------------------
17966 Extract response and send it to UMAC
17967 -------------------------------------------------------------------------*/
17968 wpalMemoryCopy( &halSwitchChannelRsp,
17969 (wpt_uint8*)pEventData->pEventData,
17970 sizeof(halSwitchChannelRsp));
17971
17972 wdiSwitchChRsp.wdiStatus =
17973 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17974 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17975
17976#ifdef WLAN_FEATURE_VOWIFI
17977 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17978#endif
17979
17980 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17981 if (( NULL == wdiChSwitchRspCb ) )
17982 {
17983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17984 "%s: ### Call back function is null", __func__);
17985 WDI_ASSERT(0);
17986 return WDI_STATUS_E_FAILURE;
17987 }
17988 /*Notify UMAC*/
17989 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17990
17991 return WDI_STATUS_SUCCESS;
17992}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017993
17994/**
17995 @brief Process Config STA Rsp function (called when a response
17996 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017997
17998 @param pWDICtx: pointer to the WLAN DAL context
17999 pEventData: pointer to the event information structure
18000
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 @see
18002 @return Result of the function call
18003*/
18004WDI_Status
18005WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018006(
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 WDI_ControlBlockType* pWDICtx,
18008 WDI_EventInfoType* pEventData
18009)
18010{
18011 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18012 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18013 WDI_AddStaParams wdiAddSTAParam;
18014
18015 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018016 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018017
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18020
18021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018023 -------------------------------------------------------------------------*/
18024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18025 ( NULL == pEventData->pEventData))
18026 {
18027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 }
18032
18033 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18034
18035 /*-------------------------------------------------------------------------
18036 Extract response and send it to UMAC
18037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018038 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18039 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 sizeof(halConfigStaRsp.configStaRspParams));
18041
18042
18043 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18044 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18045 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18046 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18047 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18048
18049 /* MAC Address of STA - take from cache as it does not come back in the
18050 response*/
18051 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018052 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018054
18055 wdiCfgSTAParams.wdiStatus =
18056 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018057
18058 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18059 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18060 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18061
18062 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18063 {
18064 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18065 {
18066 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018067 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18069 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018070
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018074 wdiAddSTAParam.ucHTCapable =
18075 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18076 wdiAddSTAParam.ucStaType =
18077 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018078 wdiAddSTAParam.ucRmfEnabled =
18079 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018080
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018082 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18083 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018085
18086 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18087 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18088 WDI_MAC_ADDR_LEN);
18089
18090 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18091 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18092 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018093
18094 if ( NULL == pBSSSes )
18095 {
18096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18097 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018098
Jeff Johnson295189b2012-06-20 16:38:30 -070018099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 }
18102
18103 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018108 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018113
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18115 }
18116 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18117 {
18118 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18119
Jeff Johnsone7245742012-09-05 17:12:55 -070018120 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018128 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018129 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 halConfigStaRsp.configStaRspParams.ucUcastSig;
18134 }
18135 }
18136
18137 /*Notify UMAC*/
18138 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18139
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018141}/*WDI_ProcessConfigStaRsp*/
18142
18143
18144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018147
18148 @param pWDICtx: pointer to the WLAN DAL context
18149 pEventData: pointer to the event information structure
18150
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 @see
18152 @return Result of the function call
18153*/
18154WDI_Status
18155WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018156(
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 WDI_ControlBlockType* pWDICtx,
18158 WDI_EventInfoType* pEventData
18159)
18160{
18161 WDI_Status wdiStatus;
18162 eHalStatus halStatus;
18163 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18164
18165 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18168
18169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 -------------------------------------------------------------------------*/
18172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18173 ( NULL == pEventData->pEventData))
18174 {
18175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 }
18180
18181 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18182
18183 wpalMutexAcquire(&pWDICtx->wptMutex);
18184
18185 /*If the link is being transitioned to idle - the BSS is to be deleted
18186 - this type of ending a session is possible when UMAC has failed an
18187 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18190 {
18191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018192 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018194 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18195 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18196 &pBSSSes);
18197
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 /*-----------------------------------------------------------------------
18199 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 -----------------------------------------------------------------------*/
18202 if ( NULL == pBSSSes )
18203 {
18204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18205 "Set link response received outside association session");
18206 }
18207 else
18208 {
18209 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18210 will be del BSS coming after this to stop the beaconing & cleaning up the
18211 sessions*/
18212 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18213 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18214 {
18215 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 -----------------------------------------------------------------------*/
18218 WDI_DeleteSession(pWDICtx, pBSSSes);
18219
18220 /*-----------------------------------------------------------------------
18221 Check to see if this association is in progress - if so disable the
18222 flag as this has ended
18223 -----------------------------------------------------------------------*/
18224 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018225 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 /*Association no longer in progress */
18227 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18228 /*Association no longer in progress - prepare pending assoc for processing*/
18229 WDI_DequeueAssocRequest(pWDICtx);
18230 }
18231 }
18232 }
18233 }
18234 /* If the link state has been set to POST ASSOC, reset the "association in
18235 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18238 {
18239 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18240 WDI_DequeueAssocRequest(pWDICtx);
18241 }
18242
18243 wpalMutexRelease(&pWDICtx->wptMutex);
18244
18245 /*-------------------------------------------------------------------------
18246 Extract response and send it to UMAC
18247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 wpalMemoryCopy( &halStatus,
18249 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018250 sizeof(halStatus));
18251
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018253
18254 /*Notify UMAC*/
18255 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18256
Jeff Johnsone7245742012-09-05 17:12:55 -070018257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018258}/*WDI_ProcessSetLinkStateRsp*/
18259
18260/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018263
18264 @param pWDICtx: pointer to the WLAN DAL context
18265 pEventData: pointer to the event information structure
18266
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 @see
18268 @return Result of the function call
18269*/
18270WDI_Status
18271WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018272(
Jeff Johnson295189b2012-06-20 16:38:30 -070018273 WDI_ControlBlockType* pWDICtx,
18274 WDI_EventInfoType* pEventData
18275)
18276{
18277 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18278 WDI_GetStatsRspCb wdiGetStatsRspCb;
18279 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018280
Jeff Johnson295189b2012-06-20 16:38:30 -070018281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18282
18283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 -------------------------------------------------------------------------*/
18286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18287 ( NULL == pEventData->pEventData))
18288 {
18289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018293 }
18294
18295 /*-------------------------------------------------------------------------
18296 Extract response and send it to UMAC
18297 -------------------------------------------------------------------------*/
18298 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18299
18300 /*allocate the stats response buffer */
18301 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18302 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18303 + sizeof(WDI_GetStatsRspParamsType));
18304
18305 if(NULL == wdiGetStatsRsp)
18306 {
18307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018308 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 pWDICtx, pEventData, pEventData->pEventData);
18310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 }
18313
18314 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18315
18316 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18317 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18318 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18319 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18320 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18321 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18322
18323 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18324 wpalMemoryCopy(wdiGetStatsRsp + 1,
18325 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18326 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18327
18328 /*Notify UMAC*/
18329 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18330
18331 wpalMemoryFree(wdiGetStatsRsp);
18332
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018334}/*WDI_ProcessGetStatsRsp*/
18335
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018336#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018337/**
18338 @brief Process Get Roam Rssi Rsp function (called when a response is
18339 being received over the bus from HAL)
18340
18341 @param pWDICtx: pointer to the WLAN DAL context
18342 pEventData: pointer to the event information structure
18343
18344 @see
18345 @return Result of the function call
18346*/
18347WDI_Status
18348WDI_ProcessGetRoamRssiRsp
18349(
18350 WDI_ControlBlockType* pWDICtx,
18351 WDI_EventInfoType* pEventData
18352)
18353{
18354 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18355 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18356 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18358
18359 /*-------------------------------------------------------------------------
18360 Sanity check
18361 -------------------------------------------------------------------------*/
18362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18363 ( NULL == pEventData->pEventData))
18364 {
18365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18366 "%s: Invalid parameters", __func__);
18367 WDI_ASSERT(0);
18368 return WDI_STATUS_E_FAILURE;
18369 }
18370
18371 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18372 if(NULL == wdiGetRoamRssiRspCb)
18373 {
18374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18375 "%s: call back function is NULL", __func__);
18376 WDI_ASSERT(0);
18377 return WDI_STATUS_E_FAILURE;
18378 }
18379
18380 /*-------------------------------------------------------------------------
18381 Extract response and send it to UMAC
18382 -------------------------------------------------------------------------*/
18383 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18384 pEventData->pEventData,
18385 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18386
18387 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18388 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18389 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18390
18391 /*Notify UMAC*/
18392 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18393
18394 return WDI_STATUS_SUCCESS;
18395}/*WDI_ProcessGetRoamRssiRsp*/
18396#endif
18397
Jeff Johnson295189b2012-06-20 16:38:30 -070018398
18399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018402
18403 @param pWDICtx: pointer to the WLAN DAL context
18404 pEventData: pointer to the event information structure
18405
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 @see
18407 @return Result of the function call
18408*/
18409WDI_Status
18410WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018411(
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 WDI_ControlBlockType* pWDICtx,
18413 WDI_EventInfoType* pEventData
18414)
18415{
18416 WDI_Status wdiStatus;
18417 eHalStatus halStatus;
18418 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18420
18421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 -------------------------------------------------------------------------*/
18424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18425 ( NULL == pEventData->pEventData))
18426 {
18427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018431 }
18432
18433 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18434
18435 /*-------------------------------------------------------------------------
18436 Extract response and send it to UMAC
18437 -------------------------------------------------------------------------*/
18438 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018440
18441 /*Notify UMAC*/
18442 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18443
Jeff Johnsone7245742012-09-05 17:12:55 -070018444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018445}/*WDI_ProcessUpdateCfgRsp*/
18446
18447
18448
18449/**
18450 @brief Process Add BA Rsp function (called when a response
18451 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018452
18453 @param pWDICtx: pointer to the WLAN DAL context
18454 pEventData: pointer to the event information structure
18455
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 @see
18457 @return Result of the function call
18458*/
18459WDI_Status
18460WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018461(
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 WDI_ControlBlockType* pWDICtx,
18463 WDI_EventInfoType* pEventData
18464)
18465{
18466 WDI_AddBARspCb wdiAddBARspCb;
18467
18468 tAddBARspParams halAddBARsp;
18469 WDI_AddBARspinfoType wdiAddBARsp;
18470
18471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18472
18473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 -------------------------------------------------------------------------*/
18476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18477 ( NULL == pEventData->pEventData))
18478 {
18479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 }
18484
18485 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18486
18487 /*-------------------------------------------------------------------------
18488 Extract response and send it to UMAC
18489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 wpalMemoryCopy( &halAddBARsp,
18491 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 sizeof(halAddBARsp));
18493
18494 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18495
Jeff Johnson43971f52012-07-17 12:26:56 -070018496 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 {
18498 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18499 }
18500
18501 /*Notify UMAC*/
18502 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18503
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018505}/*WDI_ProcessAddSessionBARsp*/
18506
18507/**
18508 @brief Process Add BA Rsp function (called when a response
18509 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018510
18511 @param pWDICtx: pointer to the WLAN DAL context
18512 pEventData: pointer to the event information structure
18513
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 @see
18515 @return Result of the function call
18516*/
18517WDI_Status
18518WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018519(
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 WDI_ControlBlockType* pWDICtx,
18521 WDI_EventInfoType* pEventData
18522)
18523{
18524 WDI_TriggerBARspCb wdiTriggerBARspCb;
18525
18526 tTriggerBARspParams* halTriggerBARsp;
18527 tTriggerBaRspCandidate* halBaCandidate;
18528 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18529 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18530 wpt_uint16 index;
18531 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018532 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18534
18535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 -------------------------------------------------------------------------*/
18538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18539 ( NULL == pEventData->pEventData))
18540 {
18541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 }
18546
18547 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18548
18549 /*-------------------------------------------------------------------------
18550 Extract response and send it to UMAC
18551 -------------------------------------------------------------------------*/
18552 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18553
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018554 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18555
18556 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18557 {
18558 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018561
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018562 if(NULL == wdiTriggerBARsp)
18563 {
18564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018565 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018566 pWDICtx, pEventData, pEventData->pEventData);
18567 WDI_ASSERT(0);
18568 return WDI_STATUS_E_FAILURE;
18569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018570
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018571 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18572
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018574 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18576
18577 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18578 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18579
18580 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18581 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18584 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18585 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018588 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18590 }
18591 wdiTriggerBARspCandidate++;
18592 halBaCandidate++;
18593 }
18594 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018595 else
18596 {
18597 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18598
18599 if(NULL == wdiTriggerBARsp)
18600 {
18601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018602 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018603 pWDICtx, pEventData, pEventData->pEventData);
18604 WDI_ASSERT(0);
18605 return WDI_STATUS_E_FAILURE;
18606 }
18607
18608 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18609
18610 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018611
18612 /*Notify UMAC*/
18613 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18614
18615 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018617}/*WDI_ProcessAddSessionBARsp*/
18618
18619/**
18620 @brief Process Update Beacon Params Rsp function (called when a response
18621 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018622
18623 @param pWDICtx: pointer to the WLAN DAL context
18624 pEventData: pointer to the event information structure
18625
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 @see
18627 @return Result of the function call
18628*/
18629WDI_Status
18630WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018631(
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 WDI_ControlBlockType* pWDICtx,
18633 WDI_EventInfoType* pEventData
18634)
18635{
18636 WDI_Status wdiStatus;
18637 eHalStatus halStatus;
18638 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18640
18641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 -------------------------------------------------------------------------*/
18644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18645 ( NULL == pEventData->pEventData))
18646 {
18647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 }
18652
18653 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18654
18655 /*-------------------------------------------------------------------------
18656 Extract response and send it to UMAC
18657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018658 wpalMemoryCopy( &halStatus,
18659 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 sizeof(halStatus));
18661
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018663
18664 /*Notify UMAC*/
18665 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18666
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018668}/*WDI_ProcessUpdateBeaconParamsRsp*/
18669
18670/**
18671 @brief Process Send Beacon template Rsp function (called when a response
18672 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018673
18674 @param pWDICtx: pointer to the WLAN DAL context
18675 pEventData: pointer to the event information structure
18676
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 @see
18678 @return Result of the function call
18679*/
18680WDI_Status
18681WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018682(
Jeff Johnson295189b2012-06-20 16:38:30 -070018683 WDI_ControlBlockType* pWDICtx,
18684 WDI_EventInfoType* pEventData
18685)
18686{
18687 WDI_Status wdiStatus;
18688 eHalStatus halStatus;
18689 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18691
18692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 -------------------------------------------------------------------------*/
18695 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18696 ( NULL == pEventData->pEventData))
18697 {
18698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 }
18703
18704 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18705
18706 /*-------------------------------------------------------------------------
18707 Extract response and send it to UMAC
18708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018709 wpalMemoryCopy( &halStatus,
18710 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 sizeof(halStatus));
18712
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018714
18715 /*Notify UMAC*/
18716 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18717
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018719}/*WDI_ProcessSendBeaconParamsRsp*/
18720
Jeff Johnsone7245742012-09-05 17:12:55 -070018721
Jeff Johnson295189b2012-06-20 16:38:30 -070018722/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018725
18726 @param pWDICtx: pointer to the WLAN DAL context
18727 pEventData: pointer to the event information structure
18728
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 @see
18730 @return Result of the function call
18731*/
18732WDI_Status
18733WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018734(
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 WDI_ControlBlockType* pWDICtx,
18736 WDI_EventInfoType* pEventData
18737)
18738{
18739 WDI_Status wdiStatus;
18740 eHalStatus halStatus;
18741 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18743
18744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 -------------------------------------------------------------------------*/
18747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18748 ( NULL == pEventData->pEventData))
18749 {
18750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 }
18755
18756 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18757
18758 /*-------------------------------------------------------------------------
18759 Extract response and send it to UMAC
18760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 wpalMemoryCopy( &halStatus,
18762 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 sizeof(halStatus));
18764
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018766
18767 /*Notify UMAC*/
18768 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18769
Jeff Johnsone7245742012-09-05 17:12:55 -070018770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018771}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18772
18773 /**
18774 @brief Process Set Max Tx Power Rsp function (called when a response
18775 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018776
18777 @param pWDICtx: pointer to the WLAN DAL context
18778 pEventData: pointer to the event information structure
18779
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 @see
18781 @return Result of the function call
18782*/
18783WDI_Status
18784WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018785(
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 WDI_ControlBlockType* pWDICtx,
18787 WDI_EventInfoType* pEventData
18788)
18789{
18790 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018791
Jeff Johnson295189b2012-06-20 16:38:30 -070018792 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018793
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18796
18797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 -------------------------------------------------------------------------*/
18800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18801 ( NULL == pEventData->pEventData))
18802 {
18803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 }
18808
18809 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18810
18811 /*-------------------------------------------------------------------------
18812 Extract response and send it to UMAC
18813 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018814 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18815 pEventData->pEventData,
18816 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
18818 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18819 {
18820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18821 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 }
18824
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018828
18829 /*Notify UMAC*/
18830 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833}
18834
schang86c22c42013-03-13 18:41:24 -070018835 /**
18836 @brief Process Set Tx Power Rsp function (called when a response
18837 is being received over the bus from HAL)
18838
18839 @param pWDICtx: pointer to the WLAN DAL context
18840 pEventData: pointer to the event information structure
18841
18842 @see
18843 @return Result of the function call
18844*/
18845WDI_Status
18846WDI_ProcessSetTxPowerRsp
18847(
18848 WDI_ControlBlockType* pWDICtx,
18849 WDI_EventInfoType* pEventData
18850)
18851{
18852 tSetTxPwrRspMsg halTxpowerrsp;
18853 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18854 WDA_SetTxPowerRspCb wdiReqStatusCb;
18855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18856
18857 /*-------------------------------------------------------------------------
18858 Sanity check
18859 -------------------------------------------------------------------------*/
18860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18861 ( NULL == pEventData->pEventData))
18862 {
18863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18864 "%s: Invalid parameters", __func__);
18865 WDI_ASSERT(0);
18866 return WDI_STATUS_E_FAILURE;
18867 }
18868
18869 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18870
18871 /*-------------------------------------------------------------------------
18872 Extract response and send it to UMAC
18873 -------------------------------------------------------------------------*/
18874 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18875 pEventData->pEventData,
18876 sizeof(halTxpowerrsp.setTxPwrRspParams));
18877
18878 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18879 {
18880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18881 "Error status returned in Set Tx Power Response ");
18882 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18883 return WDI_STATUS_E_FAILURE;
18884 }
18885
18886 wdiSetTxPowerRspMsg.wdiStatus =
18887 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18888
18889 /*Notify UMAC*/
18890 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18891
18892 return WDI_STATUS_SUCCESS;
18893}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018894
18895/**
18896 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18897 is being received over the bus from HAL)
18898
18899 @param pWDICtx: pointer to the WLAN DAL context
18900 pEventData: pointer to the event information structure
18901
18902 @see
18903 @return Result of the function call
18904*/
18905WDI_Status
18906WDI_ProcessSetMaxTxPowerPerBandRsp
18907(
18908 WDI_ControlBlockType* pWDICtx,
18909 WDI_EventInfoType* pEventData
18910)
18911{
18912 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18913 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18914 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18916
18917 /*-------------------------------------------------------------------------
18918 Sanity check
18919 -------------------------------------------------------------------------*/
18920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18921 ( NULL == pEventData->pEventData))
18922 {
18923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18924 "%s: Invalid parameters", __func__);
18925 WDI_ASSERT(0);
18926 return WDI_STATUS_E_FAILURE;
18927 }
18928
18929 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18930
18931 /*-------------------------------------------------------------------------
18932 Extract response and send it to UMAC
18933 -------------------------------------------------------------------------*/
18934 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18935 pEventData->pEventData,
18936 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18937
18938 if (eHAL_STATUS_SUCCESS !=
18939 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18940 {
18941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18942 "Error status returned in Set Max Tx Power Per Band Response");
18943 return WDI_STATUS_E_FAILURE;
18944 }
18945
18946 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18947 WDI_HAL_2_WDI_STATUS(
18948 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18949
18950 /* Notify UMAC */
18951 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18952
18953 return WDI_STATUS_SUCCESS;
18954}
18955
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018956#ifdef FEATURE_WLAN_TDLS
18957/**
18958 @brief Process TDLS Link Establish Rsp function (called
18959 when a response is being received over the bus from HAL)
18960
18961 @param pWDICtx: pointer to the WLAN DAL context
18962 pEventData: pointer to the event information structure
18963
18964 @see
18965 @return Result of the function call
18966*/
18967WDI_Status
18968WDI_ProcessLinkEstablishReqRsp
18969(
18970 WDI_ControlBlockType* pWDICtx,
18971 WDI_EventInfoType* pEventData
18972)
18973{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018974 eHalStatus halStatus;
18975 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018976 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18977 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18978
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18980
18981 /*-------------------------------------------------------------------------
18982 Sanity check
18983 -------------------------------------------------------------------------*/
18984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18985 ( NULL == pEventData->pEventData))
18986 {
18987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18988 "%s: Invalid parameters", __func__);
18989 WDI_ASSERT(0);
18990 return WDI_STATUS_E_FAILURE;
18991 }
18992
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018993 /*-------------------------------------------------------------------------
18994 Extract indication and send it to UMAC
18995 -------------------------------------------------------------------------*/
18996 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18997 pEventData->pEventData,
18998 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18999
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019000 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19001
19002 /*-------------------------------------------------------------------------
19003 Extract response and send it to UMAC
19004 -------------------------------------------------------------------------*/
19005 wpalMemoryCopy( &halStatus,
19006 pEventData->pEventData,
19007 sizeof(halStatus));
19008
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019009 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19010 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019011
19012 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019013 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019014
19015 return WDI_STATUS_SUCCESS;
19016}/*WDI_ProcessLinkEstablishReqRsp*/
19017#endif
schang86c22c42013-03-13 18:41:24 -070019018
Jeff Johnson295189b2012-06-20 16:38:30 -070019019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019022
19023 @param pWDICtx: pointer to the WLAN DAL context
19024 pEventData: pointer to the event information structure
19025
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 @see
19027 @return Result of the function call
19028*/
19029WDI_Status
19030WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019031(
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 WDI_ControlBlockType* pWDICtx,
19033 WDI_EventInfoType* pEventData
19034)
19035{
19036 WDI_Status wdiStatus;
19037 eHalStatus halStatus;
19038 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19040
19041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 -------------------------------------------------------------------------*/
19044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19045 ( NULL == pEventData->pEventData))
19046 {
19047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 }
19052
19053 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19054
19055 /*-------------------------------------------------------------------------
19056 Extract response and send it to UMAC
19057 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019058 wpalMemoryCopy( &halStatus,
19059 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 sizeof(halStatus));
19061
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019063
19064 /*Notify UMAC*/
19065 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19066
Jeff Johnsone7245742012-09-05 17:12:55 -070019067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019068}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019072
19073 @param pWDICtx: pointer to the WLAN DAL context
19074 pEventData: pointer to the event information structure
19075
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 @see
19077 @return Result of the function call
19078*/
19079WDI_Status
19080WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019081(
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 WDI_ControlBlockType* pWDICtx,
19083 WDI_EventInfoType* pEventData
19084)
19085{
19086 WDI_Status wdiStatus;
19087 eHalStatus halStatus;
19088 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019089 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19091
19092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 -------------------------------------------------------------------------*/
19095 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19096 ( NULL == pEventData->pEventData))
19097 {
19098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 }
19103
19104 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19105
19106 /*-------------------------------------------------------------------------
19107 Extract response and send it to UMAC
19108 -------------------------------------------------------------------------*/
19109 halStatus = *((eHalStatus*)pEventData->pEventData);
19110
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019112
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019113 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19114 * Other module states are taken care by PMC.
19115 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19116 */
19117 if (wdiStatus != WDI_STATUS_SUCCESS) {
19118
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19120 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19121 halStatus);
19122 /* Call Back is not required as we are putting the DXE in FULL
19123 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019124 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19125
19126 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019128 "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 -080019129 WDI_ASSERT(0);
19130 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 /*Notify UMAC*/
19133 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19134
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019136}/*WDI_ProcessEnterImpsRsp*/
19137
19138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019141
19142 @param pWDICtx: pointer to the WLAN DAL context
19143 pEventData: pointer to the event information structure
19144
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 @see
19146 @return Result of the function call
19147*/
19148WDI_Status
19149WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019150(
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 WDI_ControlBlockType* pWDICtx,
19152 WDI_EventInfoType* pEventData
19153)
19154{
19155 WDI_Status wdiStatus;
19156 eHalStatus halStatus;
19157 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019158 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19160
19161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 -------------------------------------------------------------------------*/
19164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19165 ( NULL == pEventData->pEventData))
19166 {
19167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 }
19172
19173 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19174
19175 /*-------------------------------------------------------------------------
19176 Extract response and send it to UMAC
19177 -------------------------------------------------------------------------*/
19178 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019180
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019181 if (halStatus != eHAL_STATUS_SUCCESS)
19182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19183 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19184
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019186 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19187 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19188 {
19189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019190 "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 -080019191 WDI_ASSERT(0);
19192 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019193 /*Notify UMAC*/
19194 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19195
Jeff Johnsone7245742012-09-05 17:12:55 -070019196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019197}/*WDI_ProcessExitImpsRsp*/
19198
19199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019200 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019202
19203 @param pWDICtx: pointer to the WLAN DAL context
19204 pEventData: pointer to the event information structure
19205
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 @see
19207 @return Result of the function call
19208*/
19209WDI_Status
19210WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019211(
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 WDI_ControlBlockType* pWDICtx,
19213 WDI_EventInfoType* pEventData
19214)
19215{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019216 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19217 tHalEnterBmpsRspParams halEnterBmpsRsp;
19218 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19219 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019220 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19222
19223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019225 -------------------------------------------------------------------------*/
19226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19227 ( NULL == pEventData->pEventData))
19228 {
19229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 }
19234
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019236 Extract response and send it to UMAC
19237 -------------------------------------------------------------------------*/
19238 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19239 {
19240 wpalMemoryCopy( &halEnterBmpsRsp,
19241 pEventData->pEventData,
19242 sizeof(halEnterBmpsRsp));
19243
19244 //Used to print debug message
19245 halStatus = halEnterBmpsRsp.status;
19246 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19247 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19248 }
19249 else
19250 {
19251 halStatus = *((eHalStatus*)pEventData->pEventData);
19252 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19253 }
19254
19255 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019256
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019257 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19258 * Other module states are taken care by PMC.
19259 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19260 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019261 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19262 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019263
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019265 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19266 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019267 /* Call Back is not required as we are putting the DXE in FULL
19268 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019269 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19270 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19271 {
19272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019273 "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 -080019274 WDI_ASSERT(0);
19275 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019276 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019277 }
19278
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019280 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019281
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283}/*WDI_ProcessEnterBmpsRsp*/
19284
19285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019286 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019288
19289 @param pWDICtx: pointer to the WLAN DAL context
19290 pEventData: pointer to the event information structure
19291
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 @see
19293 @return Result of the function call
19294*/
19295WDI_Status
19296WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019297(
Jeff Johnson295189b2012-06-20 16:38:30 -070019298 WDI_ControlBlockType* pWDICtx,
19299 WDI_EventInfoType* pEventData
19300)
19301{
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 eHalStatus halStatus;
19303 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019304 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019305 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19306 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19308
19309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 -------------------------------------------------------------------------*/
19312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19313 ( NULL == pEventData->pEventData))
19314 {
19315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 }
19320
19321 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19322
19323 /*-------------------------------------------------------------------------
19324 Extract response and send it to UMAC
19325 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019326
19327 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19328 {
19329 wpalMemoryCopy( &halExitBmpsRsp,
19330 pEventData->pEventData,
19331 sizeof(halExitBmpsRsp));
19332
19333 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19334 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19335 }
19336 else
19337 {
19338 halStatus = *((eHalStatus*)pEventData->pEventData);
19339 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19340 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019341
19342 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019343 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19344 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19345 {
19346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019347 "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 -080019348 WDI_ASSERT(0);
19349 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019350 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19351
19352 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019353 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019354
Jeff Johnsone7245742012-09-05 17:12:55 -070019355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019356}/*WDI_ProcessExitBmpsRsp*/
19357
19358/**
19359 @brief Process Enter UAPSD Rsp function (called when a response
19360 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019361
19362 @param pWDICtx: pointer to the WLAN DAL context
19363 pEventData: pointer to the event information structure
19364
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 @see
19366 @return Result of the function call
19367*/
19368WDI_Status
19369WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019370(
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 WDI_ControlBlockType* pWDICtx,
19372 WDI_EventInfoType* pEventData
19373)
19374{
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019376 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019378 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19379
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19381
19382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 -------------------------------------------------------------------------*/
19385 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19386 ( NULL == pEventData->pEventData))
19387 {
19388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 }
19393
19394 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19395
19396 /*-------------------------------------------------------------------------
19397 Extract response and send it to UMAC
19398 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019399 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19400 {
19401 wpalMemoryCopy( &halEnterUapsdRsp,
19402 pEventData->pEventData,
19403 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019405 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19406 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19407 }
19408 else
19409 {
19410 halStatus = *((eHalStatus*)pEventData->pEventData);
19411 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19412 }
19413
19414 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 {
19416 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19417 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19418 // the traffic to decide when to suspend the trigger frames when there is no traffic
19419 // activity on the trigger enabled ACs
19420 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19421
19422#ifdef WLAN_PERF
19423 // Increment the BD signature to refresh the fast path BD utilization
19424 pWDICtx->uBdSigSerialNum++;
19425#endif
19426 }
19427
19428 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019429 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019430
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019432}/*WDI_ProcessEnterUapsdRsp*/
19433
19434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019437
19438 @param pWDICtx: pointer to the WLAN DAL context
19439 pEventData: pointer to the event information structure
19440
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 @see
19442 @return Result of the function call
19443*/
19444WDI_Status
19445WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019446(
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 WDI_ControlBlockType* pWDICtx,
19448 WDI_EventInfoType* pEventData
19449)
19450{
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 eHalStatus halStatus;
19452 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019453 tHalExitUapsdRspParams halExitUapsdRsp;
19454 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19456
19457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 -------------------------------------------------------------------------*/
19460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19461 ( NULL == pEventData->pEventData))
19462 {
19463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 }
19468
19469 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19470
19471 /*-------------------------------------------------------------------------
19472 Extract response and send it to UMAC
19473 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019474 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19475 {
19476 wpalMemoryCopy( &halExitUapsdRsp,
19477 pEventData->pEventData,
19478 sizeof(halExitUapsdRsp));
19479
19480 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19481 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19482 }
19483 else
19484 {
19485 halStatus = *((eHalStatus*)pEventData->pEventData);
19486 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19487 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19489 // directly instead of the FW WQ.
19490 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19491
19492#ifdef WLAN_PERF
19493 // Increment the BD signature to refresh the fast path BD utilization
19494 pWDICtx->uBdSigSerialNum++;
19495#endif
19496
19497 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019498 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019499
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019501}/*WDI_ProcessExitUapsdRsp*/
19502
19503/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019506
19507 @param pWDICtx: pointer to the WLAN DAL context
19508 pEventData: pointer to the event information structure
19509
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 @see
19511 @return Result of the function call
19512*/
19513WDI_Status
19514WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019515(
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 WDI_ControlBlockType* pWDICtx,
19517 WDI_EventInfoType* pEventData
19518)
19519{
19520 WDI_Status wdiStatus;
19521 eHalStatus halStatus;
19522 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19524
19525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019526 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019527 -------------------------------------------------------------------------*/
19528 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19529 ( NULL == pEventData->pEventData))
19530 {
19531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 }
19536
19537 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19538
19539 /*-------------------------------------------------------------------------
19540 Extract response and send it to UMAC
19541 -------------------------------------------------------------------------*/
19542 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019544
19545 /*Notify UMAC*/
19546 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19547
Jeff Johnsone7245742012-09-05 17:12:55 -070019548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019549}/*WDI_ProcessSetUapsdAcParamsRsp*/
19550
19551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019554
19555 @param pWDICtx: pointer to the WLAN DAL context
19556 pEventData: pointer to the event information structure
19557
Jeff Johnson295189b2012-06-20 16:38:30 -070019558 @see
19559 @return Result of the function call
19560*/
19561WDI_Status
19562WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019563(
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 WDI_ControlBlockType* pWDICtx,
19565 WDI_EventInfoType* pEventData
19566)
19567{
19568 WDI_Status wdiStatus;
19569 eHalStatus halStatus;
19570 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19572
19573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 -------------------------------------------------------------------------*/
19576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19577 ( NULL == pEventData->pEventData))
19578 {
19579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019583 }
19584
19585 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19586
19587 /*-------------------------------------------------------------------------
19588 Extract response and send it to UMAC
19589 -------------------------------------------------------------------------*/
19590 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019592
19593 /*Notify UMAC*/
19594 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19595
Jeff Johnsone7245742012-09-05 17:12:55 -070019596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019597}/*WDI_ProcessUpdateUapsdParamsRsp*/
19598
19599/**
19600 @brief Process Configure RXP filter Rsp function (called when a
19601 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019602
19603 @param pWDICtx: pointer to the WLAN DAL context
19604 pEventData: pointer to the event information structure
19605
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 @see
19607 @return Result of the function call
19608*/
19609WDI_Status
19610WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019611(
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 WDI_ControlBlockType* pWDICtx,
19613 WDI_EventInfoType* pEventData
19614)
19615{
19616 WDI_Status wdiStatus;
19617 eHalStatus halStatus;
19618 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19620
19621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 -------------------------------------------------------------------------*/
19624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19625 ( NULL == pEventData->pEventData))
19626 {
19627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 }
19632
19633 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19634
19635 /*-------------------------------------------------------------------------
19636 Extract response and send it to UMAC
19637 -------------------------------------------------------------------------*/
19638 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019640
19641 /*Notify UMAC*/
19642 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19643
Jeff Johnsone7245742012-09-05 17:12:55 -070019644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019645}/*WDI_ProcessConfigureRxpFilterRsp*/
19646
19647/**
19648 @brief Process Set beacon filter Rsp function (called when a
19649 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019650
19651 @param pWDICtx: pointer to the WLAN DAL context
19652 pEventData: pointer to the event information structure
19653
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 @see
19655 @return Result of the function call
19656*/
19657WDI_Status
19658WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019659(
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 WDI_ControlBlockType* pWDICtx,
19661 WDI_EventInfoType* pEventData
19662)
19663{
19664 WDI_Status wdiStatus;
19665 eHalStatus halStatus;
19666 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19668
19669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 -------------------------------------------------------------------------*/
19672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19673 ( NULL == pEventData->pEventData))
19674 {
19675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 }
19680
19681 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19682
19683 /*-------------------------------------------------------------------------
19684 Extract response and send it to UMAC
19685 -------------------------------------------------------------------------*/
19686 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019688
19689 /*Notify UMAC*/
19690 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19691
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019693}/*WDI_ProcessSetBeaconFilterRsp*/
19694
19695/**
19696 @brief Process remove beacon filter Rsp function (called when a
19697 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019698
19699 @param pWDICtx: pointer to the WLAN DAL context
19700 pEventData: pointer to the event information structure
19701
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 @see
19703 @return Result of the function call
19704*/
19705WDI_Status
19706WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019707(
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 WDI_ControlBlockType* pWDICtx,
19709 WDI_EventInfoType* pEventData
19710)
19711{
19712 WDI_Status wdiStatus;
19713 eHalStatus halStatus;
19714 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19716
19717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 -------------------------------------------------------------------------*/
19720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19721 ( NULL == pEventData->pEventData))
19722 {
19723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 }
19728
19729 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19730
19731 /*-------------------------------------------------------------------------
19732 Extract response and send it to UMAC
19733 -------------------------------------------------------------------------*/
19734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019736
19737 /*Notify UMAC*/
19738 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19739
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019741}/*WDI_ProcessRemBeaconFilterRsp*/
19742
19743/**
19744 @brief Process set RSSI thresholds Rsp function (called when a
19745 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019746
19747 @param pWDICtx: pointer to the WLAN DAL context
19748 pEventData: pointer to the event information structure
19749
Jeff Johnson295189b2012-06-20 16:38:30 -070019750 @see
19751 @return Result of the function call
19752*/
19753WDI_Status
19754WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019755(
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 WDI_ControlBlockType* pWDICtx,
19757 WDI_EventInfoType* pEventData
19758)
19759{
19760 WDI_Status wdiStatus;
19761 eHalStatus halStatus;
19762 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19764
19765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 -------------------------------------------------------------------------*/
19768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19769 ( NULL == pEventData->pEventData))
19770 {
19771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 }
19776
19777 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19778
19779 /*-------------------------------------------------------------------------
19780 Extract response and send it to UMAC
19781 -------------------------------------------------------------------------*/
19782 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019784
19785 /*Notify UMAC*/
19786 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19787
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019789}/*WDI_ProcessSetRSSIThresoldsRsp*/
19790
19791/**
19792 @brief Process host offload Rsp function (called when a
19793 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019794
19795 @param pWDICtx: pointer to the WLAN DAL context
19796 pEventData: pointer to the event information structure
19797
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 @see
19799 @return Result of the function call
19800*/
19801WDI_Status
19802WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019803(
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 WDI_ControlBlockType* pWDICtx,
19805 WDI_EventInfoType* pEventData
19806)
19807{
19808 WDI_Status wdiStatus;
19809 eHalStatus halStatus;
19810 WDI_HostOffloadCb wdiHostOffloadCb;
19811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19812
19813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 -------------------------------------------------------------------------*/
19816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19817 ( NULL == pEventData->pEventData))
19818 {
19819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 }
19824
19825 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19826
19827 /*-------------------------------------------------------------------------
19828 Extract response and send it to UMAC
19829 -------------------------------------------------------------------------*/
19830 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019832
19833 /*Notify UMAC*/
19834 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19835
Jeff Johnsone7245742012-09-05 17:12:55 -070019836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019837}/*WDI_ProcessHostOffloadRsp*/
19838
19839/**
19840 @brief Process keep alive Rsp function (called when a
19841 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019842
19843 @param pWDICtx: pointer to the WLAN DAL context
19844 pEventData: pointer to the event information structure
19845
Jeff Johnson295189b2012-06-20 16:38:30 -070019846 @see
19847 @return Result of the function call
19848*/
19849WDI_Status
19850WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019851(
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 WDI_ControlBlockType* pWDICtx,
19853 WDI_EventInfoType* pEventData
19854)
19855{
19856 WDI_Status wdiStatus;
19857 eHalStatus halStatus;
19858 WDI_KeepAliveCb wdiKeepAliveCb;
19859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19861 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19862
19863
19864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 -------------------------------------------------------------------------*/
19867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19868 ( NULL == pEventData->pEventData))
19869 {
19870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 }
19875
Jeff Johnsone7245742012-09-05 17:12:55 -070019876 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19877
Jeff Johnson295189b2012-06-20 16:38:30 -070019878 /*-------------------------------------------------------------------------
19879 Extract response and send it to UMAC
19880 -------------------------------------------------------------------------*/
19881 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019883
19884 /*Notify UMAC*/
19885 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19886
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019888}/*WDI_ProcessKeepAliveRsp*/
19889
19890/**
19891 @brief Process wowl add ptrn Rsp function (called when a
19892 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019893
19894 @param pWDICtx: pointer to the WLAN DAL context
19895 pEventData: pointer to the event information structure
19896
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 @see
19898 @return Result of the function call
19899*/
19900WDI_Status
19901WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019902(
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 WDI_ControlBlockType* pWDICtx,
19904 WDI_EventInfoType* pEventData
19905)
19906{
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 eHalStatus halStatus;
19908 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019909 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19910 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19911
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19913
19914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 -------------------------------------------------------------------------*/
19917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19918 ( NULL == pEventData->pEventData))
19919 {
19920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019924 }
19925
19926 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19927
19928 /*-------------------------------------------------------------------------
19929 Extract response and send it to UMAC
19930 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019931 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19932 {
19933 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19934 pEventData->pEventData,
19935 sizeof(halAddWowlBcastPtrRsp));
19936
19937 wdiWowlAddBcPtrRsp.wdiStatus =
19938 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19939 }
19940 else
19941 {
19942 halStatus = *((eHalStatus*)pEventData->pEventData);
19943 wdiWowlAddBcPtrRsp.wdiStatus =
19944 WDI_HAL_2_WDI_STATUS(halStatus);
19945 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019946
19947 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019948 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019949
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019951}/*WDI_ProcessWowlAddBcPtrnRsp*/
19952
19953/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019954 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019956
19957 @param pWDICtx: pointer to the WLAN DAL context
19958 pEventData: pointer to the event information structure
19959
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 @see
19961 @return Result of the function call
19962*/
19963WDI_Status
19964WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019965(
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 WDI_ControlBlockType* pWDICtx,
19967 WDI_EventInfoType* pEventData
19968)
19969{
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 eHalStatus halStatus;
19971 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019972 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19973 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19975
19976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 -------------------------------------------------------------------------*/
19979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19980 ( NULL == pEventData->pEventData))
19981 {
19982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 }
19987
19988 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19989
19990 /*-------------------------------------------------------------------------
19991 Extract response and send it to UMAC
19992 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019993 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19994 {
19995 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19996 pEventData->pEventData,
19997 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019998
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019999 wdiWowlDelBcstPtrRsp.wdiStatus =
20000 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20001 }
20002 else
20003 {
20004 halStatus = *((eHalStatus*)pEventData->pEventData);
20005 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020008 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020009
Jeff Johnsone7245742012-09-05 17:12:55 -070020010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020011}/*WDI_ProcessWowlDelBcPtrnRsp*/
20012
20013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020016
20017 @param pWDICtx: pointer to the WLAN DAL context
20018 pEventData: pointer to the event information structure
20019
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 @see
20021 @return Result of the function call
20022*/
20023WDI_Status
20024WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020025(
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 WDI_ControlBlockType* pWDICtx,
20027 WDI_EventInfoType* pEventData
20028)
20029{
Jeff Johnson295189b2012-06-20 16:38:30 -070020030 eHalStatus halStatus;
20031 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020032 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20033 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20035
20036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 -------------------------------------------------------------------------*/
20039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20040 ( NULL == pEventData->pEventData))
20041 {
20042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 }
20047
20048 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20049
20050 /*-------------------------------------------------------------------------
20051 Extract response and send it to UMAC
20052 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020053 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20054 {
20055 wpalMemoryCopy( &halEnterWowlRspParams,
20056 (wpt_uint8*)pEventData->pEventData,
20057 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020058
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020059 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20060 wdiwowlEnterRsp.status =
20061 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20062 }
20063 else
20064 {
20065 halStatus = *((eHalStatus*)pEventData->pEventData);
20066 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20067 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020069 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020070
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020072}/*WDI_ProcessWowlEnterRsp*/
20073
20074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020077
20078 @param pWDICtx: pointer to the WLAN DAL context
20079 pEventData: pointer to the event information structure
20080
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 @see
20082 @return Result of the function call
20083*/
20084WDI_Status
20085WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020086(
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 WDI_ControlBlockType* pWDICtx,
20088 WDI_EventInfoType* pEventData
20089)
20090{
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 eHalStatus halStatus;
20092 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020093 tHalExitWowlRspParams halExitWowlRspParams;
20094 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20095
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20097
20098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 -------------------------------------------------------------------------*/
20101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20102 ( NULL == pEventData->pEventData))
20103 {
20104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 }
20109
20110 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20111
20112 /*-------------------------------------------------------------------------
20113 Extract response and send it to UMAC
20114 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020115 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20116 {
20117 wpalMemoryCopy( &halExitWowlRspParams,
20118 pEventData->pEventData,
20119 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020120
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020121 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20122 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20123
20124 }
20125 else
20126 {
20127 halStatus = *((eHalStatus*)pEventData->pEventData);
20128 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20129 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020131 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020132
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020134}/*WDI_ProcessWowlExitRsp*/
20135
20136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020137 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 (called when a response is being received over the bus
20139 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020140
20141 @param pWDICtx: pointer to the WLAN DAL context
20142 pEventData: pointer to the event information structure
20143
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 @see
20145 @return Result of the function call
20146*/
20147WDI_Status
20148WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020149(
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 WDI_ControlBlockType* pWDICtx,
20151 WDI_EventInfoType* pEventData
20152)
20153{
20154 WDI_Status wdiStatus;
20155 eHalStatus halStatus;
20156 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20158
20159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 -------------------------------------------------------------------------*/
20162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20163 ( NULL == pEventData->pEventData))
20164 {
20165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020169 }
20170
20171 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20172
20173 /*-------------------------------------------------------------------------
20174 Extract response and send it to UMAC
20175 -------------------------------------------------------------------------*/
20176 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020178
20179 /*Notify UMAC*/
20180 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20181
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020183}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20184
20185
20186/**
20187 @brief Process Nv download(called when a response
20188 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020189
20190 @param pWDICtx: pointer to the WLAN DAL context
20191 pEventData: pointer to the event information structure
20192
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 @see
20194 @return Result of the function call
20195*/
20196WDI_Status
20197WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020198(
Jeff Johnson295189b2012-06-20 16:38:30 -070020199 WDI_ControlBlockType* pWDICtx,
20200 WDI_EventInfoType* pEventData
20201)
20202{
20203
20204 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20205 tHalNvImgDownloadRspParams halNvDownloadRsp;
20206 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20207
20208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 -------------------------------------------------------------------------*/
20211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20212 ( NULL == pEventData->pEventData))
20213 {
20214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 }
20219
20220 /*-------------------------------------------------------------------------
20221 Extract response and send it to UMAC
20222 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 wpalMemoryCopy( &halNvDownloadRsp,
20224 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 sizeof(halNvDownloadRsp));
20226
20227 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20228
20229 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20231 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 {
20233 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020234 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 }
20236 else
20237 {
20238 /*Reset the Nv related global information in WDI context information */
20239 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20240 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20241 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20242 /*call WDA callback function for last fragment */
20243 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20244 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20245 }
20246
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020248}
20249#ifdef WLAN_FEATURE_VOWIFI_11R
20250/**
20251 @brief Process Add TSpec Rsp function (called when a response
20252 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020253
20254 @param pWDICtx: pointer to the WLAN DAL context
20255 pEventData: pointer to the event information structure
20256
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 @see
20258 @return Result of the function call
20259*/
20260WDI_Status
20261WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020262(
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 WDI_ControlBlockType* pWDICtx,
20264 WDI_EventInfoType* pEventData
20265)
20266{
20267 WDI_Status wdiStatus;
20268 tAggrAddTsRspParams aggrAddTsRsp;
20269 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20271
20272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020274 -------------------------------------------------------------------------*/
20275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20276 ( NULL == pEventData->pEventData))
20277 {
20278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 }
20283
20284 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20285
20286 /*-------------------------------------------------------------------------
20287 Extract response and send it to UMAC
20288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 wpalMemoryCopy( &aggrAddTsRsp,
20290 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 sizeof(aggrAddTsRsp));
20292
20293 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020295
20296 /*Notify UMAC*/
20297 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20298
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020300}/*WDI_ProcessAddTSpecRsp*/
20301#endif /* WLAN_FEATURE_VOWIFI_11R */
20302
20303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020306
20307 @param pWDICtx: pointer to the WLAN DAL context
20308 pEventData: pointer to the event information structure
20309
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 @see
20311 @return Result of the function call
20312*/
20313WDI_Status
20314WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020315(
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 WDI_ControlBlockType* pWDICtx,
20317 WDI_EventInfoType* pEventData
20318)
20319{
20320 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20321 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20322 tHalHostResumeRspParams hostResumeRspMsg;
20323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20324
20325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 -------------------------------------------------------------------------*/
20328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20329 ( NULL == pEventData->pEventData))
20330 {
20331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020332 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 }
20336
20337 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20338
20339 /*-------------------------------------------------------------------------
20340 Extract response and send it to UMAC
20341 -------------------------------------------------------------------------*/
20342
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 (wpt_uint8*)pEventData->pEventData,
20345 sizeof(hostResumeRspMsg));
20346
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 wdiResumeRspParams.wdiStatus =
20348 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020349
20350 /*Notify UMAC*/
20351 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20352
20353 return WDI_STATUS_SUCCESS;
20354}
20355
20356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020359
20360 @param pWDICtx: pointer to the WLAN DAL context
20361 pEventData: pointer to the event information structure
20362
Jeff Johnson295189b2012-06-20 16:38:30 -070020363 @see
20364 @return Result of the function call
20365*/
20366WDI_Status
20367WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020368(
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 WDI_ControlBlockType* pWDICtx,
20370 WDI_EventInfoType* pEventData
20371)
20372{
20373 WDI_Status wdiStatus;
20374 eHalStatus halStatus;
20375 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20377
20378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 -------------------------------------------------------------------------*/
20381 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20382 ( NULL == pEventData->pEventData))
20383 {
20384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020389
20390 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020391
20392 /*-------------------------------------------------------------------------
20393 Extract response and send it to UMAC
20394 -------------------------------------------------------------------------*/
20395 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020397
20398 /*Notify UMAC*/
20399 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20400
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402}/*WDI_ProcessSetTxPerTrackingRsp*/
20403
20404/*==========================================================================
20405 Indications from HAL
20406 ==========================================================================*/
20407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020409 indication of this kind is being received over the bus
20410 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020411
20412 @param pWDICtx: pointer to the WLAN DAL context
20413 pEventData: pointer to the event information structure
20414
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 @see
20416 @return Result of the function call
20417*/
20418WDI_Status
20419WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020420(
Jeff Johnson295189b2012-06-20 16:38:30 -070020421 WDI_ControlBlockType* pWDICtx,
20422 WDI_EventInfoType* pEventData
20423)
20424{
20425 WDI_LowLevelIndType wdiInd;
20426 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20428
20429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 -------------------------------------------------------------------------*/
20432 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20433 ( NULL == pEventData->pEventData))
20434 {
20435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 }
20440
20441 /*-------------------------------------------------------------------------
20442 Extract indication and send it to UMAC
20443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20445 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020446 sizeof(tHalRSSINotification));
20447
20448 /*Fill in the indication parameters*/
20449 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20450 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20451 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20452 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20453 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20454 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20455 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20456 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20457 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20458 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20459 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20460 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20461 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020462 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20463 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020464
ltimariub77f24b2013-01-24 18:54:33 -080020465 if ( pWDICtx->wdiLowLevelIndCB )
20466 {
20467 /*Notify UMAC of indication*/
20468 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20469 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020470
20471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020472}/*WDI_ProcessLowRSSIInd*/
20473
20474
20475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 an indication of this kind is being received over the
20478 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020479
20480 @param pWDICtx: pointer to the WLAN DAL context
20481 pEventData: pointer to the event information structure
20482
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 @see
20484 @return Result of the function call
20485*/
20486WDI_Status
20487WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020488(
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 WDI_ControlBlockType* pWDICtx,
20490 WDI_EventInfoType* pEventData
20491)
20492{
20493 WDI_Status wdiStatus;
20494 eHalStatus halStatus;
20495 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020496 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20498
20499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020501 -------------------------------------------------------------------------*/
20502 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20503 ( NULL == pEventData->pEventData))
20504 {
20505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020509 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020510 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 /*-------------------------------------------------------------------------
20512 Extract indication and send it to UMAC
20513 -------------------------------------------------------------------------*/
20514 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20515 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020517
20518 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020520 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20521 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020522 if ( pWDICtx->wdiLowLevelIndCB )
20523 {
20524 /*Notify UMAC*/
20525 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20526 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
20528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020529}/*WDI_ProcessMissedBeaconInd*/
20530
20531
20532/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020534 an indication of this kind is being received over the
20535 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020536
20537 @param pWDICtx: pointer to the WLAN DAL context
20538 pEventData: pointer to the event information structure
20539
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 @see
20541 @return Result of the function call
20542*/
20543WDI_Status
20544WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020545(
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 WDI_ControlBlockType* pWDICtx,
20547 WDI_EventInfoType* pEventData
20548)
20549{
20550 WDI_Status wdiStatus;
20551 eHalStatus halStatus;
20552 WDI_LowLevelIndType wdiInd;
20553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20554
20555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 -------------------------------------------------------------------------*/
20558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20559 ( NULL == pEventData->pEventData))
20560 {
20561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 }
20566
20567 /*-------------------------------------------------------------------------
20568 Extract indication and send it to UMAC
20569 -------------------------------------------------------------------------*/
20570 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20571 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020572 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020573
20574 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020575 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 /* ! TO DO - fill in from HAL struct:
20577 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20578
ltimariub77f24b2013-01-24 18:54:33 -080020579 if ( pWDICtx->wdiLowLevelIndCB )
20580 {
20581 /*Notify UMAC*/
20582 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20583 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020584
20585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586}/*WDI_ProcessUnkAddrFrameInd*/
20587
20588
20589/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 indication of this kind is being received over the bus
20592 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020593
20594 @param pWDICtx: pointer to the WLAN DAL context
20595 pEventData: pointer to the event information structure
20596
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 @see
20598 @return Result of the function call
20599*/
20600WDI_Status
20601WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020602(
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 WDI_ControlBlockType* pWDICtx,
20604 WDI_EventInfoType* pEventData
20605)
20606{
20607 WDI_LowLevelIndType wdiInd;
20608 tpSirMicFailureInd pHalMicFailureInd;
20609
20610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20611
20612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 -------------------------------------------------------------------------*/
20615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20616 ( NULL == pEventData->pEventData))
20617 {
20618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020623
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20625 /*-------------------------------------------------------------------------
20626 Extract indication and send it to UMAC
20627 -------------------------------------------------------------------------*/
20628
20629 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020630 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020631 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20632 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20633 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20634 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20635 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20636 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20637 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20638 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020639 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 pHalMicFailureInd->info.keyId;
20645 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20646 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20647 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20648 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020649
20650 if ( pWDICtx->wdiLowLevelIndCB )
20651 {
20652 /*Notify UMAC*/
20653 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20654 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020655
20656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020657}/*WDI_ProcessMicFailureInd*/
20658
20659
20660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020661 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 an indication of this kind is being received over the
20663 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020664
20665 @param pWDICtx: pointer to the WLAN DAL context
20666 pEventData: pointer to the event information structure
20667
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 @see
20669 @return Result of the function call
20670*/
20671WDI_Status
20672WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020673(
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 WDI_ControlBlockType* pWDICtx,
20675 WDI_EventInfoType* pEventData
20676)
20677{
20678 WDI_Status wdiStatus;
20679 eHalStatus halStatus;
20680 WDI_LowLevelIndType wdiInd;
20681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20682
20683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 -------------------------------------------------------------------------*/
20686 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20687 ( NULL == pEventData->pEventData))
20688 {
20689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 }
20694
20695 /*-------------------------------------------------------------------------
20696 Extract indication and send it to UMAC
20697 -------------------------------------------------------------------------*/
20698
20699 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20700 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020702
20703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20704 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020705
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20708 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020709
ltimariub77f24b2013-01-24 18:54:33 -080020710 if ( pWDICtx->wdiLowLevelIndCB )
20711 {
20712 /*Notify UMAC*/
20713 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20714 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020715
20716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020717}/*WDI_ProcessFatalErrorInd*/
20718
20719/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 an indication of this kind is being received over the
20722 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020723
20724 @param pWDICtx: pointer to the WLAN DAL context
20725 pEventData: pointer to the event information structure
20726
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 @see
20728 @return Result of the function call
20729*/
20730WDI_Status
20731WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020732(
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ControlBlockType* pWDICtx,
20734 WDI_EventInfoType* pEventData
20735)
20736{
20737 tDeleteStaContextParams halDelSTACtx;
20738 WDI_LowLevelIndType wdiInd;
20739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20740
20741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 -------------------------------------------------------------------------*/
20744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20745 ( NULL == pEventData->pEventData))
20746 {
20747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 }
20752
20753 /*-------------------------------------------------------------------------
20754 Extract indication and send it to UMAC
20755 -------------------------------------------------------------------------*/
20756
20757 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 wpalMemoryCopy( &halDelSTACtx,
20759 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 sizeof(halDelSTACtx));
20761
20762 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020764
20765 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20766 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20767 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20768 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20769
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020771 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20775 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020776
ltimariub77f24b2013-01-24 18:54:33 -080020777 if ( pWDICtx->wdiLowLevelIndCB )
20778 {
20779 /*Notify UMAC*/
20780 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20781 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020782
20783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020784}/*WDI_ProcessDelSTAInd*/
20785
20786/**
20787*@brief Process Coex Indication function (called when
20788 an indication of this kind is being received over the
20789 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020790
20791 @param pWDICtx: pointer to the WLAN DAL context
20792 pEventData: pointer to the event information structure
20793
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 @see
20795 @return Result of the function call
20796*/
20797WDI_Status
20798WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020799(
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 WDI_ControlBlockType* pWDICtx,
20801 WDI_EventInfoType* pEventData
20802)
20803{
20804 WDI_LowLevelIndType wdiInd;
20805 tCoexIndMsg halCoexIndMsg;
20806 wpt_uint32 index;
20807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20808
20809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 -------------------------------------------------------------------------*/
20812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20813 ( NULL == pEventData->pEventData ))
20814 {
20815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 }
20820
20821 /*-------------------------------------------------------------------------
20822 Extract indication and send it to UMAC
20823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20825 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 sizeof(halCoexIndMsg.coexIndParams) );
20827
20828 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 wdiInd.wdiIndicationType = WDI_COEX_IND;
20830 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 }
20835
20836 // DEBUG
20837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20838 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20840 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20841 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20842 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20843 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020844
ltimariub77f24b2013-01-24 18:54:33 -080020845 if ( pWDICtx->wdiLowLevelIndCB )
20846 {
20847 /*Notify UMAC*/
20848 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20849 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020850
20851 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020852}/*WDI_ProcessCoexInd*/
20853
20854/**
20855*@brief Process Tx Complete Indication function (called when
20856 an indication of this kind is being received over the
20857 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020858
20859 @param pWDICtx: pointer to the WLAN DAL context
20860 pEventData: pointer to the event information structure
20861
Jeff Johnson295189b2012-06-20 16:38:30 -070020862 @see
20863 @return Result of the function call
20864*/
20865WDI_Status
20866WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020867(
Jeff Johnson295189b2012-06-20 16:38:30 -070020868 WDI_ControlBlockType* pWDICtx,
20869 WDI_EventInfoType* pEventData
20870)
20871{
20872 WDI_LowLevelIndType wdiInd;
20873 tTxComplIndMsg halTxComplIndMsg;
20874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20875
20876 /*-------------------------------------------------------------------------
20877 Sanity check
20878 -------------------------------------------------------------------------*/
20879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20880 ( NULL == pEventData->pEventData ))
20881 {
20882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 WDI_ASSERT( 0 );
20885 return WDI_STATUS_E_FAILURE;
20886 }
20887
20888 /*-------------------------------------------------------------------------
20889 Extract indication and send it to UMAC
20890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20892 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 sizeof(halTxComplIndMsg.txComplParams) );
20894
20895 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020896 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20897 wdiInd.wdiIndicationData.tx_complete_status
20898 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899
ltimariub77f24b2013-01-24 18:54:33 -080020900 if ( pWDICtx->wdiLowLevelIndCB )
20901 {
20902 /*Notify UMAC*/
20903 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20904 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020905
20906 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020907}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020908#ifdef FEATURE_WLAN_TDLS
20909/**
20910*@brief Process TDLS Indication function (called when
20911 an indication of this kind is being received over the
20912 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020913
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020914 @param pWDICtx: pointer to the WLAN DAL context
20915 pEventData: pointer to the event information structure
20916
20917 @see
20918 @return Result of the function call
20919*/
20920WDI_Status
20921WDI_ProcessTdlsInd
20922(
20923 WDI_ControlBlockType* pWDICtx,
20924 WDI_EventInfoType* pEventData
20925)
20926{
20927 WDI_LowLevelIndType wdiInd;
20928 tTdlsIndMsg halTdlsIndMsg;
20929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20930
20931 /*-------------------------------------------------------------------------
20932 Sanity check
20933 -------------------------------------------------------------------------*/
20934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20935 ( NULL == pEventData->pEventData ))
20936 {
20937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20938 "%s: Invalid parameters", __func__);
20939 WDI_ASSERT( 0 );
20940 return WDI_STATUS_E_FAILURE;
20941 }
20942
20943 /*-------------------------------------------------------------------------
20944 Extract indication and send it to UMAC
20945 -------------------------------------------------------------------------*/
20946 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20947 pEventData->pEventData,
20948 sizeof(halTdlsIndMsg.tdlsIndParams) );
20949
20950 /*Fill in the indication parameters*/
20951 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20952
20953 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20954 = halTdlsIndMsg.tdlsIndParams.status;
20955
20956 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20957 = halTdlsIndMsg.tdlsIndParams.staIdx;
20958
20959 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20960 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20961
20962 /*Notify UMAC*/
20963 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20964
20965 return WDI_STATUS_SUCCESS;
20966}/*WDI_ProcessTdlsInd*/
20967#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020968/**
Viral Modid86bde22012-12-10 13:09:21 -080020969*@brief Process Noa Start Indication function (called when
20970 an indication of this kind is being received over the
20971 bus from HAL)
20972
20973 @param pWDICtx: pointer to the WLAN DAL context
20974 pEventData: pointer to the event information structure
20975
20976 @see
20977 @return Result of the function call
20978*/
20979WDI_Status
20980WDI_ProcessP2pNoaStartInd
20981(
20982 WDI_ControlBlockType* pWDICtx,
20983 WDI_EventInfoType* pEventData
20984)
20985{
20986 WDI_LowLevelIndType wdiInd;
20987 tNoaStartIndMsg halNoaStartIndMsg;
20988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20989
20990 /*-------------------------------------------------------------------------
20991 Sanity check
20992 -------------------------------------------------------------------------*/
20993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20994 ( NULL == pEventData->pEventData ))
20995 {
20996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20997 "%s: Invalid parameters", __func__);
20998 WDI_ASSERT( 0 );
20999 return WDI_STATUS_E_FAILURE;
21000 }
21001
21002 /*-------------------------------------------------------------------------
21003 Extract indication and send it to UMAC
21004 -------------------------------------------------------------------------*/
21005 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21006 pEventData->pEventData,
21007 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21008
21009 /*Fill in the indication parameters*/
21010 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21011
21012 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21013 = halNoaStartIndMsg.noaStartIndParams.status;
21014
21015 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21016 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21017
21018 /*Notify UMAC*/
21019 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21020
21021 return WDI_STATUS_SUCCESS;
21022}/*WDI_ProcessNoaAttrInd*/
21023
21024/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021025*@brief Process Noa Attr Indication function (called when
21026 an indication of this kind is being received over the
21027 bus from HAL)
21028
21029 @param pWDICtx: pointer to the WLAN DAL context
21030 pEventData: pointer to the event information structure
21031
21032 @see
21033 @return Result of the function call
21034*/
21035WDI_Status
21036WDI_ProcessP2pNoaAttrInd
21037(
21038 WDI_ControlBlockType* pWDICtx,
21039 WDI_EventInfoType* pEventData
21040)
21041{
21042 WDI_LowLevelIndType wdiInd;
21043 tNoaAttrIndMsg halNoaAttrIndMsg;
21044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21045
21046 /*-------------------------------------------------------------------------
21047 Sanity check
21048 -------------------------------------------------------------------------*/
21049 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21050 ( NULL == pEventData->pEventData ))
21051 {
21052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 WDI_ASSERT( 0 );
21055 return WDI_STATUS_E_FAILURE;
21056 }
21057
21058 /*-------------------------------------------------------------------------
21059 Extract indication and send it to UMAC
21060 -------------------------------------------------------------------------*/
21061 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21062 pEventData->pEventData,
21063 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21064
21065 /*Fill in the indication parameters*/
21066 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021067
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21069 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021070
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21072 = halNoaAttrIndMsg.noaAttrIndParams.index;
21073 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21074 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21075 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21076 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021077
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21079 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21080 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21081 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21082 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21083 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21084 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21085 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021086
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21088 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21089 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21090 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21091 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21092 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21093 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21094 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21095
ltimariub77f24b2013-01-24 18:54:33 -080021096 if ( pWDICtx->wdiLowLevelIndCB )
21097 {
21098 /*Notify UMAC*/
21099 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21100 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021101
21102 return WDI_STATUS_SUCCESS;
21103}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021104
21105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 an indication of this kind is being received over the
21108 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
21110 @param pWDICtx: pointer to the WLAN DAL context
21111 pEventData: pointer to the event information structure
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 @see
21114 @return Result of the function call
21115*/
21116WDI_Status
21117WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021118(
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 WDI_ControlBlockType* pWDICtx,
21120 WDI_EventInfoType* pEventData
21121)
21122{
21123 WDI_LowLevelIndType wdiInd;
21124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021125
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 /*-------------------------------------------------------------------------
21127 Extract indication and send it to UMAC
21128 -------------------------------------------------------------------------*/
21129 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21131
ltimariub77f24b2013-01-24 18:54:33 -080021132 if ( pWDICtx->wdiLowLevelIndCB )
21133 {
21134 /*Notify UMAC*/
21135 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21136 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021137
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139}/*WDI_ProcessTxPerHitInd*/
21140
Jeff Johnson295189b2012-06-20 16:38:30 -070021141/**
Yue Mab9c86f42013-08-14 15:59:08 -070021142 @brief Process Periodic Tx Pattern Fw Indication function
21143
21144 @param pWDICtx: pointer to the WLAN DAL context
21145 pEventData: pointer to the event information structure
21146
21147 @see
21148 @return Result of the function call
21149*/
21150WDI_Status
21151WDI_ProcessPeriodicTxPtrnFwInd
21152(
21153 WDI_ControlBlockType* pWDICtx,
21154 WDI_EventInfoType* pEventData
21155)
21156{
21157 WDI_LowLevelIndType wdiInd;
21158
21159 /*-------------------------------------------------------------------------
21160 Sanity check
21161 -------------------------------------------------------------------------*/
21162 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21163 (NULL == pEventData->pEventData))
21164 {
21165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21166 "%s: Invalid parameters", __func__);
21167 WDI_ASSERT(0);
21168 return WDI_STATUS_E_FAILURE;
21169 }
21170
21171 /*-------------------------------------------------------------------------
21172 Extract indication and send it to UMAC
21173 -------------------------------------------------------------------------*/
21174 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21175 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21176 sizeof(tHalPeriodicTxPtrnFwInd));
21177
21178 if (pWDICtx->wdiLowLevelIndCB)
21179 {
21180 /*Notify UMAC*/
21181 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21182 }
21183
21184 return WDI_STATUS_SUCCESS;
21185}
21186
21187/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 @brief WDI_ProcessFTMCommandReq
21189 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021190
21191 @param pWDICtx: pointer to the WLAN DAL context
21192 pEventData: pointer to the event information structure
21193
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 @see
21195 @return Result of the function call
21196*/
21197WDI_Status
21198WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021199(
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 WDI_ControlBlockType* pWDICtx,
21201 WDI_EventInfoType* pEventData
21202)
21203{
21204 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21205 wpt_uint8 *ftmCommandBuffer = NULL;
21206 wpt_uint16 dataOffset;
21207 wpt_uint16 bufferSize;
21208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 -------------------------------------------------------------------------*/
21211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21212 ( NULL == pEventData->pEventData))
21213
21214 {
21215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 }
21220
21221 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21222
21223 /* Get MSG Buffer */
21224 WDI_GetMessageBuffer(pWDICtx,
21225 WDI_FTM_CMD_REQ,
21226 ftmCommandReq->bodyLength,
21227 &ftmCommandBuffer,
21228 &dataOffset,
21229 &bufferSize);
21230
21231 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21232 ftmCommandReq->FTMCommandBody,
21233 ftmCommandReq->bodyLength);
21234
21235 /* Send MSG */
21236 return WDI_SendMsg(pWDICtx,
21237 ftmCommandBuffer,
21238 bufferSize,
21239 pEventData->pCBfnc,
21240 pEventData->pUserData,
21241 WDI_FTM_CMD_RESP);
21242}
21243
21244/**
21245 @brief WDI_ProcessFTMCommandRsp
21246 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021247
21248 @param pWDICtx: pointer to the WLAN DAL context
21249 pEventData: pointer to the event information structure
21250
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 @see
21252 @return Result of the function call
21253*/
21254WDI_Status
21255WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021256(
Jeff Johnson295189b2012-06-20 16:38:30 -070021257 WDI_ControlBlockType* pWDICtx,
21258 WDI_EventInfoType* pEventData
21259)
21260{
21261 WDI_FTMCommandRspCb ftmCMDRspCb;
21262 tProcessPttRspParams *ftmCMDRspData = NULL;
21263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21264
21265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 -------------------------------------------------------------------------*/
21268 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21269 ( NULL == pEventData->pEventData))
21270 {
21271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021272 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 }
21276
21277 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21278
21279 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21280
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21282 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21284
21285 /*Notify UMAC*/
21286 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21287
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021289}
Jeff Johnson295189b2012-06-20 16:38:30 -070021290/**
21291 @brief WDI_ProcessHalDumpCmdReq
21292 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021293
21294 @param pWDICtx: pointer to the WLAN DAL context
21295 pEventData: pointer to the event information structure
21296
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 @see
21298 @return Result of the function call
21299*/
21300WDI_Status
21301WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021302(
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 WDI_ControlBlockType* pWDICtx,
21304 WDI_EventInfoType* pEventData
21305)
21306{
21307 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21308 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21309 wpt_uint16 usDataOffset = 0;
21310 wpt_uint16 usSendSize = 0;
21311 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021313
21314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 -------------------------------------------------------------------------*/
21317 if (( NULL == pEventData ) ||
21318 ( NULL == pEventData->pEventData) ||
21319 ( NULL == pEventData->pCBfnc ))
21320 {
21321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 }
21326
21327 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21328 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21329
21330 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021341
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 /*-----------------------------------------------------------------------
21343 Get message buffer
21344 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21347 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21350 {
21351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021352 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 }
21357
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 wpalMemoryCopy( pSendBuffer+usDataOffset,
21359 &halDumpCmdReqMsg.dumpCmdReqParams,
21360 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021361
21362 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021364
21365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021366 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21369 wdiHALDumpCmdRspCb, pEventData->pUserData,
21370 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021371}
21372
21373/**
21374 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021375 Process hal Dump Command Response from HAL, simply route to HDD
21376
21377 @param pWDICtx: pointer to the WLAN DAL context
21378 pEventData: pointer to the event information structure
21379
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 @see
21381 @return Result of the function call
21382*/
21383WDI_Status
21384WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021385(
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 WDI_ControlBlockType* pWDICtx,
21387 WDI_EventInfoType* pEventData
21388)
21389{
21390 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021391 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21393
21394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 -------------------------------------------------------------------------*/
21397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21398 ( NULL == pEventData->pEventData))
21399 {
21400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 }
21405
Jeff Johnsone7245742012-09-05 17:12:55 -070021406 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021407
21408 /*Initialize the WDI Response structure */
21409 wdiHALDumpCmdRsp.usBufferLen = 0;
21410 wdiHALDumpCmdRsp.pBuffer = NULL;
21411
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021412 wpalMemoryCopy( &halDumpCmdRspParams,
21413 pEventData->pEventData,
21414 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021415
21416 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021417 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021418
21419 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021420 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 {
21422 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021423 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21424 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21425
21426 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21427 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021428 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021430
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 /*Notify UMAC*/
21432 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21433
21434 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21435 {
21436 /* Free the allocated buffer */
21437 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21438 }
21439 return WDI_STATUS_SUCCESS;
21440}
21441
21442/*==========================================================================
21443 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021444
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021447==========================================================================*/
21448/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 when it wishes to send up a notification like the ones
21451 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021452
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021454
21455 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wctsNotifyCBData: the callback data of the user
21458
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021460
21461 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021462*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021463void
Jeff Johnson295189b2012-06-20 16:38:30 -070021464WDI_NotifyMsgCTSCB
21465(
Jeff Johnsone7245742012-09-05 17:12:55 -070021466 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 WCTS_NotifyEventType wctsEvent,
21468 void* wctsNotifyCBData
21469)
21470{
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21473
21474 if (NULL == pWDICtx )
21475 {
21476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 }
21481
21482 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21483 {
21484 /* callback presumably occurred after close */
21485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021486 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 }
21489
21490 if ( WCTS_EVENT_OPEN == wctsEvent )
21491 {
21492 /*Flag must be set atomically as it is checked from incoming request
21493 functions*/
21494 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496
21497 /*Nothing to do - so try to dequeue any pending request that may have
21498 occurred while we were trying to establish this*/
21499 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 {
21504 /*Flag must be set atomically as it is checked from incoming request
21505 functions*/
21506 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021508
21509 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 wpalMutexRelease(&pWDICtx->wptMutex);
21512
21513 /*Notify that the Control Channel is closed */
21514 wpalEventSet(&pWDICtx->wctsActionEvent);
21515 }
21516
21517}/*WDI_NotifyMsgCTSCB*/
21518
21519
21520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 when it wishes to send up a packet received over the
21523 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021524
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021526
21527 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 pMsg: the packet
21529 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 wctsRxMsgCBData: the callback data of the user
21531
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021533
21534 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021535*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021536void
21537WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021538(
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 void* pMsg,
21541 wpt_uint32 uLen,
21542 void* wctsRxMsgCBData
21543)
21544{
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 tHalMsgHeader *pHalMsgHeader;
21546 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21549
21550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021554 ( uLen < sizeof(tHalMsgHeader)))
21555 {
21556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 }
21561
21562 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21563 {
21564 /* callback presumably occurred after close */
21565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021566 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 }
21569
Jeff Johnsone7245742012-09-05 17:12:55 -070021570 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 context - so no serialization is necessary here
21572 ! - revisit this assumption */
21573
21574 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21575
21576 if ( uLen != pHalMsgHeader->msgLen )
21577 {
21578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21579 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021581 wpalWlanReload();
21582
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 }
21585
21586 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21587
21588 /*The message itself starts after the header*/
21589 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21590 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21591 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21592 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21593
21594
21595 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21596 {
21597 /*Stop the timer as the response was received */
21598 /*!UT - check for potential race conditions between stop and response */
21599 wpalTimerStop(&pWDICtx->wptResponseTimer);
21600 }
21601 /* Check if we receive a response message which is not expected */
21602 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21603 {
21604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21605 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21606 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21609 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021610
21611 if (gWDICb.bEnableSSR == false)
21612 {
21613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21614 "SSR is not enabled on WDI timeout");
21615 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21616 return;
21617 }
21618 wpalWcnssResetIntr();
21619 /* if this timer fires, it means Riva did not receive the FIQ */
21620 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21621
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 return;
21623 }
21624
21625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21626 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21627
21628 /*Post response event to the state machine*/
21629 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21630
21631}/*WDI_RXMsgCTSCB*/
21632
21633
21634/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021636========================================================================*/
21637
21638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021641
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 @param pWDICtx - pointer to the control block
21643
21644 @return Result of the function call
21645*/
21646WPT_INLINE WDI_Status
21647WDI_CleanCB
21648(
21649 WDI_ControlBlockType* pWDICtx
21650)
21651{
21652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21653
21654 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021655 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021656
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021658 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21659 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21660
21661 WDI_ResetAssocSessions( pWDICtx );
21662
21663 return WDI_STATUS_SUCCESS;
21664}/*WDI_CleanCB*/
21665
21666
21667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021669
Jeff Johnsone7245742012-09-05 17:12:55 -070021670
21671 @param pWDICtx: pointer to the WLAN DAL context
21672 pEventData: pointer to the event information structure
21673
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 @see
21675 @return Result of the function call
21676*/
21677WPT_INLINE WDI_Status
21678WDI_ProcessRequest
21679(
21680 WDI_ControlBlockType* pWDICtx,
21681 WDI_EventInfoType* pEventData
21682)
21683{
21684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21685
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 already checked these pointers*/
21688
21689 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21690 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021693 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 WDI_getReqMsgString(pEventData->wdiRequest),
21695 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21696 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21697 }
21698 else
21699 {
21700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 pEventData->wdiRequest);
21703 return WDI_STATUS_E_NOT_IMPLEMENT;
21704 }
21705}/*WDI_ProcessRequest*/
21706
21707
21708/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 prefixes it with a send message header
21712
21713 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 wdiReqType: type of the request being sent
21715 uBufferLen: message buffer len
21716 pMsgBuffer: resulting allocated buffer
21717 pusDataOffset: offset in the buffer where the caller
21718 can start copying its message data
21719 puBufferSize: the resulting buffer size (offset+buff
21720 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021721
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 @see
21723 @return Result of the function call
21724*/
21725WDI_Status
21726WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021727(
21728 WDI_ControlBlockType* pWDICtx,
21729 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021731 wpt_uint8** pMsgBuffer,
21732 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 wpt_uint16* pusBufferSize
21734)
21735{
21736 tHalMsgHeader halMsgHeader;
21737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21738
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021740 again*/
21741
21742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21747 if ( NULL == *pMsgBuffer )
21748 {
21749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21750 "Unable to allocate message buffer for req %s (%d)",
21751 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 }
21756
21757 /*-------------------------------------------------------------------------
21758 Fill in the message header
21759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21761 /* Fill msgVersion */
21762#ifdef WLAN_FEATURE_11AC
21763 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021764 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021765 else
21766#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021767 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021768
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21770 *pusDataOffset = sizeof(halMsgHeader);
21771 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21772
21773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021774}/*WDI_GetMessageBuffer*/
21775
21776
21777/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021778 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 the CB
21781
21782 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021784
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 usSendSize size of the buffer to be sent
21786 pRspCb: response callback - save in the WDI
21787 CB
21788 pUserData: user data associated with the
21789 callback
21790 wdiExpectedResponse: the code of the response that is
21791 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021792
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 @see
21794 @return Result of the function call
21795*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021797WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021798(
21799 WDI_ControlBlockType* pWDICtx,
21800 wpt_uint8* pSendBuffer,
21801 wpt_uint32 usSendSize,
21802 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 void* pUserData,
21804 WDI_ResponseEnumType wdiExpectedResponse
21805)
21806{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021807 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021808 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21810
21811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 ------------------------------------------------------------------------*/
21814 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 pWDICtx->pfncRspCB = pRspCb;
21816 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021817
21818 /*-----------------------------------------------------------------------
21819 Call the CTS to send this message over - free message afterwards
21820 - notify transport failure
21821 Note: CTS is reponsible for freeing the message buffer.
21822 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021823 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21824 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21825 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021828 "Failed to send message with expected response %s (%d)"
21829 " over the bus - catastrophic failure",
21830 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21831 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021832
Jeff Johnsond13512a2012-07-17 11:42:19 -070021833 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021835 else
21836 {
21837 /* even when message was placed in CTS deferred Q, we will treat it
21838 success but log this info
21839 */
21840 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21841 {
21842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21843 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21844 "response %s (%d)",
21845 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21846 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021847 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021848 }
21849 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021850
Jeff Johnsond13512a2012-07-17 11:42:19 -070021851 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 if ( NULL != pWDICtx->wdiReqStatusCB )
21853 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021854 /*Inform originator whether request went through or not*/
21855 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21856 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 pWDICtx->wdiReqStatusCB = NULL;
21858 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021859 callback(wdiStatus, callbackContext);
21860
21861 /*For WDI requests which have registered a request callback,
21862 inform the WDA caller of the same via setting the return value
21863 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21864 end up repeating the functonality in the req callback for the
21865 WDI_STATUS_E_FAILURE case*/
21866 if (wdiStatus == WDI_STATUS_E_FAILURE)
21867 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 }
21869
Jeff Johnsond13512a2012-07-17 11:42:19 -070021870 if ( wdiStatus == WDI_STATUS_SUCCESS )
21871 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 /*Start timer for the expected response */
21873 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021874
21875 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021876 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021877 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021878 }
21879 else
21880 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021881 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021882 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21883 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021884
Jeff Johnsond13512a2012-07-17 11:42:19 -070021885 return wdiStatus;
21886
Jeff Johnson295189b2012-06-20 16:38:30 -070021887}/*WDI_SendMsg*/
21888
21889
21890
21891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 the bus using the control transport and saves some info
21894 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021895
21896 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 pSendBuffer: buffer to be sent
21898 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021899
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 @see
21901 @return Result of the function call
21902*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021903WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021904WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021905(
21906 WDI_ControlBlockType* pWDICtx,
21907 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 wpt_uint32 usSendSize
21909)
21910{
21911 wpt_uint32 uStatus ;
21912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21913
21914 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 Note: CTS is reponsible for freeing the message buffer.
21917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021918 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 (void*)pSendBuffer, usSendSize );
21920
21921 /*Inform Upper MAC about the outcome of the request*/
21922 if ( NULL != pWDICtx->wdiReqStatusCB )
21923 {
21924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21925 "Send indication status : %d", uStatus);
21926
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021927 /* even if CTS placed indication into its deferred Q, we treat it
21928 * as success and let CTS drain its queue as per smd interrupt to CTS
21929 */
21930 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 -070021931 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 }
21933
21934 /*If sending of the message failed - it is considered catastrophic and
21935 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021936 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21937 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21938
Jeff Johnson295189b2012-06-20 16:38:30 -070021939 {
21940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021941 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021942
21943 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21944 return WDI_STATUS_E_FAILURE;
21945 }
21946
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021948}/*WDI_SendIndication*/
21949
21950
21951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 @brief WDI_DetectedDeviceError - called internally by DAL when
21953 it has detected a failure in the device
21954
21955 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 usErrorCode: error code detected by WDI or received
21957 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021958
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021960 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021961*/
21962void
21963WDI_DetectedDeviceError
21964(
21965 WDI_ControlBlockType* pWDICtx,
21966 wpt_uint16 usErrorCode
21967)
21968{
21969 WDI_LowLevelIndType wdiInd;
21970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21971
21972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21973 "Device Error detected code: %d - transitioning to stopped state",
21974 usErrorCode);
21975
Katya Nigamf02ad012014-05-05 16:12:49 +053021976 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21977
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 wpalMutexAcquire(&pWDICtx->wptMutex);
21979
21980 WDI_STATableStop(pWDICtx);
21981
21982 WDI_ResetAssocSessions(pWDICtx);
21983
21984 /*Set the expected state transition to stopped - because the device
21985 experienced a failure*/
21986 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21987
21988 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021990
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021992
21993 /*TO DO: - there should be an attempt to reset the device here*/
21994
21995 wpalMutexRelease(&pWDICtx->wptMutex);
21996
21997 /*------------------------------------------------------------------------
21998 Notify UMAC if a handler is registered
21999 ------------------------------------------------------------------------*/
22000 if (pWDICtx->wdiLowLevelIndCB)
22001 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22003 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004
22005 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22006 }
22007}/*WDI_DetectedDeviceError*/
22008
22009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 we started on send message has expire - this should
22012 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 reply - trigger catastrophic failure
22014 @param
22015
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022017
22018 @see
22019 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022020*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022021void
Jeff Johnson295189b2012-06-20 16:38:30 -070022022WDI_ResponseTimerCB
22023(
22024 void *pUserData
22025)
22026{
22027 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22029
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022030 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 }
22037
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022038 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022039 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022040 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022041
22042 /* If response timer is running at this time that means this timer
22043 * event is not for the last request but rather last-to-last request and
22044 * this timer event has come after we recevied respone for last-to-last
22045 * message
22046 */
22047 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22048 {
22049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22050 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022051 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022052 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22054 "uArchTimeStampTmrStart: %llu seconds, "
22055 "uArchTimeStampTmrExp: %llu seconds",
22056 pWDICtx->uArchTimeStampRspTmrStart,
22057 pWDICtx->uArchTimeStampRspTmrExp);
22058
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022059 return;
22060 }
22061
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022062 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 {
22064
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022067 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022069 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22070 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22072 "uArchTimeStampTmrStart: %llu seconds, "
22073 "uArchTimeStampTmrExp: %llu seconds",
22074 pWDICtx->uArchTimeStampRspTmrStart,
22075 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022076
22077 /* WDI timeout means Riva is not responding or SMD communication to Riva
22078 * is not happening. The only possible way to recover from this error
22079 * is to initiate SSR from APPS.
22080 * There is also an option to re-enable wifi, which will eventually
22081 * trigger SSR
22082 */
22083 if (gWDICb.bEnableSSR == false)
22084 {
22085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22086 "SSR is not enabled on WDI timeout");
22087 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22088 return;
22089 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022090#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022091 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022092 if(wpalIsWDresetInProgress())
22093 {
22094 wpalDevicePanic();
22095 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022096 /* if this timer fires, it means Riva did not receive the FIQ */
22097 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022098#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022099 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22100 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022101#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 }
22103 else
22104 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022106 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022107 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022108 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22109 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22111 "uArchTimeStampTmrStart: %llu seconds, "
22112 "uArchTimeStampTmrExp: %llu seconds",
22113 pWDICtx->uArchTimeStampRspTmrStart,
22114 pWDICtx->uArchTimeStampRspTmrExp);
22115
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 }
22117
22118 return;
22119
22120}/*WDI_ResponseTimerCB*/
22121
22122
22123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022125
Jeff Johnsone7245742012-09-05 17:12:55 -070022126
22127 @param pWDICtx: pointer to the WLAN DAL context
22128 pEventData: pointer to the event information structure
22129
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 @see
22131 @return Result of the function call
22132*/
22133WPT_INLINE WDI_Status
22134WDI_ProcessResponse
22135(
22136 WDI_ControlBlockType* pWDICtx,
22137 WDI_EventInfoType* pEventData
22138)
22139{
22140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22141
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 already checked these pointers
22144 ! - revisit this assumption */
22145 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22146 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022147 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022149 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 WDI_getRespMsgString(pEventData->wdiResponse),
22151 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22152 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22153 }
22154 else
22155 {
22156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022157 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 pEventData->wdiResponse);
22159 return WDI_STATUS_E_NOT_IMPLEMENT;
22160 }
22161}/*WDI_ProcessResponse*/
22162
22163
22164/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022165 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022166=========================================================================*/
22167
22168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022169 @brief Utility function used by the DAL Core to help queue a
22170 request that cannot be processed right away.
22171 @param
22172
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 pWDICtx: - pointer to the WDI control block
22174 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 queued
22176
22177 @see
22178 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022179*/
22180WDI_Status
22181WDI_QueuePendingReq
22182(
22183 WDI_ControlBlockType* pWDICtx,
22184 WDI_EventInfoType* pEventData
22185)
22186{
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022188 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22191
22192 if ( NULL == pEventDataQueue )
22193 {
22194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 WDI_ASSERT(0);
22197 return WDI_STATUS_MEM_FAILURE;
22198 }
22199
22200 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22201 pEventDataQueue->pUserData = pEventData->pUserData;
22202 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22203 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022204 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022205
22206 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22207 {
22208 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022209
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 if ( NULL == pEventInfo )
22211 {
22212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022213 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 WDI_ASSERT(0);
22215 wpalMemoryFree(pEventDataQueue);
22216 return WDI_STATUS_MEM_FAILURE;
22217 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022218
Jeff Johnson295189b2012-06-20 16:38:30 -070022219 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22220
22221 }
22222 pEventDataQueue->pEventData = pEventInfo;
22223
22224 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022225 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022226
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022227 if (eWLAN_PAL_STATUS_E_FAILURE ==
22228 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22229 {
22230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22231 "pEventDataQueue wpal_list_insert_back failed");
22232 WDI_ASSERT(0);
22233 wpalMemoryFree(pEventDataQueue);
22234 wpalMemoryFree(pEventInfo);
22235 return WDI_STATUS_MEM_FAILURE;
22236 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022237
22238 return WDI_STATUS_SUCCESS;
22239}/*WDI_QueuePendingReq*/
22240
22241/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022242 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 @param
22245
22246 pMsg - pointer to the message
22247
22248 @see
22249 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022250*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022251void
Jeff Johnson295189b2012-06-20 16:38:30 -070022252WDI_PALCtrlMsgCB
22253(
22254 wpt_msg *pMsg
22255)
22256{
22257 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 WDI_ControlBlockType* pWDICtx = NULL;
22259 WDI_Status wdiStatus;
22260 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 void* pUserData;
22262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22263
22264 if (( NULL == pMsg )||
22265 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22266 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22267 {
22268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 }
22273
22274 /*Transition back to the state that we had before serialization
22275 - serialization transitions us to BUSY to stop any incomming requests
22276 ! TO DO L: possible race condition here if a request comes in between the
22277 state transition and the post function*/
22278
Jeff Johnsone7245742012-09-05 17:12:55 -070022279 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022280
22281 /*-----------------------------------------------------------------------
22282 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 -----------------------------------------------------------------------*/
22285 switch ( pEventData->wdiRequest )
22286 {
22287
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22290 break;
22291
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 case WDI_NV_DOWNLOAD_REQ:
22293 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22294 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22295 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22296 {
22297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022298 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22300 }
22301 else
22302 {
22303 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22304 }
22305
22306 break;
22307
22308 default:
22309 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22310 break;
22311 }/*switch ( pEventData->wdiRequest )*/
22312
22313 if ( WDI_STATUS_SUCCESS != wdiStatus )
22314 {
22315 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22316
22317 if ( NULL != pfnReqStatusCB )
22318 {
22319 /*Fail the request*/
22320 pfnReqStatusCB( wdiStatus, pUserData);
22321 }
22322 }
22323
22324 /* Free data - that was allocated when queueing*/
22325 if( pEventData != NULL )
22326 {
22327 if( pEventData->pEventData != NULL )
22328 {
22329 wpalMemoryFree(pEventData->pEventData);
22330 }
22331 wpalMemoryFree(pEventData);
22332 }
22333
22334 if( pMsg != NULL )
22335 {
22336 wpalMemoryFree(pMsg);
22337 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022338
Jeff Johnson295189b2012-06-20 16:38:30 -070022339}/*WDI_PALCtrlMsgCB*/
22340
22341/**
22342 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 and schedule for execution a pending request
22344 @param
22345
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 pWDICtx: - pointer to the WDI control block
22347 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022348 queued
22349
22350 @see
22351 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022352*/
22353WDI_Status
22354WDI_DequeuePendingReq
22355(
22356 WDI_ControlBlockType* pWDICtx
22357)
22358{
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22363
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022365
22366 if ( NULL == pNode )
22367 {
22368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 return WDI_STATUS_SUCCESS;
22371 }
22372
22373 /*The node actually points to the 1st element inside the Event Data struct -
22374 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022376
22377 /*Serialize processing in the control thread
22378 !TO DO: - check to see if these are all the messages params that need
22379 to be filled in*/
22380 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22381
22382 if ( NULL == palMsg )
22383 {
22384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022387 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 palMsg->callback = WDI_PALCtrlMsgCB;
22391 palMsg->ptr = pEventData;
22392
22393 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022395 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022396
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 /*Transition back to BUSY as we need to handle a queued request*/
22398 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022399
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22401
22402 return WDI_STATUS_PENDING;
22403}/*WDI_DequeuePendingReq*/
22404
22405
22406/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 away.- The assoc requests will be queued by BSSID
22410 @param
22411
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 pWDICtx: - pointer to the WDI control block
22413 pEventData: pointer to the evnt info that needs to be queued
22414 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022415
22416 @see
22417 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022418*/
22419WDI_Status
22420WDI_QueueNewAssocRequest
22421(
22422 WDI_ControlBlockType* pWDICtx,
22423 WDI_EventInfoType* pEventData,
22424 wpt_macAddr macBSSID
22425)
22426{
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 wpt_uint8 i;
22428 WDI_BSSSessionType* pSession = NULL;
22429 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 void* pEventInfo;
22432 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022434
Jeff Johnsone7245742012-09-05 17:12:55 -070022435
22436 /*------------------------------------------------------------------------
22437 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 ------------------------------------------------------------------------*/
22439 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22440 {
22441 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22442 {
22443 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 pSession = &pWDICtx->aBSSSessions[i];
22445 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 }
22447 }
22448
22449 if ( i >= WDI_MAX_BSS_SESSIONS )
22450 {
22451 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022454
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 /*------------------------------------------------------------------------
22456 Fill in the BSSID for this session and set the usage flag
22457 ------------------------------------------------------------------------*/
22458 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022459 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022460
22461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022462 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 ------------------------------------------------------------------------*/
22464 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22465 if ( NULL == pEventDataQueue )
22466 {
22467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022468 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 WDI_ASSERT(0);
22470 return WDI_STATUS_MEM_FAILURE;
22471 }
22472
22473 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22474 if ( NULL == pSessionIdElement )
22475 {
22476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022477 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 WDI_ASSERT(0);
22479 wpalMemoryFree(pEventDataQueue);
22480 return WDI_STATUS_MEM_FAILURE;
22481 }
22482
22483 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22484 if ( NULL == pEventInfo )
22485 {
22486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022487 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 WDI_ASSERT(0);
22489 wpalMemoryFree(pSessionIdElement);
22490 wpalMemoryFree(pEventDataQueue);
22491 return WDI_STATUS_MEM_FAILURE;
22492 }
22493
22494 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22495 pEventDataQueue->pUserData = pEventData->pUserData;
22496 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22497 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022499
22500 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22501 pEventDataQueue->pEventData = pEventInfo;
22502
22503 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022505
22506 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022509 if (eWLAN_PAL_STATUS_E_FAILURE ==
22510 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22511 {
22512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22513 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22514 WDI_ASSERT(0);
22515 wpalMemoryFree(pSessionIdElement);
22516 wpalMemoryFree(pEventDataQueue);
22517 wpalMemoryFree(pEventInfo);
22518 return WDI_STATUS_MEM_FAILURE;
22519 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022520
22521 /*We need to maintain a separate list that keeps track of the order in which
22522 the new assoc requests are being queued such that we can start processing
22523 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 pSessionIdElement->ucIndex = i;
22525 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022526
22527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22528 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022529 if (eWLAN_PAL_STATUS_E_FAILURE ==
22530 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22531 {
22532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22533 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22534 WDI_ASSERT(0);
22535 wpalMemoryFree(pSessionIdElement);
22536 wpalMemoryFree(pEventDataQueue);
22537 wpalMemoryFree(pEventInfo);
22538 return WDI_STATUS_MEM_FAILURE;
22539 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022540
22541 /*Return pending as this is what the status of the request is since it has
22542 been queued*/
22543 return WDI_STATUS_PENDING;
22544}/*WDI_QueueNewAssocRequest*/
22545
22546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022547 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022548 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 away.- The assoc requests will be queued by BSSID
22550 @param
22551
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 pWDICtx: - pointer to the WDI control block
22553 pSession: - session in which to queue
22554 pEventData: pointer to the event info that needs to be
22555 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022556
22557 @see
22558 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022559*/
22560WDI_Status
22561WDI_QueueAssocRequest
22562(
22563 WDI_ControlBlockType* pWDICtx,
22564 WDI_BSSSessionType* pSession,
22565 WDI_EventInfoType* pEventData
22566)
22567{
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022572
22573 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 Sanity check
22575 ------------------------------------------------------------------------*/
22576 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22577 {
22578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022580
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 }
22583
22584 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 ------------------------------------------------------------------------*/
22587 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22588 if ( NULL == pEventDataQueue )
22589 {
22590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022591 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 WDI_ASSERT(0);
22593 return WDI_STATUS_MEM_FAILURE;
22594 }
22595
22596 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22597 if ( NULL == pEventInfo )
22598 {
22599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22600 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022601 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 WDI_ASSERT(0);
22603 wpalMemoryFree(pEventDataQueue);
22604 return WDI_STATUS_MEM_FAILURE;
22605 }
22606
22607 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22608 pEventDataQueue->pUserData = pEventData->pUserData;
22609 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22610 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 pEventDataQueue->pEventData = pEventInfo;
22613
22614 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22615
22616 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022618
22619 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022621
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022622 if (eWLAN_PAL_STATUS_E_FAILURE ==
22623 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22624 {
22625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22626 "%s: Cannot allocate memory for queueing event data info",
22627 __func__);
22628 WDI_ASSERT(0);
22629 wpalMemoryFree(pEventDataQueue);
22630 wpalMemoryFree(pEventInfo);
22631 return WDI_STATUS_MEM_FAILURE;
22632 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022633
22634 /*The result of this operation is pending because the request has been
22635 queued and it will be processed at a later moment in time */
22636 return WDI_STATUS_PENDING;
22637}/*WDI_QueueAssocRequest*/
22638
22639/**
22640 @brief Utility function used by the DAL Core to help dequeue
22641 an association request that was pending
22642 The request will be queued up in front of the main
22643 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022644 @param
22645
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022647
22648
22649 @see
22650 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022651*/
22652WDI_Status
22653WDI_DequeueAssocRequest
22654(
22655 WDI_ControlBlockType* pWDICtx
22656)
22657{
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 wpt_list_node* pNode = NULL;
22659 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 WDI_BSSSessionType* pSession;
22661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022662
22663 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 Sanity check
22665 ------------------------------------------------------------------------*/
22666 if ( NULL == pWDICtx )
22667 {
22668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022670
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 }
22673
22674 /*------------------------------------------------------------------------
22675 An association has been completed => a new association can occur
22676 Check to see if there are any pending associations ->
22677 If so , transfer all the pending requests into the busy queue for
22678 processing
22679 These requests have arrived prior to the requests in the busy queue
22680 (bc they needed to be processed in order to be placed in this queue)
22681 => they will be placed at the front of the busy queue
22682 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022683 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022684
22685 if ( NULL == pNode )
22686 {
22687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 return WDI_STATUS_SUCCESS;
22690 }
22691
22692 /*The node actually points to the 1st element inside the Session Id struct -
22693 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022695
22696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22697 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22698
22699 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22700 {
22701 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022702
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 the front of the main waiting queue for subsequent execution*/
22705 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 while ( NULL != pNode )
22707 {
22708 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022709 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22710 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 }
22714 else
22715 {
22716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 WPAL_ASSERT(0);
22719 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022722
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22724 wpalMemoryFree(pSessionIdElement);
22725 return WDI_STATUS_SUCCESS;
22726}/*WDI_DequeueAssocRequest*/
22727
22728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 pending requests - all req cb will be called with
22731 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 @param
22733
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022735
22736 @see
22737 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022738*/
22739WDI_Status
22740WDI_ClearPendingRequests
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_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 void* pUserData;
22749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22750
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022752
22753 /*------------------------------------------------------------------------
22754 Go through all the requests and fail them - this will only be called
22755 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 ------------------------------------------------------------------------*/
22758 while( pNode )
22759 {
22760 /*The node actually points to the 1st element inside the Event Data struct -
22761 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022762 pEventDataQueue = (WDI_EventInfoType*)pNode;
22763
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22765 if ( NULL != pfnReqStatusCB )
22766 {
22767 /*Fail the request*/
22768 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22769 }
22770 /* Free data - that was allocated when queueing */
22771 if ( pEventDataQueue->pEventData != NULL )
22772 {
22773 wpalMemoryFree(pEventDataQueue->pEventData);
22774 }
22775 wpalMemoryFree(pEventDataQueue);
22776
22777 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22778 {
22779 break;
22780 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 }
22782
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 return WDI_STATUS_SUCCESS;
22784}/*WDI_ClearPendingRequests*/
22785
22786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022787 @brief Helper routine used to init the BSS Sessions in the WDI control block
22788
22789
22790 @param pWDICtx: pointer to the WLAN DAL context
22791
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 @see
22793*/
22794void
22795WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022796(
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 WDI_ControlBlockType* pWDICtx
22798)
22799{
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22802
22803 /*-------------------------------------------------------------------------
22804 No Sanity check
22805 -------------------------------------------------------------------------*/
22806 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22807 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22810 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22811 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22812 }
22813}/*WDI_ResetAssocSessions*/
22814
22815/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 @brief Helper routine used to find a session based on the BSSID
22817
22818
22819 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 pSession: pointer to the session (if found)
22822
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022825*/
22826wpt_uint8
22827WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022828(
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 WDI_ControlBlockType* pWDICtx,
22830 wpt_macAddr macBSSID,
22831 WDI_BSSSessionType** ppSession
22832)
22833{
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22836
22837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 -------------------------------------------------------------------------*/
22840 if ( NULL == ppSession )
22841 {
22842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022843 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 }
22846
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022848
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 /*------------------------------------------------------------------------
22850 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 ------------------------------------------------------------------------*/
22852 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22853 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022854 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22855 (eWLAN_PAL_TRUE ==
22856 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22857 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 {
22859 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 return i;
22862 }
22863 }
22864
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022866}/*WDI_FindAssocSession*/
22867
22868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022869 @brief Helper routine used to find a session based on the BSSID
22870
22871
22872 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 ucBSSIdx: BSS Index of the session
22874 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022875
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022878*/
22879wpt_uint8
22880WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022881(
Jeff Johnson295189b2012-06-20 16:38:30 -070022882 WDI_ControlBlockType* pWDICtx,
22883 wpt_uint16 ucBSSIdx,
22884 WDI_BSSSessionType** ppSession
22885)
22886{
Jeff Johnsone7245742012-09-05 17:12:55 -070022887 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22889
22890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 -------------------------------------------------------------------------*/
22893 if ( NULL == ppSession )
22894 {
22895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022896 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022898 }
22899
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022901
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 /*------------------------------------------------------------------------
22903 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 ------------------------------------------------------------------------*/
22905 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22906 {
22907 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22908 {
22909 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 return i;
22912 }
22913 }
22914
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022916}/*WDI_FindAssocSessionByBSSIdx*/
22917
22918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 @brief Helper routine used to find a session based on the BSSID
22920
22921
22922 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 ucBSSIdx: BSS Index of the session
22924 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022925
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022928*/
22929wpt_uint8
22930WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022931(
Jeff Johnson295189b2012-06-20 16:38:30 -070022932 WDI_ControlBlockType* pWDICtx,
22933 wpt_uint16 usIdx,
22934 WDI_BSSSessionType** ppSession
22935)
22936{
22937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22938
22939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 -------------------------------------------------------------------------*/
22942 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22943 {
22944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022945 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 }
22948
22949 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022950 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022951
22952 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022953
Jeff Johnson295189b2012-06-20 16:38:30 -070022954}/*WDI_FindAssocSessionByBSSIdx*/
22955
22956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022959
22960
22961 @param pWDICtx: pointer to the WLAN DAL context
22962 pSession: pointer to the session (if found)
22963
Jeff Johnson295189b2012-06-20 16:38:30 -070022964 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022965 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022966*/
22967wpt_uint8
22968WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022969(
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 WDI_ControlBlockType* pWDICtx,
22971 WDI_BSSSessionType** ppSession
22972)
22973{
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 -------------------------------------------------------------------------*/
22979 if ( NULL == ppSession )
22980 {
22981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022982 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 }
22985
Jeff Johnsone7245742012-09-05 17:12:55 -070022986 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022987
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 /*------------------------------------------------------------------------
22989 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 ------------------------------------------------------------------------*/
22991 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22992 {
22993 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22994 {
22995 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 return i;
22998 }
22999 }
23000
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002}/*WDI_FindEmptySession*/
23003
23004
23005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023008
23009
23010 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023011 macBSSID: pointer to BSSID. If NULL, get all the session.
23012 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23013 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23014 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 @see
23016 @return Number of sessions in use
23017*/
23018wpt_uint8
23019WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023020(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023021 WDI_ControlBlockType* pWDICtx,
23022 wpt_macAddr macBSSID,
23023 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023024)
23025{
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023028
23029 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023030 Count all sessions in use
23031 ------------------------------------------------------------------------*/
23032 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23033 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023034 if ( macBSSID && skipBSSID &&
23035 (eWLAN_PAL_TRUE ==
23036 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23037 WDI_MAC_ADDR_LEN)))
23038 {
23039 continue;
23040 }
23041 else if ( pWDICtx->aBSSSessions[i].bInUse )
23042 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 }
23046
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023048}/*WDI_GetActiveSessionsCount*/
23049
23050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023053
23054
23055 @param pWDICtx: pointer to the WLAN DAL context
23056 pSession: pointer to the session (if found)
23057
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023060*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023061void
Jeff Johnson295189b2012-06-20 16:38:30 -070023062WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023063(
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 WDI_ControlBlockType* pWDICtx,
23065 WDI_BSSSessionType* ppSession
23066)
23067{
23068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 -------------------------------------------------------------------------*/
23071 if ( NULL == ppSession )
23072 {
23073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023074 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 }
23077
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 /*------------------------------------------------------------------------
23079 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 ------------------------------------------------------------------------*/
23081 wpal_list_destroy(&ppSession->wptPendingQueue);
23082 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23084 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23086 wpal_list_init(&ppSession->wptPendingQueue);
23087
23088}/*WDI_DeleteSession*/
23089
23090/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 @param
23094
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 WDI_AddStaParams: - pointer to the WDI Add STA params
23096 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023097
23098 @see
23099 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023100*/
23101void
23102WDI_AddBcastSTAtoSTATable
23103(
23104 WDI_ControlBlockType* pWDICtx,
23105 WDI_AddStaParams * staParams,
23106 wpt_uint16 usBcastStaIdx
23107)
23108{
23109 WDI_AddStaParams wdiAddSTAParam = {0};
23110 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23112
23113 /*---------------------------------------------------------------------
23114 Sanity check
23115 ---------------------------------------------------------------------*/
23116 if ( NULL == staParams )
23117 {
23118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023120
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 }
23123
23124 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23125 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23126 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23127 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23128 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23129 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23130 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23131 WDI_MAC_ADDR_LEN );
23132 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23133 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23134 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23135 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23136 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23137 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23138 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023139
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23141}
23142
23143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 @brief NV blob will be divided into fragments of size 4kb and
23145 Sent to HAL
23146
23147 @param pWDICtx: pointer to the WLAN DAL context
23148 pEventData: pointer to the event information structure
23149
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 @see
23151 @return Result of the function call
23152 */
23153
23154WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023155(
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 WDI_ControlBlockType* pWDICtx,
23157 WDI_EventInfoType* pEventData
23158)
23159{
23160
23161 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23162 wpt_uint8* pSendBuffer = NULL;
23163 wpt_uint16 usDataOffset = 0;
23164 wpt_uint16 usSendSize = 0;
23165 wpt_uint16 usCurrentFragmentSize =0;
23166 wpt_uint8* pSrcBuffer = NULL;
23167 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23168 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23169
23170 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23171 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23172 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23173
Jeff Johnsone7245742012-09-05 17:12:55 -070023174 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023175 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23176
23177 /* Update the current Fragment Number */
23178 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23179
23180 /*Update the HAL REQ structure */
23181 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23182 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23183 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23184
23185 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 image will be sent to HAL*/
23188
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023191 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23195 usCurrentFragmentSize = FRAGMENT_SIZE;
23196
23197 /*Update the HAL REQ structure */
23198 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23199 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23200
23201 }
23202 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 usCurrentFragmentSize = FRAGMENT_SIZE;
23205
23206 /*Update the HAL REQ structure */
23207 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23208 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23209 }
23210
23211 /*-----------------------------------------------------------------------
23212 Get message buffer
23213 -----------------------------------------------------------------------*/
23214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23215 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23216 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23219 {
23220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023221 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 pEventData, pwdiNvDownloadReqParams);
23223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 }
23226
23227 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23230
23231 /* Appending the NV image fragment */
23232 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23233 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23234 usCurrentFragmentSize);
23235
23236 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23240 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 WDI_NV_DOWNLOAD_RESP);
23242
23243}
Jeff Johnsone7245742012-09-05 17:12:55 -070023244/*============================================================================
23245 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 ============================================================================*/
23247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 @brief Helper routine used to find a session based on the BSSID
23249 @param pContext: pointer to the WLAN DAL context
23250 @param pDPContext: pointer to the Datapath context
23251
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023254*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023255WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023256WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23257{
23258 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23259
23260 pCB->pDPContext = pDPContext;
23261 return;
23262}
23263
23264/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023265 @brief Helper routine used to find a session based on the BSSID
23266
23267
23268 @param pContext: pointer to the WLAN DAL context
23269
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 @see
23271 @return pointer to Datapath context
23272*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023273WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023274WDI_DS_GetDatapathContext (void *pContext)
23275{
23276 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23277 return pCB->pDPContext;
23278}
23279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 @brief Helper routine used to find a session based on the BSSID
23281
23282
23283 @param pContext: pointer to the WLAN DAL context
23284 @param pDTDriverContext: pointer to the Transport Driver context
23285
Jeff Johnson295189b2012-06-20 16:38:30 -070023286 @see
23287 @return void
23288*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023289WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023290WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23291{
23292 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23293
23294 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023296}
23297
23298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 @brief Helper routine used to find a session based on the BSSID
23300
23301
23302 @param pWDICtx: pointer to the WLAN DAL context
23303
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023305 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023306*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023307WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023308WDT_GetTransportDriverContext (void *pContext)
23309{
23310 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023312}
23313
Jeff Johnsone7245742012-09-05 17:12:55 -070023314/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 Helper inline converters
23316 ============================================================================*/
23317/*Convert WDI driver type into HAL driver type*/
23318WPT_STATIC WPT_INLINE WDI_Status
23319WDI_HAL_2_WDI_STATUS
23320(
23321 eHalStatus halStatus
23322)
23323{
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 the chances of getting inlined*/
23326 switch( halStatus )
23327 {
23328 case eHAL_STATUS_SUCCESS:
23329 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23330 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23331 return WDI_STATUS_SUCCESS;
23332 case eHAL_STATUS_FAILURE:
23333 return WDI_STATUS_E_FAILURE;
23334 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 return WDI_STATUS_MEM_FAILURE;
23336 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023338 default:
23339 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23340 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023341
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023343}/*WDI_HAL_2_WDI_STATUS*/
23344
23345/*Convert WDI request type into HAL request type*/
23346WPT_STATIC WPT_INLINE tHalHostMsgType
23347WDI_2_HAL_REQ_TYPE
23348(
23349 WDI_RequestEnumType wdiReqType
23350)
23351{
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 the chances of getting inlined*/
23354 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023367 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023372 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023383 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 return WLAN_HAL_RMV_STAKEY_REQ;
23391 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 case WDI_DEL_BA_REQ:
23400 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023401#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 case WDI_TSM_STATS_REQ:
23403 return WLAN_HAL_TSM_STATS_REQ;
23404#endif
23405 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 case WDI_ADD_BA_SESSION_REQ:
23416 return WLAN_HAL_ADD_BA_SESSION_REQ;
23417 case WDI_TRIGGER_BA_REQ:
23418 return WLAN_HAL_TRIGGER_BA_REQ;
23419 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23424 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23425 case WDI_SET_MAX_TX_POWER_REQ:
23426 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023427 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23428 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023429 case WDI_SET_TX_POWER_REQ:
23430 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23432 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023433#ifdef FEATURE_WLAN_TDLS
23434 case WDI_TDLS_LINK_ESTABLISH_REQ:
23435 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23436#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023448 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023450 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023457 case WDI_REM_BEACON_FILTER_REQ:
23458 return WLAN_HAL_REM_BCN_FILTER_REQ;
23459 case WDI_SET_RSSI_THRESHOLDS_REQ:
23460 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23461 case WDI_HOST_OFFLOAD_REQ:
23462 return WLAN_HAL_HOST_OFFLOAD_REQ;
23463 case WDI_WOWL_ADD_BC_PTRN_REQ:
23464 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23465 case WDI_WOWL_DEL_BC_PTRN_REQ:
23466 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23467 case WDI_WOWL_ENTER_REQ:
23468 return WLAN_HAL_ENTER_WOWL_REQ;
23469 case WDI_WOWL_EXIT_REQ:
23470 return WLAN_HAL_EXIT_WOWL_REQ;
23471 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23472 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23473 case WDI_NV_DOWNLOAD_REQ:
23474 return WLAN_HAL_DOWNLOAD_NV_REQ;
23475 case WDI_FLUSH_AC_REQ:
23476 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23477 case WDI_BTAMP_EVENT_REQ:
23478 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23479#ifdef WLAN_FEATURE_VOWIFI_11R
23480 case WDI_AGGR_ADD_TS_REQ:
23481 return WLAN_HAL_AGGR_ADD_TS_REQ;
23482#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 case WDI_FTM_CMD_REQ:
23484 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 case WDI_ADD_STA_SELF_REQ:
23486 return WLAN_HAL_ADD_STA_SELF_REQ;
23487 case WDI_DEL_STA_SELF_REQ:
23488 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023489#ifdef FEATURE_OEM_DATA_SUPPORT
23490 case WDI_START_OEM_DATA_REQ:
23491 return WLAN_HAL_START_OEM_DATA_REQ;
23492#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023493 case WDI_HOST_RESUME_REQ:
23494 return WLAN_HAL_HOST_RESUME_REQ;
23495 case WDI_HOST_SUSPEND_IND:
23496 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023497 case WDI_TRAFFIC_STATS_IND:
23498 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023499#ifdef WLAN_FEATURE_11W
23500 case WDI_EXCLUDE_UNENCRYPTED_IND:
23501 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23502#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 case WDI_KEEP_ALIVE_REQ:
23504 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023505#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023506 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23507 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023508#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023509#ifdef FEATURE_WLAN_SCAN_PNO
23510 case WDI_SET_PREF_NETWORK_REQ:
23511 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23512 case WDI_SET_RSSI_FILTER_REQ:
23513 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23514 case WDI_UPDATE_SCAN_PARAMS_REQ:
23515 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23516#endif // FEATURE_WLAN_SCAN_PNO
23517 case WDI_SET_TX_PER_TRACKING_REQ:
23518 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23519#ifdef WLAN_FEATURE_PACKET_FILTERING
23520 case WDI_8023_MULTICAST_LIST_REQ:
23521 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23522 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023523 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23525 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23526 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23527 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23528#endif // WLAN_FEATURE_PACKET_FILTERING
23529 case WDI_HAL_DUMP_CMD_REQ:
23530 return WLAN_HAL_DUMP_COMMAND_REQ;
23531#ifdef WLAN_FEATURE_GTK_OFFLOAD
23532 case WDI_GTK_OFFLOAD_REQ:
23533 return WLAN_HAL_GTK_OFFLOAD_REQ;
23534 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23535 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23536#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23537
23538 case WDI_INIT_SCAN_CON_REQ:
23539 return WLAN_HAL_INIT_SCAN_CON_REQ;
23540 case WDI_SET_POWER_PARAMS_REQ:
23541 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23542 case WDI_SET_TM_LEVEL_REQ:
23543 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23544 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23545 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023546#ifdef WLAN_FEATURE_11AC
23547 case WDI_UPDATE_VHT_OP_MODE_REQ:
23548 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23549#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023550 case WDI_GET_ROAM_RSSI_REQ:
23551 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023552 case WDI_DHCP_START_IND:
23553 return WLAN_HAL_DHCP_START_IND;
23554 case WDI_DHCP_STOP_IND:
23555 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023556#ifdef FEATURE_WLAN_LPHB
23557 case WDI_LPHB_CFG_REQ:
23558 return WLAN_HAL_LPHB_CFG_REQ;
23559#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023560 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23561 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23562 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23563 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23564
Rajeev79dbe4c2013-10-05 11:03:42 +053023565#ifdef FEATURE_WLAN_BATCH_SCAN
23566 case WDI_SET_BATCH_SCAN_REQ:
23567 return WLAN_HAL_BATCHSCAN_SET_REQ;
23568 case WDI_STOP_BATCH_SCAN_IND:
23569 return WLAN_HAL_BATCHSCAN_STOP_IND;
23570 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23571 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23572#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023573 case WDI_RATE_UPDATE_IND:
23574 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023575 case WDI_START_HT40_OBSS_SCAN_IND:
23576 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23577 case WDI_STOP_HT40_OBSS_SCAN_IND:
23578 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023579 case WDI_UPDATE_CHAN_REQ:
23580 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023581 case WDI_CH_SWITCH_REQ_V1:
23582 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023583 case WDI_GET_BCN_MISS_RATE_REQ:
23584 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023585
23586#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23587 case WDI_LL_STATS_SET_REQ:
23588 return WLAN_HAL_LL_SET_STATS_REQ;
23589 case WDI_LL_STATS_GET_REQ:
23590 return WLAN_HAL_LL_GET_STATS_REQ;
23591 case WDI_LL_STATS_CLEAR_REQ:
23592 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23593#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023594#ifdef WLAN_FEATURE_EXTSCAN
23595 case WDI_EXTSCAN_START_REQ:
23596 return WLAN_HAL_EXT_SCAN_START_REQ;
23597 case WDI_EXTSCAN_STOP_REQ:
23598 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23599 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23600 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23601 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23602 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23603 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23604 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23605 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23606 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23607 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23608 return WLAN_HAL_SIG_RSSI_SET_REQ;
23609 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23610 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23611#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023615
Jeff Johnson295189b2012-06-20 16:38:30 -070023616}/*WDI_2_HAL_REQ_TYPE*/
23617
23618/*Convert WDI response type into HAL response type*/
23619WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23620HAL_2_WDI_RSP_TYPE
23621(
23622 tHalHostMsgType halMsg
23623)
23624{
Jeff Johnsone7245742012-09-05 17:12:55 -070023625 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 the chances of getting inlined*/
23627 switch( halMsg )
23628 {
23629 case WLAN_HAL_START_RSP:
23630 return WDI_START_RESP;
23631 case WLAN_HAL_STOP_RSP:
23632 return WDI_STOP_RESP;
23633 case WLAN_HAL_INIT_SCAN_RSP:
23634 return WDI_INIT_SCAN_RESP;
23635 case WLAN_HAL_START_SCAN_RSP:
23636 return WDI_START_SCAN_RESP;
23637 case WLAN_HAL_END_SCAN_RSP:
23638 return WDI_END_SCAN_RESP;
23639 case WLAN_HAL_FINISH_SCAN_RSP:
23640 return WDI_FINISH_SCAN_RESP;
23641 case WLAN_HAL_CONFIG_STA_RSP:
23642 return WDI_CONFIG_STA_RESP;
23643 case WLAN_HAL_DELETE_STA_RSP:
23644 return WDI_DEL_STA_RESP;
23645 case WLAN_HAL_CONFIG_BSS_RSP:
23646 return WDI_CONFIG_BSS_RESP;
23647 case WLAN_HAL_DELETE_BSS_RSP:
23648 return WDI_DEL_BSS_RESP;
23649 case WLAN_HAL_JOIN_RSP:
23650 return WDI_JOIN_RESP;
23651 case WLAN_HAL_POST_ASSOC_RSP:
23652 return WDI_POST_ASSOC_RESP;
23653 case WLAN_HAL_SET_BSSKEY_RSP:
23654 return WDI_SET_BSS_KEY_RESP;
23655 case WLAN_HAL_SET_STAKEY_RSP:
23656 return WDI_SET_STA_KEY_RESP;
23657 case WLAN_HAL_RMV_BSSKEY_RSP:
23658 return WDI_RMV_BSS_KEY_RESP;
23659 case WLAN_HAL_RMV_STAKEY_RSP:
23660 return WDI_RMV_STA_KEY_RESP;
23661 case WLAN_HAL_SET_BCASTKEY_RSP:
23662 return WDI_SET_STA_BCAST_KEY_RESP;
23663 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23664 // return WDI_RMV_STA_BCAST_KEY_RESP;
23665 case WLAN_HAL_ADD_TS_RSP:
23666 return WDI_ADD_TS_RESP;
23667 case WLAN_HAL_DEL_TS_RSP:
23668 return WDI_DEL_TS_RESP;
23669 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23670 return WDI_UPD_EDCA_PRMS_RESP;
23671 case WLAN_HAL_ADD_BA_RSP:
23672 return WDI_ADD_BA_RESP;
23673 case WLAN_HAL_DEL_BA_RSP:
23674 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023675#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 case WLAN_HAL_TSM_STATS_RSP:
23677 return WDI_TSM_STATS_RESP;
23678#endif
23679 case WLAN_HAL_CH_SWITCH_RSP:
23680 return WDI_CH_SWITCH_RESP;
23681 case WLAN_HAL_SET_LINK_ST_RSP:
23682 return WDI_SET_LINK_ST_RESP;
23683 case WLAN_HAL_GET_STATS_RSP:
23684 return WDI_GET_STATS_RESP;
23685 case WLAN_HAL_UPDATE_CFG_RSP:
23686 return WDI_UPDATE_CFG_RESP;
23687 case WLAN_HAL_ADD_BA_SESSION_RSP:
23688 return WDI_ADD_BA_SESSION_RESP;
23689 case WLAN_HAL_TRIGGER_BA_RSP:
23690 return WDI_TRIGGER_BA_RESP;
23691 case WLAN_HAL_UPDATE_BEACON_RSP:
23692 return WDI_UPD_BCON_PRMS_RESP;
23693 case WLAN_HAL_SEND_BEACON_RSP:
23694 return WDI_SND_BCON_RESP;
23695 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23696 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23697 /*Indications*/
23698 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23699 return WDI_HAL_RSSI_NOTIFICATION_IND;
23700 case WLAN_HAL_MISSED_BEACON_IND:
23701 return WDI_HAL_MISSED_BEACON_IND;
23702 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23703 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23704 case WLAN_HAL_MIC_FAILURE_IND:
23705 return WDI_HAL_MIC_FAILURE_IND;
23706 case WLAN_HAL_FATAL_ERROR_IND:
23707 return WDI_HAL_FATAL_ERROR_IND;
23708 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23709 return WDI_HAL_DEL_STA_IND;
23710 case WLAN_HAL_COEX_IND:
23711 return WDI_HAL_COEX_IND;
23712 case WLAN_HAL_OTA_TX_COMPL_IND:
23713 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 case WLAN_HAL_P2P_NOA_ATTR_IND:
23715 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023716 case WLAN_HAL_P2P_NOA_START_IND:
23717 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 case WLAN_HAL_TX_PER_HIT_IND:
23719 return WDI_HAL_TX_PER_HIT_IND;
23720 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23721 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023722 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23723 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023724 case WLAN_HAL_SET_TX_POWER_RSP:
23725 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 case WLAN_HAL_SET_P2P_GONOA_RSP:
23727 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023728#ifdef FEATURE_WLAN_TDLS
23729 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23730 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23731 case WLAN_HAL_TDLS_IND:
23732 return WDI_HAL_TDLS_IND;
23733#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023737 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023749 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23753 return WDI_SET_BEACON_FILTER_RESP;
23754 case WLAN_HAL_REM_BCN_FILTER_RSP:
23755 return WDI_REM_BEACON_FILTER_RESP;
23756 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23757 return WDI_SET_RSSI_THRESHOLDS_RESP;
23758 case WLAN_HAL_HOST_OFFLOAD_RSP:
23759 return WDI_HOST_OFFLOAD_RESP;
23760 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23761 return WDI_WOWL_ADD_BC_PTRN_RESP;
23762 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23763 return WDI_WOWL_DEL_BC_PTRN_RESP;
23764 case WLAN_HAL_ENTER_WOWL_RSP:
23765 return WDI_WOWL_ENTER_RESP;
23766 case WLAN_HAL_EXIT_WOWL_RSP:
23767 return WDI_WOWL_EXIT_RESP;
23768 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23769 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23770 case WLAN_HAL_DOWNLOAD_NV_RSP:
23771 return WDI_NV_DOWNLOAD_RESP;
23772 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23773 return WDI_FLUSH_AC_RESP;
23774 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23775 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 case WLAN_HAL_PROCESS_PTT_RSP:
23777 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 case WLAN_HAL_ADD_STA_SELF_RSP:
23779 return WDI_ADD_STA_SELF_RESP;
23780case WLAN_HAL_DEL_STA_SELF_RSP:
23781 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023782#ifdef FEATURE_OEM_DATA_SUPPORT
23783 case WLAN_HAL_START_OEM_DATA_RSP:
23784 return WDI_START_OEM_DATA_RESP;
23785#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 case WLAN_HAL_HOST_RESUME_RSP:
23787 return WDI_HOST_RESUME_RESP;
23788 case WLAN_HAL_KEEP_ALIVE_RSP:
23789 return WDI_KEEP_ALIVE_RESP;
23790#ifdef FEATURE_WLAN_SCAN_PNO
23791 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23792 return WDI_SET_PREF_NETWORK_RESP;
23793 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23796 return WDI_UPDATE_SCAN_PARAMS_RESP;
23797 case WLAN_HAL_PREF_NETW_FOUND_IND:
23798 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23799#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023800#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023801 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23802 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023803#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23805 return WDI_SET_TX_PER_TRACKING_RESP;
23806#ifdef WLAN_FEATURE_PACKET_FILTERING
23807 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23808 return WDI_8023_MULTICAST_LIST_RESP;
23809 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23810 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23811 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23812 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23813 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23814 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23815#endif // WLAN_FEATURE_PACKET_FILTERING
23816
23817 case WLAN_HAL_DUMP_COMMAND_RSP:
23818 return WDI_HAL_DUMP_CMD_RESP;
23819 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23820 return WDI_SET_POWER_PARAMS_RESP;
23821#ifdef WLAN_FEATURE_VOWIFI_11R
23822 case WLAN_HAL_AGGR_ADD_TS_RSP:
23823 return WDI_AGGR_ADD_TS_RESP;
23824#endif
23825
23826#ifdef WLAN_FEATURE_GTK_OFFLOAD
23827 case WLAN_HAL_GTK_OFFLOAD_RSP:
23828 return WDI_GTK_OFFLOAD_RESP;
23829 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23830 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23831#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23832#ifdef WLAN_WAKEUP_EVENTS
23833 case WLAN_HAL_WAKE_REASON_IND:
23834 return WDI_HAL_WAKE_REASON_IND;
23835#endif // WLAN_WAKEUP_EVENTS
23836
23837 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23838 return WDI_SET_TM_LEVEL_RESP;
23839 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23840 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023841#ifdef WLAN_FEATURE_11AC
23842 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23843 return WDI_UPDATE_VHT_OP_MODE_RESP;
23844#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023845#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023846 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23847 return WDI_GET_ROAM_RSSI_RESP;
23848#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023849
Leo Chang9056f462013-08-01 19:21:11 -070023850#ifdef FEATURE_WLAN_LPHB
23851 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023852 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023853 case WLAN_HAL_LPHB_CFG_RSP:
23854 return WDI_LPHB_CFG_RESP;
23855#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023856
23857 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23858 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023859 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23860 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023861
Rajeev79dbe4c2013-10-05 11:03:42 +053023862#ifdef FEATURE_WLAN_BATCH_SCAN
23863 case WLAN_HAL_BATCHSCAN_SET_RSP:
23864 return WDI_SET_BATCH_SCAN_RESP;
23865 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23866 return WDI_BATCHSCAN_RESULT_IND;
23867#endif // FEATURE_WLAN_BATCH_SCAN
23868
Leo Chang0b0e45a2013-12-15 15:18:55 -080023869#ifdef FEATURE_WLAN_CH_AVOID
23870 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23871 return WDI_HAL_CH_AVOID_IND;
23872#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023873 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23874 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023875 case WLAN_HAL_PRINT_REG_INFO_IND:
23876 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053023877 case WLAN_HAL_CH_SWITCH_V1_RSP:
23878 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053023879 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23880 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023881#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23882 case WLAN_HAL_LL_SET_STATS_RSP:
23883 return WDI_LL_STATS_SET_RSP;
23884 case WLAN_HAL_LL_GET_STATS_RSP:
23885 return WDI_LL_STATS_GET_RSP;
23886 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23887 return WDI_LL_STATS_CLEAR_RSP;
23888 case WLAN_HAL_LL_NOTIFY_STATS:
23889 return WDI_HAL_LL_STATS_RESULTS_IND;
23890#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023891#ifdef WLAN_FEATURE_EXTSCAN
23892 case WLAN_HAL_EXT_SCAN_START_RSP:
23893 return WDI_EXTSCAN_START_RSP;
23894 case WLAN_HAL_EXT_SCAN_STOP_RSP:
23895 return WDI_EXTSCAN_STOP_RSP;
23896 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
23897 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
23898 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
23899 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
23900 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
23901 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
23902 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
23903 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
23904 case WLAN_HAL_SIG_RSSI_SET_RSP:
23905 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
23906 case WLAN_HAL_SIG_RSSI_RESET_RSP:
23907 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
23908 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
23909 return WDI_HAL_EXTSCAN_PROGRESS_IND;
23910 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
23911 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
23912 case WLAN_HAL_EXT_SCAN_RESULT_IND:
23913 return WDI_HAL_EXTSCAN_RESULT_IND;
23914 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
23915 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
23916 case WLAN_HAL_SIG_RSSI_RESULT_IND:
23917 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
23918#endif /* WLAN_FEATURE_EXTSCAN */
23919
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023921 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 }
23923
23924}/*HAL_2_WDI_RSP_TYPE*/
23925
23926
23927/*Convert WDI driver type into HAL driver type*/
23928WPT_STATIC WPT_INLINE tDriverType
23929WDI_2_HAL_DRV_TYPE
23930(
23931 WDI_DriverType wdiDriverType
23932)
23933{
Jeff Johnsone7245742012-09-05 17:12:55 -070023934 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023935 the chances of getting inlined*/
23936 switch( wdiDriverType )
23937 {
23938 case WDI_DRIVER_TYPE_PRODUCTION:
23939 return eDRIVER_TYPE_PRODUCTION;
23940 case WDI_DRIVER_TYPE_MFG:
23941 return eDRIVER_TYPE_MFG;
23942 case WDI_DRIVER_TYPE_DVT:
23943 return eDRIVER_TYPE_DVT;
23944 }
23945
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023947}/*WDI_2_HAL_DRV_TYPE*/
23948
23949
23950/*Convert WDI stop reason into HAL stop reason*/
23951WPT_STATIC WPT_INLINE tHalStopType
23952WDI_2_HAL_STOP_REASON
23953(
23954 WDI_StopType wdiDriverType
23955)
23956{
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 the chances of getting inlined*/
23959 switch( wdiDriverType )
23960 {
23961 case WDI_STOP_TYPE_SYS_RESET:
23962 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023963 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23964 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 case WDI_STOP_TYPE_RF_KILL:
23966 return HAL_STOP_TYPE_RF_KILL;
23967 }
23968
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023970}/*WDI_2_HAL_STOP_REASON*/
23971
23972
23973/*Convert WDI scan mode type into HAL scan mode type*/
23974WPT_STATIC WPT_INLINE eHalSysMode
23975WDI_2_HAL_SCAN_MODE
23976(
23977 WDI_ScanMode wdiScanMode
23978)
23979{
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 the chances of getting inlined*/
23982 switch( wdiScanMode )
23983 {
23984 case WDI_SCAN_MODE_NORMAL:
23985 return eHAL_SYS_MODE_NORMAL;
23986 case WDI_SCAN_MODE_LEARN:
23987 return eHAL_SYS_MODE_LEARN;
23988 case WDI_SCAN_MODE_SCAN:
23989 return eHAL_SYS_MODE_SCAN;
23990 case WDI_SCAN_MODE_PROMISC:
23991 return eHAL_SYS_MODE_PROMISC;
23992 case WDI_SCAN_MODE_SUSPEND_LINK:
23993 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023994 case WDI_SCAN_MODE_ROAM_SCAN:
23995 return eHAL_SYS_MODE_ROAM_SCAN;
23996 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23997 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 }
23999
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001}/*WDI_2_HAL_SCAN_MODE*/
24002
24003/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024004WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024005WDI_2_HAL_SEC_CH_OFFSET
24006(
24007 WDI_HTSecondaryChannelOffset wdiSecChOffset
24008)
24009{
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 the chances of getting inlined*/
24012 switch( wdiSecChOffset )
24013 {
24014 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024019 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24020#ifdef WLAN_FEATURE_11AC
24021 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24022 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24023 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24024 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24025 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24026 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24027 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24028 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24029 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24030 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24031 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24032 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24033 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24034 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24035#endif
24036 default:
24037 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 }
24039
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024041}/*WDI_2_HAL_SEC_CH_OFFSET*/
24042
24043/*Convert WDI BSS type into HAL BSS type*/
24044WPT_STATIC WPT_INLINE tSirBssType
24045WDI_2_HAL_BSS_TYPE
24046(
24047 WDI_BssType wdiBSSType
24048)
24049{
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 the chances of getting inlined*/
24052 switch( wdiBSSType )
24053 {
24054 case WDI_INFRASTRUCTURE_MODE:
24055 return eSIR_INFRASTRUCTURE_MODE;
24056 case WDI_INFRA_AP_MODE:
24057 return eSIR_INFRA_AP_MODE;
24058 case WDI_IBSS_MODE:
24059 return eSIR_IBSS_MODE;
24060 case WDI_BTAMP_STA_MODE:
24061 return eSIR_BTAMP_STA_MODE;
24062 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 case WDI_BSS_AUTO_MODE:
24065 return eSIR_AUTO_MODE;
24066 }
24067
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069}/*WDI_2_HAL_BSS_TYPE*/
24070
24071/*Convert WDI NW type into HAL NW type*/
24072WPT_STATIC WPT_INLINE tSirNwType
24073WDI_2_HAL_NW_TYPE
24074(
24075 WDI_NwType wdiNWType
24076)
24077{
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 the chances of getting inlined*/
24080 switch( wdiNWType )
24081 {
24082 case WDI_11A_NW_TYPE:
24083 return eSIR_11A_NW_TYPE;
24084 case WDI_11B_NW_TYPE:
24085 return eSIR_11B_NW_TYPE;
24086 case WDI_11G_NW_TYPE:
24087 return eSIR_11G_NW_TYPE;
24088 case WDI_11N_NW_TYPE:
24089 return eSIR_11N_NW_TYPE;
24090 }
24091
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024093}/*WDI_2_HAL_NW_TYPE*/
24094
24095/*Convert WDI chanel bonding type into HAL cb type*/
24096WPT_STATIC WPT_INLINE ePhyChanBondState
24097WDI_2_HAL_CB_STATE
24098(
24099 WDI_PhyChanBondState wdiCbState
24100)
24101{
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 the chances of getting inlined*/
24104 switch ( wdiCbState )
24105 {
24106 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24107 return PHY_SINGLE_CHANNEL_CENTERED;
24108 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24109 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24110 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24111 return PHY_DOUBLE_CHANNEL_CENTERED;
24112 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24113 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024114#ifdef WLAN_FEATURE_11AC
24115 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24116 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24117 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24118 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24119 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24120 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24121 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24122 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24123 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24124 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24125 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24126 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24127 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24128 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24129#endif
24130 case WDI_MAX_CB_STATE:
24131 default:
24132 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024134
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 return PHY_CHANNEL_BONDING_STATE_MAX;
24136}/*WDI_2_HAL_CB_STATE*/
24137
24138/*Convert WDI chanel bonding type into HAL cb type*/
24139WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24140WDI_2_HAL_HT_OPER_MODE
24141(
24142 WDI_HTOperatingMode wdiHTOperMode
24143)
24144{
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 the chances of getting inlined*/
24147 switch ( wdiHTOperMode )
24148 {
24149 case WDI_HT_OP_MODE_PURE:
24150 return eSIR_HT_OP_MODE_PURE;
24151 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24152 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24153 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24154 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24155 case WDI_HT_OP_MODE_MIXED:
24156 return eSIR_HT_OP_MODE_MIXED;
24157 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024158
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 return eSIR_HT_OP_MODE_MAX;
24160}/*WDI_2_HAL_HT_OPER_MODE*/
24161
24162/*Convert WDI mimo PS type into HAL mimo PS type*/
24163WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24164WDI_2_HAL_MIMO_PS
24165(
24166 WDI_HTMIMOPowerSaveState wdiHTOperMode
24167)
24168{
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 the chances of getting inlined*/
24171 switch ( wdiHTOperMode )
24172 {
24173 case WDI_HT_MIMO_PS_STATIC:
24174 return eSIR_HT_MIMO_PS_STATIC;
24175 case WDI_HT_MIMO_PS_DYNAMIC:
24176 return eSIR_HT_MIMO_PS_DYNAMIC;
24177 case WDI_HT_MIMO_PS_NA:
24178 return eSIR_HT_MIMO_PS_NA;
24179 case WDI_HT_MIMO_PS_NO_LIMIT:
24180 return eSIR_HT_MIMO_PS_NO_LIMIT;
24181 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024182
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 return eSIR_HT_MIMO_PS_MAX;
24184}/*WDI_2_HAL_MIMO_PS*/
24185
24186/*Convert WDI ENC type into HAL ENC type*/
24187WPT_STATIC WPT_INLINE tAniEdType
24188WDI_2_HAL_ENC_TYPE
24189(
24190 WDI_EncryptType wdiEncType
24191)
24192{
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024194 the chances of getting inlined*/
24195 switch ( wdiEncType )
24196 {
24197 case WDI_ENCR_NONE:
24198 return eSIR_ED_NONE;
24199
24200 case WDI_ENCR_WEP40:
24201 return eSIR_ED_WEP40;
24202
24203 case WDI_ENCR_WEP104:
24204 return eSIR_ED_WEP104;
24205
24206 case WDI_ENCR_TKIP:
24207 return eSIR_ED_TKIP;
24208
24209 case WDI_ENCR_CCMP:
24210 return eSIR_ED_CCMP;
24211
24212 case WDI_ENCR_AES_128_CMAC:
24213 return eSIR_ED_AES_128_CMAC;
24214#if defined(FEATURE_WLAN_WAPI)
24215 case WDI_ENCR_WPI:
24216 return eSIR_ED_WPI;
24217#endif
24218 default:
24219 return eSIR_ED_NOT_IMPLEMENTED;
24220 }
24221
24222}/*WDI_2_HAL_ENC_TYPE*/
24223
24224/*Convert WDI WEP type into HAL WEP type*/
24225WPT_STATIC WPT_INLINE tAniWepType
24226WDI_2_HAL_WEP_TYPE
24227(
24228 WDI_WepType wdiWEPType
24229)
24230{
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 the chances of getting inlined*/
24233 switch ( wdiWEPType )
24234 {
24235 case WDI_WEP_STATIC:
24236 return eSIR_WEP_STATIC;
24237
24238 case WDI_WEP_DYNAMIC:
24239 return eSIR_WEP_DYNAMIC;
24240 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 return eSIR_WEP_MAX;
24243}/*WDI_2_HAL_WEP_TYPE*/
24244
24245WPT_STATIC WPT_INLINE tSirLinkState
24246WDI_2_HAL_LINK_STATE
24247(
24248 WDI_LinkStateType wdiLinkState
24249)
24250{
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 the chances of getting inlined*/
24253 switch ( wdiLinkState )
24254 {
24255 case WDI_LINK_IDLE_STATE:
24256 return eSIR_LINK_IDLE_STATE;
24257
24258 case WDI_LINK_PREASSOC_STATE:
24259 return eSIR_LINK_PREASSOC_STATE;
24260
24261 case WDI_LINK_POSTASSOC_STATE:
24262 return eSIR_LINK_POSTASSOC_STATE;
24263
24264 case WDI_LINK_AP_STATE:
24265 return eSIR_LINK_AP_STATE;
24266
24267 case WDI_LINK_IBSS_STATE:
24268 return eSIR_LINK_IBSS_STATE;
24269
24270 case WDI_LINK_BTAMP_PREASSOC_STATE:
24271 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24272
24273 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24274 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24275
24276 case WDI_LINK_BTAMP_AP_STATE:
24277 return eSIR_LINK_BTAMP_AP_STATE;
24278
24279 case WDI_LINK_BTAMP_STA_STATE:
24280 return eSIR_LINK_BTAMP_STA_STATE;
24281
24282 case WDI_LINK_LEARN_STATE:
24283 return eSIR_LINK_LEARN_STATE;
24284
24285 case WDI_LINK_SCAN_STATE:
24286 return eSIR_LINK_SCAN_STATE;
24287
24288 case WDI_LINK_FINISH_SCAN_STATE:
24289 return eSIR_LINK_FINISH_SCAN_STATE;
24290
24291 case WDI_LINK_INIT_CAL_STATE:
24292 return eSIR_LINK_INIT_CAL_STATE;
24293
24294 case WDI_LINK_FINISH_CAL_STATE:
24295 return eSIR_LINK_FINISH_CAL_STATE;
24296
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WDI_LINK_LISTEN_STATE:
24298 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024299
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024300 case WDI_LINK_SEND_ACTION_STATE:
24301 return eSIR_LINK_SEND_ACTION_STATE;
24302
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 default:
24304 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024306}
24307
Jeff Johnsone7245742012-09-05 17:12:55 -070024308/*Translate a STA Context from WDI into HAL*/
24309WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024310void
24311WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024312(
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 tConfigStaParams* phalConfigSta,
24314 WDI_ConfigStaReqInfoType* pwdiConfigSta
24315)
24316{
24317 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024318#ifdef WLAN_FEATURE_11AC
24319 /* Get the Version 1 Handler */
24320 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24321 if (WDI_getFwWlanFeatCaps(DOT11AC))
24322 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024323 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 }
24325#endif
24326 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 the chances of getting inlined*/
24328
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 wpalMemoryCopy(phalConfigSta->bssId,
24330 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24331
24332 wpalMemoryCopy(phalConfigSta->staMac,
24333 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024334
24335 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24336 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24337 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24338 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24339 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24340 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24341 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24342 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24343 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24344 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24345 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24346 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24347 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24348 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24349 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24350 phalConfigSta->action = pwdiConfigSta->wdiAction;
24351 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24352 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24353 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24354 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24355 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24356 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24357 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024358
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24360
Jeff Johnsone7245742012-09-05 17:12:55 -070024361 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024362 pwdiConfigSta->wdiSupportedRates.opRateMode;
24363 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24364 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24367 }
24368 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24369 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024370 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24372 }
24373 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24374 {
24375 phalConfigSta->supportedRates.aniLegacyRates[i] =
24376 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24377 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24380 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24381 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24384 }
24385 phalConfigSta->supportedRates.rxHighestDataRate =
24386 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24387
Jeff Johnsone7245742012-09-05 17:12:55 -070024388#ifdef WLAN_FEATURE_11AC
24389 if(phalConfigSta_V1 != NULL)
24390 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024391 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24392 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24393 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24394 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024395 }
24396#endif
24397
Jeff Johnson295189b2012-06-20 16:38:30 -070024398 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024399
Jeff Johnsone7245742012-09-05 17:12:55 -070024400#ifdef WLAN_FEATURE_11AC
24401 if(phalConfigSta_V1 != NULL)
24402 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024403 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24404 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024405 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024406 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024407 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24408 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24409
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 }
24411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024412}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024413
24414/*Translate a Rate set info from WDI into HAL*/
24415WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024416WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024417(
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 tSirMacRateSet* pHalRateSet,
24419 WDI_RateSet* pwdiRateSet
24420)
24421{
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24424
24425 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24426 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24427
24428 for ( i = 0; i < pHalRateSet->numRates; i++ )
24429 {
24430 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24431 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024432
Jeff Johnson295189b2012-06-20 16:38:30 -070024433}/*WDI_CopyWDIRateSetToHALRateSet*/
24434
24435
24436/*Translate an EDCA Parameter Record from WDI into HAL*/
24437WPT_STATIC WPT_INLINE void
24438WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024439(
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 tSirMacEdcaParamRecord* phalEdcaParam,
24441 WDI_EdcaParamRecord* pWDIEdcaParam
24442)
24443{
Jeff Johnsone7245742012-09-05 17:12:55 -070024444 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 the chances of getting inlined*/
24446
24447 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24448 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24449 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24450 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24451
24452 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24453 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24454 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24455}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24456
24457
24458/*Copy a management frame header from WDI fmt into HAL fmt*/
24459WPT_STATIC WPT_INLINE void
24460WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24461(
24462 tSirMacMgmtHdr* pmacMgmtHdr,
24463 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24464)
24465{
24466 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24467 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24468 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24469 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24470 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24471 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24472 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24473 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24474 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24475 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24476 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24477
24478 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24479 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24480
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024483 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 pwdiMacMgmtHdr->bssId, 6);
24487
24488 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24489 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24490 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24491
24492}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24493
24494
24495/*Copy config bss parameters from WDI fmt into HAL fmt*/
24496WPT_STATIC WPT_INLINE void
24497WDI_CopyWDIConfigBSSToHALConfigBSS
24498(
24499 tConfigBssParams* phalConfigBSS,
24500 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24501)
24502{
24503
24504 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024505#ifdef WLAN_FEATURE_11AC
24506 /* Get the Version 1 Handler */
24507 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24508 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024509 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024510#endif
24511
Jeff Johnson295189b2012-06-20 16:38:30 -070024512 wpalMemoryCopy( phalConfigBSS->bssId,
24513 pwdiConfigBSS->macBSSID,
24514 WDI_MAC_ADDR_LEN);
24515
24516#ifdef HAL_SELF_STA_PER_BSS
24517 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24518 pwdiConfigBSS->macSelfAddr,
24519 WDI_MAC_ADDR_LEN);
24520#endif
24521
24522 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24523
24524 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24525 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24526
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 pwdiConfigBSS->ucShortSlotTimeSupported;
24529 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24530 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24531 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24532 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24533 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24536 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24537 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24538 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24539 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24540 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24541 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24542 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24543 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24544 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24545 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24546
Jeff Johnsone7245742012-09-05 17:12:55 -070024547 phalConfigBSS->htOperMode =
24548 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024549
24550 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24551 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24552 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24553 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24554
24555#ifdef WLAN_FEATURE_VOWIFI
24556 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24557#endif
24558
24559 /*! Used 32 as magic number because that is how the ssid is declared inside the
24560 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024561 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024562 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24563 pwdiConfigBSS->wdiSSID.ucLength : 32;
24564 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 pwdiConfigBSS->wdiSSID.sSSID,
24566 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024567
24568 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24569 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024570
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24572 &pwdiConfigBSS->wdiRateSet);
24573
24574 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24575
24576 if(phalConfigBSS->edcaParamsValid)
24577 {
24578 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24579 &pwdiConfigBSS->wdiBEEDCAParams);
24580 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24581 &pwdiConfigBSS->wdiBKEDCAParams);
24582 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24583 &pwdiConfigBSS->wdiVIEDCAParams);
24584 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24585 &pwdiConfigBSS->wdiVOEDCAParams);
24586 }
24587
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024589
24590 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24591
24592#ifdef WLAN_FEATURE_VOWIFI_11R
24593
Jeff Johnsone7245742012-09-05 17:12:55 -070024594 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024595 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024596
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 if( phalConfigBSS->extSetStaKeyParamValid )
24598 {
24599 /*-----------------------------------------------------------------------
24600 Copy the STA Key parameters into the HAL message
24601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024602 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024603 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24604
Jeff Johnsone7245742012-09-05 17:12:55 -070024605 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24607
24608 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24609
24610 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24611
24612 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24613
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24615 keyIndex++)
24616 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024618 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24619 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24620 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24621 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24622 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24623 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024624 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24630 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024631 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 WDI_MAX_KEY_LENGTH);
24633 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 }
24635 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24636 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024637 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 sizeof(phalConfigBSS->extSetStaKeyParam) );
24639 }
24640
24641#endif /*WLAN_FEATURE_VOWIFI_11R*/
24642
Jeff Johnsone7245742012-09-05 17:12:55 -070024643#ifdef WLAN_FEATURE_11AC
24644 if(phalConfigBSS_V1 != NULL)
24645 {
24646 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24647 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24648 }
24649#endif
24650
Jeff Johnson295189b2012-06-20 16:38:30 -070024651}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24652
24653
Jeff Johnsone7245742012-09-05 17:12:55 -070024654/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 pointed to by user data */
24656WPT_STATIC WPT_INLINE void
24657WDI_ExtractRequestCBFromEvent
24658(
24659 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 void** ppUserData
24662)
24663{
24664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24665 switch ( pEvent->wdiRequest )
24666 {
24667 case WDI_START_REQ:
24668 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24669 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24670 break;
24671 case WDI_STOP_REQ:
24672 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24673 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24674 break;
24675 case WDI_INIT_SCAN_REQ:
24676 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24677 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24678 break;
24679 case WDI_START_SCAN_REQ:
24680 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24681 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24682 break;
24683 case WDI_END_SCAN_REQ:
24684 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24685 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24686 break;
24687 case WDI_FINISH_SCAN_REQ:
24688 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24689 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24690 break;
24691 case WDI_JOIN_REQ:
24692 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24693 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24694 break;
24695 case WDI_CONFIG_BSS_REQ:
24696 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24697 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24698 break;
24699 case WDI_DEL_BSS_REQ:
24700 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24701 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24702 break;
24703 case WDI_POST_ASSOC_REQ:
24704 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24705 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24706 break;
24707 case WDI_DEL_STA_REQ:
24708 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24709 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24710 break;
24711 case WDI_DEL_STA_SELF_REQ:
24712 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24713 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24714 break;
24715
24716 case WDI_SET_BSS_KEY_REQ:
24717 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24718 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24719 break;
24720 case WDI_RMV_BSS_KEY_REQ:
24721 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24722 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24723 break;
24724 case WDI_SET_STA_KEY_REQ:
24725 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24726 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24727 break;
24728 case WDI_RMV_STA_KEY_REQ:
24729 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24730 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24731 break;
24732 case WDI_ADD_TS_REQ:
24733 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24734 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24735 break;
24736 case WDI_DEL_TS_REQ:
24737 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24738 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24739 break;
24740 case WDI_UPD_EDCA_PRMS_REQ:
24741 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24742 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24743 break;
24744 case WDI_ADD_BA_SESSION_REQ:
24745 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24746 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24747 break;
24748 case WDI_DEL_BA_REQ:
24749 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24750 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24751 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024752#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024753 case WDI_TSM_STATS_REQ:
24754 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24755 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24756 break;
24757#endif
24758 case WDI_CH_SWITCH_REQ:
24759 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24760 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24761 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024762 case WDI_CH_SWITCH_REQ_V1:
24763 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24764 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24765 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 case WDI_CONFIG_STA_REQ:
24767 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24768 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24769 break;
24770 case WDI_SET_LINK_ST_REQ:
24771 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24772 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24773 break;
24774 case WDI_GET_STATS_REQ:
24775 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24776 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24777 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024778#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024779 case WDI_GET_ROAM_RSSI_REQ:
24780 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24781 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24782 break;
24783#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 case WDI_UPDATE_CFG_REQ:
24785 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24786 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24787 break;
24788 case WDI_ADD_BA_REQ:
24789 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24790 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24791 break;
24792 case WDI_TRIGGER_BA_REQ:
24793 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24794 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24795 break;
24796 case WDI_UPD_BCON_PRMS_REQ:
24797 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24798 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24799 break;
24800 case WDI_SND_BCON_REQ:
24801 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24802 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24803 break;
24804 case WDI_ENTER_BMPS_REQ:
24805 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24806 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24807 break;
24808 case WDI_EXIT_BMPS_REQ:
24809 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24810 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24811 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024812 case WDI_ENTER_IMPS_REQ:
24813 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24814 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24815 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 case WDI_ENTER_UAPSD_REQ:
24817 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24818 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24819 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024820 case WDI_EXIT_UAPSD_REQ:
24821 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24822 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24823 break;
24824 case WDI_SET_UAPSD_PARAM_REQ:
24825 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24826 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24827 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024828 case WDI_UPDATE_UAPSD_PARAM_REQ:
24829 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24830 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24831 break;
24832 case WDI_CONFIGURE_RXP_FILTER_REQ:
24833 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24834 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24835 break;
24836 case WDI_SET_BEACON_FILTER_REQ:
24837 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24838 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24839 break;
24840 case WDI_REM_BEACON_FILTER_REQ:
24841 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24842 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024843 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024844 case WDI_SET_RSSI_THRESHOLDS_REQ:
24845 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24846 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24847 break;
24848 case WDI_HOST_OFFLOAD_REQ:
24849 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24850 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24851 break;
24852 case WDI_WOWL_ADD_BC_PTRN_REQ:
24853 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24854 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24855 break;
24856 case WDI_WOWL_DEL_BC_PTRN_REQ:
24857 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24858 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24859 break;
24860 case WDI_WOWL_ENTER_REQ:
24861 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24862 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24863 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024864 case WDI_WOWL_EXIT_REQ:
24865 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24866 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24867 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024868 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24869 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24870 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24871 break;
24872 case WDI_FLUSH_AC_REQ:
24873 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24874 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24875 break;
24876 case WDI_BTAMP_EVENT_REQ:
24877 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24878 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24879 break;
24880 case WDI_KEEP_ALIVE_REQ:
24881 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24882 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24883 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024884#if defined FEATURE_WLAN_SCAN_PNO
24885 case WDI_SET_PREF_NETWORK_REQ:
24886 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24887 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24888 break;
24889 case WDI_SET_RSSI_FILTER_REQ:
24890 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24891 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24892 break;
24893 case WDI_UPDATE_SCAN_PARAMS_REQ:
24894 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24895 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24896 break;
24897#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 case WDI_SET_TX_PER_TRACKING_REQ:
24899 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24900 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024901 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024902#if defined WLAN_FEATURE_PACKET_FILTERING
24903 case WDI_8023_MULTICAST_LIST_REQ:
24904 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24905 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24906 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024907 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24908 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24909 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24910 break;
24911 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24912 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24913 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24914 break;
24915 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24916 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24917 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24918 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024919#endif
24920 case WDI_SET_POWER_PARAMS_REQ:
24921 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24922 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24923 break;
24924#if defined WLAN_FEATURE_GTK_OFFLOAD
24925 case WDI_GTK_OFFLOAD_REQ:
24926 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24927 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24928 break;
24929 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24930 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24931 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24932 break;
24933#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024934
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 default:
24936 *ppfnReqCB = NULL;
24937 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024938 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024939 }
24940}/*WDI_ExtractRequestCBFromEvent*/
24941
24942
24943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024945 frame xtl is enabled for a particular STA.
24946
24947 WDI_PostAssocReq must have been called.
24948
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 @param uSTAIdx: STA index
24950
Jeff Johnson295189b2012-06-20 16:38:30 -070024951 @see WDI_PostAssocReq
24952 @return Result of the function call
24953*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024954wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024955WDI_IsHwFrameTxTranslationCapable
24956(
24957 wpt_uint8 uSTAIdx
24958)
24959{
Jeff Johnsone7245742012-09-05 17:12:55 -070024960 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024961 uma value*/
24962 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024963 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 ------------------------------------------------------------------------*/
24965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24966 {
24967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24968 "WDI API call before module is initialized - Fail request");
24969
Jeff Johnsone7245742012-09-05 17:12:55 -070024970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024971 }
24972
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024973#ifdef WLAN_SOFTAP_VSTA_FEATURE
24974 if (IS_VSTA_IDX(uSTAIdx))
24975 {
24976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24977 "STA %d is a Virtual STA, "
24978 "HW frame translation disabled", uSTAIdx);
24979 return eWLAN_PAL_FALSE;
24980 }
24981#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024982
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 return gWDICb.bFrameTransEnabled;
24984}/*WDI_IsHwFrameTxTranslationCapable*/
24985
Katya Nigam6201c3e2014-05-27 17:51:42 +053024986
24987/**
24988 @brief WDI_IsSelfSTA - check if staid is self sta index
24989
24990
24991 @param pWDICtx: pointer to the WLAN DAL context
24992 ucSTAIdx: station index
24993
24994 @return Result of the function call
24995*/
24996wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24997{
24998 wpt_uint8 ucSTAType;
24999
25000 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25001 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25002 {
25003 if( ucSTAType == WDI_STA_ENTRY_SELF )
25004 return eWLAN_PAL_TRUE;
25005 }
25006
25007 return eWLAN_PAL_FALSE;
25008}
25009
25010
25011
Jeff Johnson295189b2012-06-20 16:38:30 -070025012#ifdef FEATURE_WLAN_SCAN_PNO
25013/**
25014 @brief WDI_SetPreferredNetworkList
25015
Jeff Johnsone7245742012-09-05 17:12:55 -070025016 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025018
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 wdiPNOScanCb: callback for passing back the response
25020 of the Set PNO operation received from the
25021 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025022
Jeff Johnson295189b2012-06-20 16:38:30 -070025023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025024 callback
25025
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 @return Result of the function call
25027*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025029WDI_SetPreferredNetworkReq
25030(
25031 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25032 WDI_PNOScanCb wdiPNOScanCb,
25033 void* pUserData
25034)
25035{
25036 WDI_EventInfoType wdiEventData = {{0}};
25037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25038
25039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025041 ------------------------------------------------------------------------*/
25042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25043 {
25044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25045 "WDI API call before module is initialized - Fail request");
25046
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 }
25049
25050 /*------------------------------------------------------------------------
25051 Fill in Event data and post to the Main FSM
25052 ------------------------------------------------------------------------*/
25053 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 wdiEventData.pUserData = pUserData;
25058
25059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25060}
25061
25062
25063/**
25064 @brief WDI_SetRssiFilterReq
25065
Jeff Johnsone7245742012-09-05 17:12:55 -070025066 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025068
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 wdiRssiFilterCb: callback for passing back the response
25070 of the Set RSSI Filter operation received from the
25071 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025072
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 callback
25075
Jeff Johnson295189b2012-06-20 16:38:30 -070025076 @return Result of the function call
25077*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025079WDI_SetRssiFilterReq
25080(
25081 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25082 WDI_RssiFilterCb wdiRssiFilterCb,
25083 void* pUserData
25084)
25085{
25086 WDI_EventInfoType wdiEventData = {{0}};
25087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25088
25089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 ------------------------------------------------------------------------*/
25092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25093 {
25094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25095 "WDI API call before module is initialized - Fail request");
25096
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 }
25099
25100 /*------------------------------------------------------------------------
25101 Fill in Event data and post to the Main FSM
25102 ------------------------------------------------------------------------*/
25103 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 wdiEventData.pUserData = pUserData;
25108
25109 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25110}/*WDI_SetRssiFilterReq*/
25111
25112/**
25113 @brief WDI_UpdateScanParamsReq
25114
Jeff Johnsone7245742012-09-05 17:12:55 -070025115 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025117
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 wdiUpdateScanParamsCb: callback for passing back the response
25119 of the Set PNO operation received from the
25120 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025121
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025123 callback
25124
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 @return Result of the function call
25126*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025128WDI_UpdateScanParamsReq
25129(
25130 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25131 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25132 void* pUserData
25133)
25134{
25135 WDI_EventInfoType wdiEventData = {{0}};
25136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25137
25138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 ------------------------------------------------------------------------*/
25141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25142 {
25143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25144 "WDI API call before module is initialized - Fail request");
25145
Jeff Johnsone7245742012-09-05 17:12:55 -070025146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025147 }
25148
25149 /*------------------------------------------------------------------------
25150 Fill in Event data and post to the Main FSM
25151 ------------------------------------------------------------------------*/
25152 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025155 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 wdiEventData.pUserData = pUserData;
25157
25158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25159}
25160
25161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025162 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025164
25165 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025166 pwdiPNOScanReqParams: pointer to the info received
25167 from upper layers
25168 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025169 and its size
25170
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 @return Result of the function call
25172*/
25173
25174WDI_Status
25175WDI_PackPreferredNetworkList
25176(
25177 WDI_ControlBlockType* pWDICtx,
25178 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25179 wpt_uint8** ppSendBuffer,
25180 wpt_uint16* pSize
25181)
25182{
Jeff Johnsone7245742012-09-05 17:12:55 -070025183 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 wpt_uint16 usDataOffset = 0;
25185 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025186 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025187 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 /*-----------------------------------------------------------------------
25189 Get message buffer
25190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025192 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025194 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 {
25196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025197 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 pwdiPNOScanReqParams);
25199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 }
25202
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025203 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25204
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 /*-------------------------------------------------------------------------
25206 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25207 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025208 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025209 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025210 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25212
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025213 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025214 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025216 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25218
25219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025220 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25222 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25223 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25224
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025225 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025226 {
25227 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025228 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025229 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25230
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025231 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025232 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025233 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025234
25235 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025236 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025238
25239 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025240 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025242
Jeff Johnsone7245742012-09-05 17:12:55 -070025243 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025245 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025246 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25247 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25248 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25249 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025250
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025251 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025252 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025253 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025254
25255 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025256 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25258
25259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025260 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025261 pPrefNetwListParams->aNetworks[i].ssId.length,
25262 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 }
25264
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025265 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025266 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25268 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25269 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25270
25271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025272 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025273 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25275 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25276
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025277 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025279 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025280 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025281 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025282 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25283 }
25284
25285 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025286 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25288 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25289 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025290 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025291
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025292 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025293 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025294 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025295
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025296 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025297 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25298 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25299 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025301
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025302 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025304 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025305
25306 /*Set the output values*/
25307 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025308 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025309
25310 return WDI_STATUS_SUCCESS;
25311}/*WDI_PackPreferredNetworkList*/
25312
25313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025316
25317 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 pwdiPNOScanReqParams: pointer to the info received
25319 from upper layers
25320 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 and its size
25322
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 @return Result of the function call
25324*/
25325
25326WDI_Status
25327WDI_PackPreferredNetworkListNew
25328(
25329 WDI_ControlBlockType* pWDICtx,
25330 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25331 wpt_uint8** ppSendBuffer,
25332 wpt_uint16* pSize
25333)
25334{
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 wpt_uint16 usDataOffset = 0;
25337 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025338 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025339 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025340
25341 /*-----------------------------------------------------------------------
25342 Get message buffer
25343 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025345 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025346 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025347 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 {
25349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025350 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 pwdiPNOScanReqParams);
25352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025354 }
25355
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025356 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25357
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 /*-------------------------------------------------------------------------
25359 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25360 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025361 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025363 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25365
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025366 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025367 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025368 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025369 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25371
25372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25375 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25376 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25377
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025378 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 {
25380 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025381 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025382 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25383
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025384 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025385 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025386 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025387
25388 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025389 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025390 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025391
25392 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025393 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025394 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025395
25396 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025397 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025399
Jeff Johnsone7245742012-09-05 17:12:55 -070025400 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025402 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25404
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025405 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025407 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025408
25409 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025410 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25412
25413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025415 pPrefNetwListParams->aNetworks[i].ssId.length,
25416 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 }
25418
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025419 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025420 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25422 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25423 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25424
25425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025427 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025428 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25429 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25430
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025431 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025432 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025433 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025435 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25437 }
25438
25439 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025440 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25442 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25443 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025444 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025445
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025446 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025447 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025448 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025449
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025450 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25452 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25453 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025454 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025455
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025456 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025457 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025458 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025459
Jeff Johnson295189b2012-06-20 16:38:30 -070025460
25461 /*Set the output values*/
25462 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025463 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025464
25465 return WDI_STATUS_SUCCESS;
25466}/*WDI_PackPreferredNetworkListNew*/
25467
25468/**
25469 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025470
25471 @param pWDICtx: pointer to the WLAN DAL context
25472 pEventData: pointer to the event information structure
25473
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 @return Result of the function call
25475*/
25476WDI_Status
25477WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025478(
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 WDI_ControlBlockType* pWDICtx,
25480 WDI_EventInfoType* pEventData
25481)
25482{
25483 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25484 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025485 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025486 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025487 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025488
25489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 -------------------------------------------------------------------------*/
25492 if (( NULL == pEventData ) ||
25493 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25494 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25495 {
25496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025500 }
25501
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025502 /*----------------------------------------------------------------------
25503 Avoid Enable PNO during any active session or an ongoing session
25504 ----------------------------------------------------------------------*/
25505 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25506 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25507 {
25508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25509 "%s:(Active/Ongoing Session) - Fail request", __func__);
25510
25511 return WDI_STATUS_E_FAILURE;
25512 }
25513
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 /*-------------------------------------------------------------------------
25515 Pack the PNO request structure based on version
25516 -------------------------------------------------------------------------*/
25517 if ( pWDICtx->wdiPNOVersion > 0 )
25518 {
25519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025520 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 pWDICtx->wdiPNOVersion);
25522
25523 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25524 &pSendBuffer, &usSendSize);
25525 }
25526 else
25527 {
25528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025529 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 pWDICtx->wdiPNOVersion);
25531
25532 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25533 &pSendBuffer, &usSendSize);
25534 }
25535
25536 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25537 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25538 {
25539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025540 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 }
25544
25545 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025547
25548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25552 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025553}
25554
25555/**
25556 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025557
25558 @param pWDICtx: pointer to the WLAN DAL context
25559 pEventData: pointer to the event information structure
25560
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 @see
25562 @return Result of the function call
25563*/
25564WDI_Status
25565WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025566(
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 WDI_ControlBlockType* pWDICtx,
25568 WDI_EventInfoType* pEventData
25569)
25570{
25571 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25572 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 wpt_uint16 usDataOffset = 0;
25575 wpt_uint16 usSendSize = 0;
25576 wpt_uint8 ucRssiThreshold;
25577
25578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025580 -------------------------------------------------------------------------*/
25581 if (( NULL == pEventData ) ||
25582 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25583 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25584 {
25585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 }
25590
25591 /*-----------------------------------------------------------------------
25592 Get message buffer
25593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 sizeof(ucRssiThreshold),
25596 &pSendBuffer, &usDataOffset, &usSendSize))||
25597 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25598 {
25599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025600 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 }
25605
25606 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25607
Jeff Johnsone7245742012-09-05 17:12:55 -070025608 wpalMemoryCopy( pSendBuffer+usDataOffset,
25609 &ucRssiThreshold,
25610 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025611
25612 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025614
25615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25619 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025620}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025621#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25622/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025623 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025624
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025625 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025626 by the Device Interface
25627
25628 wdiRoamOffloadScancb: callback for passing back the response
25629 of the Roam Candidate Lookup Req operation received from the
25630 device
25631
25632 pUserData: user data will be passed back with the
25633 callback
25634 @return Result of the function call
25635*/
25636WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025637WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025638(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025639 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025640 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25641 void* pUserData
25642)
25643{
25644 WDI_EventInfoType wdiEventData = {{0}};
25645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25646
25647 /*------------------------------------------------------------------------
25648 Sanity Check
25649 ------------------------------------------------------------------------*/
25650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25651 {
25652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25653 "WDI API call before module is initialized - Fail request");
25654
25655 return WDI_STATUS_E_NOT_ALLOWED;
25656 }
25657
25658 /*------------------------------------------------------------------------
25659 Fill in Event data and post to the Main FSM
25660 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025661 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25662 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25663 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025664 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25665 wdiEventData.pUserData = pUserData;
25666
25667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25668}
25669
25670void
25671WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25672{
25673 switch (wdiEdType)
25674 {
25675 case WDI_ED_NONE:
25676 *EdType = eED_NONE;
25677 break;
25678 case WDI_ED_WEP40:
25679 case WDI_ED_WEP104:
25680 *EdType = eED_WEP;
25681 break;
25682 case WDI_ED_TKIP:
25683 *EdType = eED_TKIP;
25684 break;
25685 case WDI_ED_CCMP:
25686#ifdef WLAN_FEATURE_11W
25687 case WDI_ED_AES_128_CMAC:
25688#endif
25689 *EdType = eED_CCMP;
25690 break;
25691#ifdef FEATURE_WLAN_WAPI
25692 case WDI_ED_WPI:
25693 *EdType = eED_WPI;
25694 break;
25695#endif
25696 case WDI_ED_ANY:
25697 *EdType = eED_ANY;
25698 break;
25699
25700 default:
25701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25702 "%s: Unknown Encryption Type", __func__);
25703 break;
25704 }
25705}
25706
25707/**
25708 @brief Helper function to pack Start Roam Candidate Lookup
25709 Request parameters
25710
25711 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025712 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025713 from upper layers
25714 ppSendBuffer, pSize - out pointers of the packed buffer
25715 and its size
25716
25717 @return Result of the function call
25718*/
25719
25720WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025721WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025722(
25723 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025724 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025725 wpt_uint8** ppSendBuffer,
25726 wpt_uint16* pSize
25727)
25728{
25729 wpt_uint8* pSendBuffer = NULL;
25730 wpt_uint16 usDataOffset = 0;
25731 wpt_uint16 usSendSize = 0;
25732 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25733 wpt_uint8 i;
25734 /*-----------------------------------------------------------------------
25735 Get message buffer
25736 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025738 sizeof(tRoamCandidateListParams),
25739 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025740 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025741 {
25742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025743 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025744 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025745 WDI_ASSERT(0);
25746 return WDI_STATUS_E_FAILURE;
25747 }
25748 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025749 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025750 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025751 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025752 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025753 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025754 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025755 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025756 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025757 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025758 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025759
25760 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025761 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025762 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025763 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025764 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25765 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025766 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25767 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25768 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25769 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25770 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025771 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025772 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025773 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025774 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25775 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25776 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25777 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25778 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25779 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25780 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025781 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025782 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025783 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25784 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25785 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025786
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25788 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25789 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25790 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25791 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25792 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025793 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025794 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25795 pRoamCandidateListParams->RoamScanOffloadEnabled,
25796 pRoamCandidateListParams->Command,
25797 pRoamCandidateListParams->StartScanReason,
25798 pRoamCandidateListParams->NeighborScanTimerPeriod,
25799 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25800 pRoamCandidateListParams->NeighborScanChannelMinTime,
25801 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25802 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25803 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25804 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25805 pRoamCandidateListParams->ConnectedNetwork.authentication,
25806 pRoamCandidateListParams->ConnectedNetwork.encryption,
25807 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25808 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25809 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025810 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025811 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025812 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025813 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025814 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25815 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025816 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025817 pRoamCandidateListParams->us24GProbeSize);
25818 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025819 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025820 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025821 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025822 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25823 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025824 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025825 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025826 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25827 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25828 pRoamCandidateListParams->nProbes =
25829 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25830 pRoamCandidateListParams->HomeAwayTime =
25831 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025833 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25834 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025836 }
25837
25838
25839 /*Set the output values*/
25840 *ppSendBuffer = pSendBuffer;
25841 *pSize = usSendSize;
25842 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025843}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025844
25845/**
25846 @brief Process Start Roam Candidate Lookup Request function
25847
25848 @param pWDICtx: pointer to the WLAN DAL context
25849 pEventData: pointer to the event information structure
25850
25851 @return Result of the function call
25852*/
25853WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025854WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025855(
25856 WDI_ControlBlockType* pWDICtx,
25857 WDI_EventInfoType* pEventData
25858)
25859{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025860 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025861 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25862 wpt_uint8* pSendBuffer = NULL;
25863 wpt_uint16 usSendSize = 0;
25864 WDI_Status wdiStatus;
25865 /*-------------------------------------------------------------------------
25866 Sanity check
25867 -------------------------------------------------------------------------*/
25868 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025869 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025870 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25871 {
25872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25873 "%s: Invalid parameters", __func__);
25874 WDI_ASSERT(0);
25875 return WDI_STATUS_E_FAILURE;
25876 }
25877
25878 /*-------------------------------------------------------------------------
25879 Pack the Start Roam Candidate Lookup request structure based on version
25880 -------------------------------------------------------------------------*/
25881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25882 "%s: Packing Roam Candidate Lookup request ", __func__);
25883
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025884 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025885 &pSendBuffer, &usSendSize);
25886
25887 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25888 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25889 {
25890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25891 "%s: failed to pack request parameters", __func__);
25892 WDI_ASSERT(0);
25893 return wdiStatus;
25894 }
25895
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025896 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25897 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025898
25899 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025900 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025901 -------------------------------------------------------------------------*/
25902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025903 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025904}
25905
25906/**
25907 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25908 response is being received over the bus from HAL)
25909
25910 @param pWDICtx: pointer to the WLAN DAL context
25911 pEventData: pointer to the event information structure
25912
25913 @see
25914 @return Result of the function call
25915*/
25916WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025917WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025918(
25919 WDI_ControlBlockType* pWDICtx,
25920 WDI_EventInfoType* pEventData
25921)
25922{
25923 WDI_Status wdiStatus;
25924 eHalStatus halStatus;
25925 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25926
25927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25928
25929 /*-------------------------------------------------------------------------
25930 Sanity check
25931 -------------------------------------------------------------------------*/
25932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25933 ( NULL == pEventData->pEventData ))
25934 {
25935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25936 "%s: Invalid parameters", __func__);
25937 WDI_ASSERT(0);
25938 return WDI_STATUS_E_FAILURE;
25939 }
25940
25941 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25942
25943 /*-------------------------------------------------------------------------
25944 Extract response and send it to UMAC
25945 -------------------------------------------------------------------------*/
25946 halStatus = *((eHalStatus*)pEventData->pEventData);
25947 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25948
25949 /*Notify UMAC*/
25950 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25951
25952 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025953}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025954#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025955
25956/**
25957 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025958
25959 @param pWDICtx: pointer to the WLAN DAL context
25960 pEventData: pointer to the event information structure
25961
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 @see
25963 @return Result of the function call
25964*/
25965WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025966WDI_PackUpdateScanParamsReq
25967(
25968 WDI_ControlBlockType* pWDICtx,
25969 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25970 wpt_uint8** ppSendBuffer,
25971 wpt_uint16* pSize
25972)
25973{
25974 wpt_uint8* pSendBuffer = NULL;
25975 wpt_uint16 usDataOffset = 0;
25976 wpt_uint16 usSendSize = 0;
25977 tUpdateScanParams updateScanParams = {0};
25978
25979
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025981 "Begin WDI Update Scan Parameters Old Style Params");
25982 /*-----------------------------------------------------------------------
25983 Get message buffer
25984 -----------------------------------------------------------------------*/
25985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25986 sizeof(updateScanParams),
25987 &pSendBuffer, &usDataOffset, &usSendSize))||
25988 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25989 {
25990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025991 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025992 pwdiUpdateScanParams);
25993 WDI_ASSERT(0);
25994 return WDI_STATUS_E_FAILURE;
25995 }
25996
25997 //
25998 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25999 //
26000
26001 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26002 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26003
26004 updateScanParams.ucChannelCount =
26005 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26006 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26007 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26008 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26009
26010 wpalMemoryCopy( updateScanParams.aChannels,
26011 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26012 updateScanParams.ucChannelCount);
26013
26014
26015 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26016 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26017 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26018 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26019 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26020
26021 wpalMemoryCopy( pSendBuffer+usDataOffset,
26022 &updateScanParams,
26023 sizeof(updateScanParams));
26024
26025 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26026 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26027
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026029 "End Update Scan Parameters Old Style");
26030
26031 /*Set the output values*/
26032 *ppSendBuffer = pSendBuffer;
26033 *pSize = usSendSize;
26034
26035 return WDI_STATUS_SUCCESS;
26036}
26037
26038/**
26039 @brief Process Update Scan Params function
26040
26041 @param pWDICtx: pointer to the WLAN DAL context
26042 pEventData: pointer to the event information structure
26043
26044 @see
26045 @return Result of the function call
26046*/
26047WDI_Status
26048WDI_PackUpdateScanParamsReqEx
26049(
26050 WDI_ControlBlockType* pWDICtx,
26051 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26052 wpt_uint8** ppSendBuffer,
26053 wpt_uint16* pSize
26054)
26055{
26056 wpt_uint8* pSendBuffer = NULL;
26057 wpt_uint16 usDataOffset = 0;
26058 wpt_uint16 usSendSize = 0;
26059 tUpdateScanParamsEx updateScanParams = {0};
26060
26061
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026062 /*-----------------------------------------------------------------------
26063 Get message buffer
26064 -----------------------------------------------------------------------*/
26065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26066 sizeof(updateScanParams),
26067 &pSendBuffer, &usDataOffset, &usSendSize))||
26068 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26069 {
26070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026071 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026072 pwdiUpdateScanParams);
26073 WDI_ASSERT(0);
26074 return WDI_STATUS_E_FAILURE;
26075 }
26076
26077 //
26078 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26079 //
26080
26081 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26082 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26083
26084 updateScanParams.ucChannelCount =
26085 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26086 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26087 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26088 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26089
26090 wpalMemoryCopy( updateScanParams.aChannels,
26091 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26092 updateScanParams.ucChannelCount);
26093
26094
26095 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26096 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26097 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26098 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26099 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26100
26101 wpalMemoryCopy( pSendBuffer+usDataOffset,
26102 &updateScanParams,
26103 sizeof(updateScanParams));
26104
26105 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26106 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26107
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026108 /*Set the output values*/
26109 *ppSendBuffer = pSendBuffer;
26110 *pSize = usSendSize;
26111
26112 return WDI_STATUS_SUCCESS;
26113}
26114
26115/**
26116 @brief Process Update Scan Params function
26117
26118 @param pWDICtx: pointer to the WLAN DAL context
26119 pEventData: pointer to the event information structure
26120
26121 @see
26122 @return Result of the function call
26123*/
26124WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026125WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026126(
Jeff Johnson295189b2012-06-20 16:38:30 -070026127 WDI_ControlBlockType* pWDICtx,
26128 WDI_EventInfoType* pEventData
26129)
26130{
26131 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26132 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026133 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026134 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026135 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026136
26137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 -------------------------------------------------------------------------*/
26140 if (( NULL == pEventData ) ||
26141 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26142 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26143 {
26144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 }
26149
26150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26151 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026152
26153 //
26154 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26155 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026156 if ( pWDICtx->wlanVersion.revision < 1 )
26157 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026158 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026159 &pSendBuffer, &usSendSize);
26160 }
26161 else
26162 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026163 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26164 &pSendBuffer, &usSendSize);
26165 }
26166
26167 if(WDI_STATUS_SUCCESS != wdiStatus)
26168 {
26169 //memory allocation failed
26170 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026171 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026172
Jeff Johnson295189b2012-06-20 16:38:30 -070026173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026177 wdiUpdateScanParamsCb, pEventData->pUserData,
26178 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026179}
26180
26181/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026182 @brief Process Update Channel Params function
26183
26184 @param pWDICtx: pointer to the WLAN DAL context
26185 pEventData: pointer to the event information structure
26186
26187 @see
26188 @return Result of the function call
26189*/
26190WDI_Status
26191WDI_ProcessUpdateChannelParamsReq
26192(
26193 WDI_ControlBlockType* pWDICtx,
26194 WDI_EventInfoType* pEventData
26195)
26196{
26197 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26198 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26199 wpt_uint8* pSendBuffer = NULL;
26200 wpt_uint16 usDataOffset = 0;
26201 wpt_uint16 usSendSize = 0;
26202 tUpdateChannelReqType *updateChannelParams;
26203 wpt_uint32 usUpdateChanParamSize;
26204 wpt_uint8 num_channels = 0;
26205
26206 /*-------------------------------------------------------------------------
26207 Sanity check
26208 -------------------------------------------------------------------------*/
26209 if (( NULL == pEventData ) ||
26210 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26211 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26212 {
26213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26214 "%s: Invalid parameters", __func__);
26215 WDI_ASSERT(0);
26216 return WDI_STATUS_E_FAILURE;
26217 }
26218 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26219 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26220 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26221 sizeof(tUpdateChannelParam)));
26222
26223 /*-----------------------------------------------------------------------
26224 Get message buffer
26225 -----------------------------------------------------------------------*/
26226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26227 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26228 &pSendBuffer, &usDataOffset, &usSendSize))||
26229 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26230 {
26231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26232 "Unable to get send buffer in Update Channel Params req %p",
26233 pwdiUpdateChanListParams);
26234 WDI_ASSERT(0);
26235 return WDI_STATUS_E_FAILURE;
26236 }
26237 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26238
26239 updateChannelParams->numChan = num_channels;
26240 wpalMemoryCopy(&updateChannelParams->chanParam,
26241 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26242 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26243
26244 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26245 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26246
26247 /*-------------------------------------------------------------------------
26248 Send Update channel request to fw
26249 -------------------------------------------------------------------------*/
26250 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26251 wdiUpdateChanParamsCb, pEventData->pUserData,
26252 WDI_UPDATE_CHAN_RESP);
26253}
26254
26255/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026256 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026257
26258 @param pWDICtx: pointer to the WLAN DAL context
26259 pEventData: pointer to the event information structure
26260
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 @see
26262 @return Result of the function call
26263*/
26264WDI_Status
26265WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026266(
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 WDI_ControlBlockType* pWDICtx,
26268 WDI_EventInfoType* pEventData
26269)
26270{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026271 WDI_LowLevelIndType wdiInd;
26272 tpPrefNetwFoundParams pNetwFoundParams;
26273 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026274
26275
26276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 -------------------------------------------------------------------------*/
26279 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26280 ( NULL == pEventData->pEventData ))
26281 {
26282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026283 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026285 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 }
26287
26288 /*-------------------------------------------------------------------------
26289 Extract indication and send it to UMAC
26290 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026291 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26292
26293 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26294 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26295 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26296
26297 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26298 {
26299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26300 "%s: fail to allocate memory", __func__);
26301 return WDI_STATUS_MEM_FAILURE;
26302 }
26303
26304 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26305 (pNetwFoundParams->ssId.length < 32 )?
26306 pNetwFoundParams->ssId.length : 32;
26307 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26308 pNetwFoundParams->ssId.ssId,
26309 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26310 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26311 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26312 pNetwFoundParams->frameLength;
26313 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26314 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26315 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026316
26317 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026318 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026319
Jeff Johnson295189b2012-06-20 16:38:30 -070026320 // DEBUG
26321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026322 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026323 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026324 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026326 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26328
ltimariub77f24b2013-01-24 18:54:33 -080026329 if ( pWDICtx->wdiLowLevelIndCB )
26330 {
26331 /*Notify UMAC*/
26332 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26333 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026334
26335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026336}
26337
26338/**
26339 @brief Process PNO Rsp function (called when a
26340 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026341
26342 @param pWDICtx: pointer to the WLAN DAL context
26343 pEventData: pointer to the event information structure
26344
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 @see
26346 @return Result of the function call
26347*/
26348WDI_Status
26349WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026350(
Jeff Johnson295189b2012-06-20 16:38:30 -070026351 WDI_ControlBlockType* pWDICtx,
26352 WDI_EventInfoType* pEventData
26353)
26354{
26355 WDI_Status wdiStatus;
26356 eHalStatus halStatus;
26357 WDI_PNOScanCb wdiPNOScanCb = NULL;
26358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26359
26360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 -------------------------------------------------------------------------*/
26363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26364 ( NULL == pEventData->pEventData ))
26365 {
26366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026370 }
26371
26372
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374
26375 /*-------------------------------------------------------------------------
26376 Extract response and send it to UMAC
26377 -------------------------------------------------------------------------*/
26378 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026380
26381 /*Notify UMAC*/
26382 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26383
Jeff Johnsone7245742012-09-05 17:12:55 -070026384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026385}/*WDI_ProcessSetPreferredNetworkRsp*/
26386
26387/**
26388 @brief Process RSSI Filter Rsp function (called when a
26389 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026390
26391 @param pWDICtx: pointer to the WLAN DAL context
26392 pEventData: pointer to the event information structure
26393
Jeff Johnson295189b2012-06-20 16:38:30 -070026394 @see
26395 @return Result of the function call
26396*/
26397WDI_Status
26398WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026399(
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 WDI_ControlBlockType* pWDICtx,
26401 WDI_EventInfoType* pEventData
26402)
26403{
26404 WDI_Status wdiStatus;
26405 eHalStatus halStatus;
26406 WDI_RssiFilterCb wdiRssiFilterCb;
26407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26408
26409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 -------------------------------------------------------------------------*/
26412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26413 ( NULL == pEventData->pEventData ))
26414 {
26415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 }
26420
Jeff Johnsone7245742012-09-05 17:12:55 -070026421 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026422
26423 /*-------------------------------------------------------------------------
26424 Extract response and send it to UMAC
26425 -------------------------------------------------------------------------*/
26426 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026427 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026428
26429 /*Notify UMAC*/
26430 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26431
Jeff Johnsone7245742012-09-05 17:12:55 -070026432 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026433}/*WDI_ProcessSetRssiFilterRsp*/
26434
26435/**
26436 @brief Process Update Scan Params Rsp function (called when a
26437 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026438
26439 @param pWDICtx: pointer to the WLAN DAL context
26440 pEventData: pointer to the event information structure
26441
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 @see
26443 @return Result of the function call
26444*/
26445WDI_Status
26446WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026447(
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 WDI_ControlBlockType* pWDICtx,
26449 WDI_EventInfoType* pEventData
26450)
26451{
26452 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026453 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26457
26458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 -------------------------------------------------------------------------*/
26461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26462 ( NULL == pEventData->pEventData ))
26463 {
26464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026468 }
26469
26470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026471 "%s: Process UPD scan params ptr : %p",
26472 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026473
Jeff Johnsone7245742012-09-05 17:12:55 -070026474 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026475
26476 /*-------------------------------------------------------------------------
26477 Extract response and send it to UMAC
26478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026479 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26480 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 sizeof(halUpdScanParams.status));
26482
26483 uStatus = halUpdScanParams.status;
26484
26485 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026487
26488 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026489 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026490
Jeff Johnsone7245742012-09-05 17:12:55 -070026491 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026492
26493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026494 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 halUpdScanParams.status);
26496
26497 /*Notify UMAC*/
26498 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26499
Jeff Johnsone7245742012-09-05 17:12:55 -070026500 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026501}
26502#endif // FEATURE_WLAN_SCAN_PNO
26503
26504#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026505WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026506WDI_8023MulticastListReq
26507(
26508 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26509 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26510 void* pUserData
26511)
26512{
26513 WDI_EventInfoType wdiEventData;
26514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26515
26516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026517 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026518
26519 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026521 ------------------------------------------------------------------------*/
26522 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26523 {
26524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26525 "WDI API call before module is initialized - Fail request");
26526
Jeff Johnsone7245742012-09-05 17:12:55 -070026527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 }
26529
26530 /*------------------------------------------------------------------------
26531 Fill in Event data and post to the Main FSM
26532 ------------------------------------------------------------------------*/
26533 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026534 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 wdiEventData.pUserData = pUserData;
26538
26539 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26540}
26541
Jeff Johnsone7245742012-09-05 17:12:55 -070026542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026543WDI_ReceiveFilterSetFilterReq
26544(
26545 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26546 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26547 void* pUserData
26548)
26549{
26550 WDI_EventInfoType wdiEventData;
26551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26552
26553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026554 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026555
26556 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026557 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 ------------------------------------------------------------------------*/
26559 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26560 {
26561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26562 "WDI API call before module is initialized - Fail request");
26563
Jeff Johnsone7245742012-09-05 17:12:55 -070026564 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026565 }
26566
26567 /*------------------------------------------------------------------------
26568 Fill in Event data and post to the Main FSM
26569 ------------------------------------------------------------------------*/
26570 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026571 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26572 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026573 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26574 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026575 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026576 wdiEventData.pUserData = pUserData;
26577
26578
26579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26580}
26581
Jeff Johnsone7245742012-09-05 17:12:55 -070026582WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026583WDI_FilterMatchCountReq
26584(
26585 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26586 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26587 void* pUserData
26588)
26589{
26590 WDI_EventInfoType wdiEventData;
26591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26592
26593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026594 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026595
26596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026598 ------------------------------------------------------------------------*/
26599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26600 {
26601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26602 "WDI API call before module is initialized - Fail request");
26603
Jeff Johnsone7245742012-09-05 17:12:55 -070026604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026605 }
26606
26607 /*------------------------------------------------------------------------
26608 Fill in Event data and post to the Main FSM
26609 ------------------------------------------------------------------------*/
26610 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026611 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026613 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026614 wdiEventData.pUserData = pUserData;
26615
26616
26617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26618}
26619
Jeff Johnsone7245742012-09-05 17:12:55 -070026620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026621WDI_ReceiveFilterClearFilterReq
26622(
26623 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26624 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26625 void* pUserData
26626)
26627{
26628 WDI_EventInfoType wdiEventData;
26629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26630
26631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026632 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026633
26634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026635 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026636 ------------------------------------------------------------------------*/
26637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26638 {
26639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26640 "WDI API call before module is initialized - Fail request");
26641
Jeff Johnsone7245742012-09-05 17:12:55 -070026642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 }
26644
26645 /*------------------------------------------------------------------------
26646 Fill in Event data and post to the Main FSM
26647 ------------------------------------------------------------------------*/
26648 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026649 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026650 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026651 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026652 wdiEventData.pUserData = pUserData;
26653
26654
26655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26656}
26657
26658/**
26659 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026660
26661 @param pWDICtx: pointer to the WLAN DAL context
26662 pEventData: pointer to the event information structure
26663
Jeff Johnson295189b2012-06-20 16:38:30 -070026664 @see
26665 @return Result of the function call
26666*/
26667WDI_Status
26668WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026669(
Jeff Johnson295189b2012-06-20 16:38:30 -070026670 WDI_ControlBlockType* pWDICtx,
26671 WDI_EventInfoType* pEventData
26672)
26673{
26674 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26675 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026676 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026677 wpt_uint16 usDataOffset = 0;
26678 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026679 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026680 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026681 wpt_uint8 ucCurrentBSSSesIdx = 0;
26682 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026683
26684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026685 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026686
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026687 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26688 if( NULL == pRcvFltMcAddrListType )
26689 {
26690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26691 "Failed to alloc in WDI_Process8023MulticastListReq");
26692 return WDI_STATUS_E_FAILURE;
26693 }
26694
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 -------------------------------------------------------------------------*/
26698 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026699 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026700 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026701 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026702 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26703 {
26704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026705 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026706 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026708 return WDI_STATUS_E_FAILURE;
26709 }
26710
26711 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26712 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26713 &pBSSSes);
26714 if ( NULL == pBSSSes )
26715 {
26716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026717 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026718 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026720 }
26721
26722 /*-----------------------------------------------------------------------
26723 Get message buffer
26724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26726 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026727 sizeof(tHalRcvFltMcAddrListType),
26728 &pSendBuffer, &usDataOffset, &usSendSize))||
26729 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26730 {
26731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26732 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026733 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026734 pEventData, pwdiFltPktSetMcListReqParamsType,
26735 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026736 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026739 }
26740
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026741 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026742 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026743 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026744 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026745 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026746 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26747 sizeof(tSirMacAddr));
26748 }
26749
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026750 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026751 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026752 pRcvFltMcAddrListType,
26753 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026754
26755 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026756 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026757
26758
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026759 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026761 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026764 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026765 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026766}
26767
26768/**
26769 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026770
26771 @param pWDICtx: pointer to the WLAN DAL context
26772 pEventData: pointer to the event information structure
26773
Jeff Johnson295189b2012-06-20 16:38:30 -070026774 @see
26775 @return Result of the function call
26776*/
26777WDI_Status
26778WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026779(
Jeff Johnson295189b2012-06-20 16:38:30 -070026780 WDI_ControlBlockType* pWDICtx,
26781 WDI_EventInfoType* pEventData
26782)
26783{
26784 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26785 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026787 wpt_uint16 usDataOffset = 0;
26788 wpt_uint16 usSendSize = 0;
26789 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026790 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026791 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026792 wpt_uint8 ucCurrentBSSSesIdx = 0;
26793 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026794 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26795 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796
26797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026798 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026799
26800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026802 -------------------------------------------------------------------------*/
26803 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026804 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26808 {
26809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026812 return WDI_STATUS_E_FAILURE;
26813 }
26814
26815 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26816 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26817 &pBSSSes);
26818 if ( NULL == pBSSSes )
26819 {
26820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026821 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 }
26824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026825 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26826 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026827
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026828 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26829 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26830 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26831
26832 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26833 usSessRcvPktFilterCfgSize);
26834
26835 if(NULL == pSessRcvPktFilterCfg)
26836 {
26837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26838 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026839 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026840 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026841 WDI_ASSERT(0);
26842 return WDI_STATUS_E_FAILURE;
26843 }
26844
26845 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26846
26847 /*-----------------------------------------------------------------------
26848 Get message buffer
26849 -----------------------------------------------------------------------*/
26850
26851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26852 usSessRcvPktFilterCfgSize,
26853 &pSendBuffer, &usDataOffset, &usSendSize))||
26854 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26855 {
26856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26857 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026858 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026859 pEventData, pwdiSetRcvPktFilterReqInfo,
26860 wdiReceiveFilterSetFilterCb);
26861 WDI_ASSERT(0);
26862 wpalMemoryFree(pSessRcvPktFilterCfg);
26863 return WDI_STATUS_E_FAILURE;
26864 }
26865
26866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026867 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026868 usSendSize,pSessRcvPktFilterCfg);
26869
26870 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26871 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26872 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26873 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26874
26875 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26876
26877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26878 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26879 pSessRcvPktFilterCfg->filterType);
26880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26881 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26882 pSessRcvPktFilterCfg->coleasceTime);
26883
26884 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26885 {
26886 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26887 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26888 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26889 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26890 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26891 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26892 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26893 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26894
26895 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26896 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26897 8);
26898 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26899 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26900 8);
26901
26902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026903 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026904 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26905 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26906
26907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026908 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026909 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26910 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26911
26912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026913 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026914 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26915 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26916 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26917 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26918 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26919 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26920
26921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026922 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026923 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26924 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26925 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26926 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26927 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26928 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26929 }
26930
26931 wpalMemoryCopy( pSendBuffer+usDataOffset,
26932 pSessRcvPktFilterCfg,
26933 usSessRcvPktFilterCfgSize);
26934
26935
26936 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26937 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26938
26939 wpalMemoryFree(pSessRcvPktFilterCfg);
26940
26941 }
26942 /*If SLM_SESSIONIZATION is not supported then do this */
26943 else
26944 {
26945 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26946 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26947 * sizeof(tHalRcvPktFilterParams));
26948
26949 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026950 usRcvPktFilterCfgSize);
26951
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026952 if(NULL == pRcvPktFilterCfg)
26953 {
26954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26955 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026956 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026957 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026958 WDI_ASSERT(0);
26959 return WDI_STATUS_E_FAILURE;
26960 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026961
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026962 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026964 /*-----------------------------------------------------------------------
26965 Get message buffer
26966 -----------------------------------------------------------------------*/
26967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026968 usRcvPktFilterCfgSize,
26969 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026970 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26971 {
26972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026973 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026974 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 pEventData, pwdiSetRcvPktFilterReqInfo,
26976 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026977 WDI_ASSERT(0);
26978 wpalMemoryFree(pRcvPktFilterCfg);
26979 return WDI_STATUS_E_FAILURE;
26980 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026981
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026983 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026984 usSendSize,usRcvPktFilterCfgSize);
26985
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026986 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26987 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26988 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26989 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026990
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026992 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026993 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026995 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026996 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026997
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026998 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26999 {
27000 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27001 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27002 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27003 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27004 pRcvPktFilterCfg->paramsData[i].dataOffset =
27005 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27006 pRcvPktFilterCfg->paramsData[i].dataLength =
27007 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027009 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027010 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27011 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027012 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27014 8);
27015
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027017 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027018 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027019 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27020
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027022 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027023 pRcvPktFilterCfg->paramsData[i].dataOffset,
27024 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027025
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027027 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027028 pRcvPktFilterCfg->paramsData[i].compareData[0],
27029 pRcvPktFilterCfg->paramsData[i].compareData[1],
27030 pRcvPktFilterCfg->paramsData[i].compareData[2],
27031 pRcvPktFilterCfg->paramsData[i].compareData[3],
27032 pRcvPktFilterCfg->paramsData[i].compareData[4],
27033 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027034
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027036 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027037 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27038 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27039 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27040 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27041 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27042 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27043 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027044
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027045 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027046 pRcvPktFilterCfg,
27047 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027048
27049
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027050 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27051 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027052
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027054 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027055 wpalMemoryFree(pRcvPktFilterCfg);
27056 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027058 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027063}
27064
27065/**
27066 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027067
27068 @param pWDICtx: pointer to the WLAN DAL context
27069 pEventData: pointer to the event information structure
27070
Jeff Johnson295189b2012-06-20 16:38:30 -070027071 @see
27072 @return Result of the function call
27073*/
27074WDI_Status
27075WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027076(
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 WDI_ControlBlockType* pWDICtx,
27078 WDI_EventInfoType* pEventData
27079)
27080{
27081 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27082 NULL;
27083 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27084 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027086 wpt_uint16 usDataOffset = 0;
27087 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027088 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27089 wpt_uint8 ucCurrentBSSSesIdx = 0;
27090 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027091
27092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027093 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027094
27095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 -------------------------------------------------------------------------*/
27098 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027099 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27103 {
27104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 }
27109
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027110 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27111 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27112 &pBSSSes);
27113 if ( NULL == pBSSSes )
27114 {
27115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027116 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027117 return WDI_STATUS_E_FAILURE;
27118 }
27119
Jeff Johnson295189b2012-06-20 16:38:30 -070027120 /*-----------------------------------------------------------------------
27121 Get message buffer
27122 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27124 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027125 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027126 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027127 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 {
27129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27130 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027131 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027132 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27133 wdiFilterMatchCountCb);
27134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027136 }
27137
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027138 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27139 wpalMemoryCopy( pSendBuffer+usDataOffset,
27140 &rcvFltPktMatchCntReqParam,
27141 sizeof(rcvFltPktMatchCntReqParam));
27142
Jeff Johnson295189b2012-06-20 16:38:30 -070027143 //
27144 // Don't need to fill send buffer other than header
27145 //
27146 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027148
27149
27150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027151 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27154 wdiFilterMatchCountCb,
27155 pEventData->pUserData,
27156 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027157}
27158
27159/**
27160 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027161
27162 @param pWDICtx: pointer to the WLAN DAL context
27163 pEventData: pointer to the event information structure
27164
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 @see
27166 @return Result of the function call
27167*/
27168WDI_Status
27169WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027170(
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 WDI_ControlBlockType* pWDICtx,
27172 WDI_EventInfoType* pEventData
27173)
Jeff Johnsone7245742012-09-05 17:12:55 -070027174{
Jeff Johnson295189b2012-06-20 16:38:30 -070027175 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27176 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 wpt_uint16 usDataOffset = 0;
27179 wpt_uint16 usSendSize = 0;
27180 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027181 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027183
27184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027185 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027186
27187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027189 -------------------------------------------------------------------------*/
27190 if (( NULL == pEventData ) ||
27191 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27192 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027194 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27195 {
27196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027199 return WDI_STATUS_E_FAILURE;
27200 }
27201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027202 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027203 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27204 &pBSSSes);
27205 if ( NULL == pBSSSes )
27206 {
27207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027208 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027210 }
27211
27212 /*-----------------------------------------------------------------------
27213 Get message buffer
27214 -----------------------------------------------------------------------*/
27215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027216 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027217 sizeof(tHalRcvFltPktClearParam),
27218 &pSendBuffer, &usDataOffset, &usSendSize))||
27219 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27220 {
27221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27222 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027223 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 pEventData, pwdiRcvFltPktClearReqParamsType,
27225 wdiRcvFltPktClearFilterCb);
27226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 }
27229
27230
27231 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027232 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027234 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027235
Jeff Johnsone7245742012-09-05 17:12:55 -070027236 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27237 wpalMemoryCopy( pSendBuffer+usDataOffset,
27238 &rcvFltPktClearParam,
27239 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027240
27241 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027242 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027243
27244
27245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027246 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027250 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027251}
27252
27253/**
27254 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027255
27256 @param pWDICtx: pointer to the WLAN DAL context
27257 pEventData: pointer to the event information structure
27258
Jeff Johnson295189b2012-06-20 16:38:30 -070027259 @see
27260 @return Result of the function call
27261*/
27262WDI_Status
27263WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027264(
Jeff Johnson295189b2012-06-20 16:38:30 -070027265 WDI_ControlBlockType* pWDICtx,
27266 WDI_EventInfoType* pEventData
27267)
27268{
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 eHalStatus halStatus;
27270 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027271 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27272 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27274
27275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027276 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027277
27278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 -------------------------------------------------------------------------*/
27281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27282 ( NULL == pEventData->pEventData ))
27283 {
27284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 }
27289
Jeff Johnsone7245742012-09-05 17:12:55 -070027290 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027291
27292 /*-------------------------------------------------------------------------
27293 Extract response and send it to UMAC
27294 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027295 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27296 {
27297 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27298 pEventData->pEventData,
27299 sizeof(halRcvFltPktSetMcListRsp));
27300
27301 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27302 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27303 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27304 halRcvFltPktSetMcListRsp.bssIdx;
27305 }
27306 else
27307 {
27308 halStatus = *((eHalStatus*)pEventData->pEventData);
27309 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27310 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027311
27312 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027313 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027314
Jeff Johnsone7245742012-09-05 17:12:55 -070027315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027316}
27317
27318/**
27319 @brief Process Set Rsp function (called when a
27320 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027321
27322 @param pWDICtx: pointer to the WLAN DAL context
27323 pEventData: pointer to the event information structure
27324
Jeff Johnson295189b2012-06-20 16:38:30 -070027325 @see
27326 @return Result of the function call
27327*/
27328WDI_Status
27329WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027330(
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 WDI_ControlBlockType* pWDICtx,
27332 WDI_EventInfoType* pEventData
27333)
27334{
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 eHalStatus halStatus;
27336 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027337 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27338 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27340
27341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027342 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027343
27344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 -------------------------------------------------------------------------*/
27347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27348 ( NULL == pEventData->pEventData ))
27349 {
27350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 }
27355
27356 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027357 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027358
27359 /*-------------------------------------------------------------------------
27360 Extract response and send it to UMAC
27361 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027362 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27363 {
27364 wpalMemoryCopy( &halSetPktFilterRspParams,
27365 pEventData->pEventData,
27366 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027367
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027368 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27369 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27370 }
27371 else
27372 {
27373 halStatus = *((eHalStatus*)pEventData->pEventData);
27374 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27375 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027377 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027378
Jeff Johnsone7245742012-09-05 17:12:55 -070027379 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027380}
27381
27382/**
27383 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027384
27385 @param pWDICtx: pointer to the WLAN DAL context
27386 pEventData: pointer to the event information structure
27387
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 @see
27389 @return Result of the function call
27390*/
27391WDI_Status
27392WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027393(
Jeff Johnson295189b2012-06-20 16:38:30 -070027394 WDI_ControlBlockType* pWDICtx,
27395 WDI_EventInfoType* pEventData
27396)
27397{
Jeff Johnson295189b2012-06-20 16:38:30 -070027398 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027399 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027400 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27401 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027402
27403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27404
27405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027406 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027407
27408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 -------------------------------------------------------------------------*/
27411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27412 ( NULL == pEventData->pEventData ))
27413 {
27414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 }
27419
Jeff Johnsone7245742012-09-05 17:12:55 -070027420 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027421
27422 /*-------------------------------------------------------------------------
27423 Extract response and send it to UMAC
27424 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027425 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27426 {
27427 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27428 pEventData->pEventData,
27429 sizeof(halRcvFltrPktMatachRsp));
27430
27431 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27432 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27433 }
27434 else
27435 {
27436 halStatus = *((eHalStatus*)pEventData->pEventData);
27437 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27438 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027439
27440 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027441 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027442
Jeff Johnsone7245742012-09-05 17:12:55 -070027443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027444}
27445
27446/**
27447 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027448
27449 @param pWDICtx: pointer to the WLAN DAL context
27450 pEventData: pointer to the event information structure
27451
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 @see
27453 @return Result of the function call
27454*/
27455WDI_Status
27456WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027457(
Jeff Johnson295189b2012-06-20 16:38:30 -070027458 WDI_ControlBlockType* pWDICtx,
27459 WDI_EventInfoType* pEventData
27460)
27461{
Jeff Johnson295189b2012-06-20 16:38:30 -070027462 eHalStatus halStatus;
27463 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027464 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27465 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27467
27468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027469 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027470
27471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 -------------------------------------------------------------------------*/
27474 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27475 ( NULL == pEventData->pEventData ))
27476 {
27477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 }
27482
27483 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027484 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027485
27486 /*-------------------------------------------------------------------------
27487 Extract response and send it to UMAC
27488 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027489 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27490 {
27491 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27492 pEventData->pEventData,
27493 sizeof(halRcvFltPktClearRspMsg));
27494
27495 wdiRcvFltPktClearRspParamsType.wdiStatus =
27496 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27497 wdiRcvFltPktClearRspParamsType.bssIdx =
27498 halRcvFltPktClearRspMsg.bssIdx;
27499 }
27500 else
27501 {
27502 halStatus = *((eHalStatus*)pEventData->pEventData);
27503 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027505
27506 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027507 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027508
Jeff Johnsone7245742012-09-05 17:12:55 -070027509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027510}
27511#endif // WLAN_FEATURE_PACKET_FILTERING
27512
27513/**
27514 @brief Process Shutdown Rsp function
27515 There is no shutdown response comming from HAL
27516 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027517
Jeff Johnson295189b2012-06-20 16:38:30 -070027518 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027519 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027520
27521 @see
27522 @return Result of the function call
27523*/
27524WDI_Status
27525WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027526(
Jeff Johnson295189b2012-06-20 16:38:30 -070027527 WDI_ControlBlockType* pWDICtx,
27528 WDI_EventInfoType* pEventData
27529)
27530{
27531 /*There is no shutdown response comming from HAL - function just kept for
27532 simmetry */
27533 WDI_ASSERT(0);
27534 return WDI_STATUS_SUCCESS;
27535}/*WDI_ProcessShutdownRsp*/
27536
27537/**
27538 @brief WDI_SetPowerParamsReq
27539
Jeff Johnsone7245742012-09-05 17:12:55 -070027540 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027541 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027542
Jeff Johnson295189b2012-06-20 16:38:30 -070027543 wdiPowerParamsCb: callback for passing back the response
27544 of the Set Power Params operation received from the
27545 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027546
Jeff Johnson295189b2012-06-20 16:38:30 -070027547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027548 callback
27549
Jeff Johnson295189b2012-06-20 16:38:30 -070027550 @return Result of the function call
27551*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027552WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027553WDI_SetPowerParamsReq
27554(
27555 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27556 WDI_SetPowerParamsCb wdiPowerParamsCb,
27557 void* pUserData
27558)
27559{
27560 WDI_EventInfoType wdiEventData;
27561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27562
27563 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027565 ------------------------------------------------------------------------*/
27566 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27567 {
27568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27569 "WDI API call before module is initialized - Fail request");
27570
Jeff Johnsone7245742012-09-05 17:12:55 -070027571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027572 }
27573
27574 /*------------------------------------------------------------------------
27575 Fill in Event data and post to the Main FSM
27576 ------------------------------------------------------------------------*/
27577 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027578 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027579 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027580 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 wdiEventData.pUserData = pUserData;
27582
27583 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27584}/*WDI_SetPowerParamsReq*/
27585
27586/**
27587 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027588
27589 @param pWDICtx: pointer to the WLAN DAL context
27590 pEventData: pointer to the event information structure
27591
Jeff Johnson295189b2012-06-20 16:38:30 -070027592 @see
27593 @return Result of the function call
27594*/
27595WDI_Status
27596WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027597(
Jeff Johnson295189b2012-06-20 16:38:30 -070027598 WDI_ControlBlockType* pWDICtx,
27599 WDI_EventInfoType* pEventData
27600)
27601{
27602 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27603 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 wpt_uint16 usDataOffset = 0;
27606 wpt_uint16 usSendSize = 0;
27607 tSetPowerParamsType powerParams;
27608
27609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027611 -------------------------------------------------------------------------*/
27612 if (( NULL == pEventData ) ||
27613 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27614 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27615 {
27616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027620 }
27621
27622 /*-----------------------------------------------------------------------
27623 Get message buffer
27624 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027625 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 sizeof(powerParams),
27627 &pSendBuffer, &usDataOffset, &usSendSize))||
27628 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27629 {
27630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027631 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027635 }
27636
27637 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027638 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27640
27641 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027642 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027643 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27644
27645 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027646 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027647 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27648
27649 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027650 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27652
27653 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027654 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27656
27657 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027658 powerParams.uBETInterval =
27659 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027660
Yue Mac24062f2013-05-13 17:01:29 -070027661 /* MAX LI for modulated DTIM */
27662 powerParams.uMaxLIModulatedDTIM =
27663 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027664
27665 wpalMemoryCopy( pSendBuffer+usDataOffset,
27666 &powerParams,
27667 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027668
27669 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027670 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027671
27672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027673 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27676 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027677}
27678
27679/**
27680 @brief Process Power Params Rsp function (called when a
27681 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027682
27683 @param pWDICtx: pointer to the WLAN DAL context
27684 pEventData: pointer to the event information structure
27685
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 @see
27687 @return Result of the function call
27688*/
27689WDI_Status
27690WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027691(
Jeff Johnson295189b2012-06-20 16:38:30 -070027692 WDI_ControlBlockType* pWDICtx,
27693 WDI_EventInfoType* pEventData
27694)
27695{
27696 WDI_Status wdiStatus;
27697 eHalStatus halStatus;
27698 WDI_SetPowerParamsCb wdiPowerParamsCb;
27699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27700
27701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027703 -------------------------------------------------------------------------*/
27704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27705 ( NULL == pEventData->pEventData ))
27706 {
27707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 }
27712
Jeff Johnsone7245742012-09-05 17:12:55 -070027713 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027714
27715 /*-------------------------------------------------------------------------
27716 Extract response and send it to UMAC
27717 -------------------------------------------------------------------------*/
27718 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027719 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027720
27721 /*Notify UMAC*/
27722 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27723
Jeff Johnsone7245742012-09-05 17:12:55 -070027724 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027725}/*WDI_ProcessSetPowerParamsRsp*/
27726
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027727/**
27728 @brief WDI_dhcpStartInd
27729 Host will send an event to the FW when DHCP is initiated
27730
27731 @param
27732 WDI_DHCPInd: DHCP Indication
27733 @see
27734 @return Result of the function call
27735*/
27736WDI_Status
27737WDI_dhcpStartInd
27738(
27739 WDI_DHCPInd *wdiDHCPInd
27740)
27741{
27742 WDI_EventInfoType wdiEventData;
27743
27744 /*------------------------------------------------------------------------
27745 Sanity Check
27746 ------------------------------------------------------------------------*/
27747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27748 {
27749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27750 "WDI API call before module is initialized - Fail request");
27751
27752 return WDI_STATUS_E_NOT_ALLOWED;
27753 }
27754
27755 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27756 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027757 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027758 wdiEventData.pCBfnc = NULL;
27759 wdiEventData.pUserData = NULL;
27760
27761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27762}
27763
27764
27765/**
27766 @brief WDI_dhcpStopInd
27767 Host will send an event to the FW when DHCP is completed
27768
27769 @param
27770 WDI_DHCPInd: DHCP Indication
27771 @see
27772 @return Result of the function call
27773*/
27774WDI_Status
27775WDI_dhcpStopInd
27776(
27777 WDI_DHCPInd *wdiDHCPInd
27778)
27779{
27780 WDI_EventInfoType wdiEventData;
27781
27782 /*------------------------------------------------------------------------
27783 Sanity Check
27784 ------------------------------------------------------------------------*/
27785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27786 {
27787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27788 "WDI API call before module is initialized - Fail request");
27789
27790 return WDI_STATUS_E_NOT_ALLOWED;
27791 }
27792
27793 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27794 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027795 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027796 wdiEventData.pCBfnc = NULL;
27797 wdiEventData.pUserData = NULL;
27798
27799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27800}
27801
27802
27803/**
27804 @brief Process DHCP Start Indication message and post it to HAL
27805
27806 @param pWDICtx: pointer to the WLAN DAL context
27807 pEventData: pointer to the event information structure
27808
27809 @see
27810 @return Result of the function call
27811*/
27812WDI_Status
27813WDI_ProcessDHCPStartInd
27814(
27815 WDI_ControlBlockType* pWDICtx,
27816 WDI_EventInfoType* pEventData
27817)
27818{
27819 wpt_uint8* pSendBuffer = NULL;
27820 wpt_uint16 usDataOffset = 0;
27821 wpt_uint16 usSendSize = 0;
27822 wpt_uint16 usLen = 0;
27823 WDI_DHCPInd* pwdiDHCPInd = NULL;
27824 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027825 WDI_Status wdiStatus;
27826
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027827
27828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27829
27830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27831 "%s", __func__);
27832
27833 /*-------------------------------------------------------------------------
27834 Sanity check
27835 -------------------------------------------------------------------------*/
27836 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27837 {
27838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27839 "%s: Invalid parameters", __func__);
27840 WDI_ASSERT(0);
27841 return WDI_STATUS_E_FAILURE;
27842 }
27843 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27844 /*-----------------------------------------------------------------------
27845 Get message buffer
27846 -----------------------------------------------------------------------*/
27847
27848 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27849 WDI_DHCP_START_IND,
27850 sizeof(tDHCPInfo),
27851 &pSendBuffer, &usDataOffset, &usSendSize))||
27852 ( usSendSize < (usDataOffset + usLen )))
27853 {
27854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27855 "Unable to get send buffer in DHCP Start req %p ",
27856 pEventData);
27857 WDI_ASSERT(0);
27858 return WDI_STATUS_E_FAILURE;
27859 }
27860
Sandeep Puligillaee789512014-02-13 19:14:52 +053027861 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027862 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27863 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27864 WDI_MAC_ADDR_LEN);
27865
27866 pWDICtx->pReqStatusUserData = NULL;
27867 pWDICtx->pfncRspCB = NULL;
27868
27869 /*-------------------------------------------------------------------------
27870 Send DHCP Start Indication to HAL
27871 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027872 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27873 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027874}/*WDI_ProcessDHCPStartInd*/
27875
27876/**
27877 @brief Process DHCP Stop indication message and post it to HAL
27878
27879 @param pWDICtx: pointer to the WLAN DAL context
27880 pEventData: pointer to the event information structure
27881
27882 @see
27883 @return Result of the function call
27884*/
27885WDI_Status
27886WDI_ProcessDHCPStopInd
27887(
27888 WDI_ControlBlockType* pWDICtx,
27889 WDI_EventInfoType* pEventData
27890)
27891{
27892 wpt_uint8* pSendBuffer = NULL;
27893 wpt_uint16 usDataOffset = 0;
27894 wpt_uint16 usSendSize = 0;
27895 wpt_uint16 usLen = 0;
27896 WDI_DHCPInd* pwdiDHCPInd = NULL;
27897 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027898 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027899
27900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27901
27902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27903 "%s", __func__);
27904
27905 /*-------------------------------------------------------------------------
27906 Sanity check
27907 -------------------------------------------------------------------------*/
27908
27909 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27910 {
27911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27912 "%s: Invalid parameters", __func__);
27913 WDI_ASSERT(0);
27914 return WDI_STATUS_E_FAILURE;
27915 }
27916 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27917 /*-----------------------------------------------------------------------
27918 Get message buffer
27919 -----------------------------------------------------------------------*/
27920
27921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27922 WDI_DHCP_STOP_IND,
27923 sizeof(tDHCPInfo),
27924 &pSendBuffer, &usDataOffset, &usSendSize))||
27925 ( usSendSize < (usDataOffset + usLen )))
27926 {
27927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27928 "Unable to get send buffer in DHCP Start req %p ",
27929 pEventData);
27930 WDI_ASSERT(0);
27931 return WDI_STATUS_E_FAILURE;
27932 }
27933
Sandeep Puligillaee789512014-02-13 19:14:52 +053027934 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027935 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27936 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27937 WDI_MAC_ADDR_LEN);
27938
27939 pWDICtx->pReqStatusUserData = NULL;
27940 pWDICtx->pfncRspCB = NULL;
27941 /*-------------------------------------------------------------------------
27942 Send DHCP Stop indication to HAL
27943 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027944 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27945 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027946
27947}/*WDI_ProcessDHCPStopInd*/
27948
27949
Jeff Johnson295189b2012-06-20 16:38:30 -070027950#ifdef WLAN_FEATURE_GTK_OFFLOAD
27951/**
27952 @brief WDI_GTKOffloadReq will be called when the upper MAC
27953 wants to set GTK Rekey Counter while in power save. Upon
27954 the call of this API the WLAN DAL will pack and send a
27955 HAL GTK offload request message to the lower RIVA
27956 sub-system if DAL is in state STARTED.
27957
27958 In state BUSY this request will be queued. Request won't
27959 be allowed in any other state.
27960
27961 WDI_PostAssocReq must have been called.
27962
27963 @param pwdiGtkOffloadParams: the GTK offload as specified
27964 by the Device Interface
27965
27966 wdiGtkOffloadCb: callback for passing back the response
27967 of the GTK offload operation received from the device
27968
27969 pUserData: user data will be passed back with the
27970 callback
27971
27972 @see WDI_PostAssocReq
27973 @return Result of the function call
27974*/
27975WDI_Status
27976WDI_GTKOffloadReq
27977(
27978 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27979 WDI_GtkOffloadCb wdiGtkOffloadCb,
27980 void* pUserData
27981)
27982{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027983 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27985
27986 /*------------------------------------------------------------------------
27987 Sanity Check
27988 ------------------------------------------------------------------------*/
27989 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27990 {
27991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27992 "WDI API call before module is initialized - Fail request");
27993
27994 return WDI_STATUS_E_NOT_ALLOWED;
27995 }
27996
27997 /*------------------------------------------------------------------------
27998 Fill in Event data and post to the Main FSM
27999 ------------------------------------------------------------------------*/
28000 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28001 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028002 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28004 wdiEventData.pUserData = pUserData;
28005
28006 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28007}
28008
28009
28010/**
28011 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28012 MAC wants to get GTK Rekey Counter while in power save.
28013 Upon the call of this API the WLAN DAL will pack and
28014 send a HAL GTK offload request message to the lower RIVA
28015 sub-system if DAL is in state STARTED.
28016
28017 In state BUSY this request will be queued. Request won't
28018 be allowed in any other state.
28019
28020 WDI_PostAssocReq must have been called.
28021
28022 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28023 Information Message as specified by the
28024 Device Interface
28025
28026 wdiGtkOffloadGetInfoCb: callback for passing back the
28027 response of the GTK offload operation received from the
28028 device
28029
28030 pUserData: user data will be passed back with the
28031 callback
28032
28033 @see WDI_PostAssocReq
28034 @return Result of the function call
28035*/
28036WDI_Status
28037WDI_GTKOffloadGetInfoReq
28038(
28039 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28040 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28041 void* pUserData
28042)
28043{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028044 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28046
28047 /*------------------------------------------------------------------------
28048 Sanity Check
28049 ------------------------------------------------------------------------*/
28050 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28051 {
28052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28053 "WDI API call before module is initialized - Fail request");
28054
28055 return WDI_STATUS_E_NOT_ALLOWED;
28056 }
28057
28058 /*------------------------------------------------------------------------
28059 Fill in Event data and post to the Main FSM
28060 ------------------------------------------------------------------------*/
28061 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28062 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28063 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28064 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28065 wdiEventData.pUserData = pUserData;
28066
28067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28068}
28069
28070
28071/**
28072 @brief Process set GTK Offload Request function
28073
28074 @param pWDICtx: pointer to the WLAN DAL context
28075 pEventData: pointer to the event information structure
28076
28077 @see
28078 @return Result of the function call
28079*/
28080WDI_Status
28081WDI_ProcessGTKOffloadReq
28082(
28083 WDI_ControlBlockType* pWDICtx,
28084 WDI_EventInfoType* pEventData
28085)
28086{
28087 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28088 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28089 wpt_uint8* pSendBuffer = NULL;
28090 wpt_uint16 usDataOffset = 0;
28091 wpt_uint16 usSendSize = 0;
28092 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028093 wpt_uint8 ucCurrentSessionId = 0;
28094 WDI_BSSSessionType* pBSSSes = NULL;
28095
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28097
28098 /*-------------------------------------------------------------------------
28099 Sanity check
28100 -------------------------------------------------------------------------*/
28101 if (( NULL == pEventData ) ||
28102 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28103 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28104 {
28105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 }
28110
28111 /*-----------------------------------------------------------------------
28112 Get message buffer
28113 -----------------------------------------------------------------------*/
28114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28115 sizeof(gtkOffloadReqParams),
28116 &pSendBuffer, &usDataOffset, &usSendSize))||
28117 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28118 {
28119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028120 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028123 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028124 }
28125
28126 //
28127 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28128 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028129 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28130 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28131 &pBSSSes);
28132 if ( NULL == pBSSSes )
28133 {
28134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028135 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028136 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028137 }
28138
28139 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28140
Jeff Johnson295189b2012-06-20 16:38:30 -070028141 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28142 // Copy KCK
28143 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28144 // Copy KEK
28145 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28146 // Copy KeyReplayCounter
28147 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28148
28149 wpalMemoryCopy( pSendBuffer+usDataOffset,
28150 &gtkOffloadReqParams,
28151 sizeof(gtkOffloadReqParams));
28152
28153 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28154 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28155
28156 /*-------------------------------------------------------------------------
28157 Send Get STA Request to HAL
28158 -------------------------------------------------------------------------*/
28159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28160 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028161
28162fail:
28163 // Release the message buffer so we don't leak
28164 wpalMemoryFree(pSendBuffer);
28165
28166failRequest:
28167 //WDA should have failure check to avoid the memory leak
28168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028169}
28170
28171
28172/**
28173 @brief Process GTK Offload Get Information Request function
28174
28175 @param pWDICtx: pointer to the WLAN DAL context
28176 pEventData: pointer to the event information structure
28177
28178 @see
28179 @return Result of the function call
28180*/
28181WDI_Status
28182WDI_ProcessGTKOffloadGetInfoReq
28183(
28184 WDI_ControlBlockType* pWDICtx,
28185 WDI_EventInfoType* pEventData
28186)
28187{
28188 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28189 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28190 wpt_uint8* pSendBuffer = NULL;
28191 wpt_uint16 usDataOffset = 0;
28192 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028193 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28194 wpt_uint8 ucCurrentSessionId = 0;
28195 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028196
28197 /*-------------------------------------------------------------------------
28198 Sanity check
28199 -------------------------------------------------------------------------*/
28200 if (( NULL == pEventData ) ||
28201 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28202 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28203 {
28204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028207 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028208 }
28209
28210 /*-----------------------------------------------------------------------
28211 Get message buffer
28212 -----------------------------------------------------------------------*/
28213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028214 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028215 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028216 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 {
28218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028219 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028220 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28221 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028222 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028223 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028224 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28225 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28226 &pBSSSes);
28227 if ( NULL == pBSSSes )
28228 {
28229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028230 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028231 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028232 }
28233 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028234
28235 //
28236 // Don't need to fill send buffer other than header
28237 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028238 wpalMemoryCopy( pSendBuffer+usDataOffset,
28239 &halGtkOffloadGetInfoReqParams,
28240 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028241
28242 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28243 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28244
28245 /*-------------------------------------------------------------------------
28246 Send Get STA Request to HAL
28247 -------------------------------------------------------------------------*/
28248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28249 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028250fail:
28251 // Release the message buffer so we don't leak
28252 wpalMemoryFree(pSendBuffer);
28253
28254failRequest:
28255 //WDA should have failure check to avoid the memory leak
28256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028257}
28258
28259/**
28260 @brief Process host offload Rsp function (called when a
28261 response is being received over the bus from HAL)
28262
28263 @param pWDICtx: pointer to the WLAN DAL context
28264 pEventData: pointer to the event information structure
28265
28266 @see
28267 @return Result of the function call
28268*/
28269WDI_Status
28270WDI_ProcessGtkOffloadRsp
28271(
28272 WDI_ControlBlockType* pWDICtx,
28273 WDI_EventInfoType* pEventData
28274)
28275{
Jeff Johnson295189b2012-06-20 16:38:30 -070028276 eHalStatus halStatus;
28277 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028278 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28279 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028280
28281 /*-------------------------------------------------------------------------
28282 Sanity check
28283 -------------------------------------------------------------------------*/
28284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28285 ( NULL == pEventData->pEventData))
28286 {
28287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028289 WDI_ASSERT(0);
28290 return WDI_STATUS_E_FAILURE;
28291 }
28292
Wilson Yang00256342013-10-10 23:13:38 -070028293 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28294
Jeff Johnson295189b2012-06-20 16:38:30 -070028295 /*-------------------------------------------------------------------------
28296 Extract response and send it to UMAC
28297 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028298 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28299 {
28300 wpalMemoryCopy( &halGtkOffloadRspParams,
28301 pEventData->pEventData,
28302 sizeof(halGtkOffloadRspParams));
28303
28304 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028305 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028306 wdiGtkOffloadRsparams.bssIdx =
28307 halGtkOffloadRspParams.bssIdx;
28308 }
28309 else
28310 {
28311 halStatus = *((eHalStatus*)pEventData->pEventData);
28312 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28313 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028314
28315 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028316 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028317
28318 return WDI_STATUS_SUCCESS;
28319}
28320
28321/**
28322 @brief Process GTK Offload Get Information Response function
28323
28324 @param pWDICtx: pointer to the WLAN DAL context
28325 pEventData: pointer to the event information structure
28326
28327 @see
28328 @return Result of the function call
28329*/
28330WDI_Status
28331WDI_ProcessGTKOffloadGetInfoRsp
28332(
28333 WDI_ControlBlockType* pWDICtx,
28334 WDI_EventInfoType* pEventData
28335)
28336{
Jeff Johnson295189b2012-06-20 16:38:30 -070028337 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028338 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028339 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28340 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028341 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028342
Jeff Johnson295189b2012-06-20 16:38:30 -070028343
28344 /*-------------------------------------------------------------------------
28345 Sanity check
28346 -------------------------------------------------------------------------*/
28347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28348 ( NULL == pEventData->pEventData ))
28349 {
28350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028352 WDI_ASSERT(0);
28353 return WDI_STATUS_E_FAILURE;
28354 }
28355
Wilson Yang00256342013-10-10 23:13:38 -070028356 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28357
28358 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028359 Extract response and send it to UMAC
28360 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028361 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28362 {
28363 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28364 pEventData->pEventData,
28365 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028366
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028367 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028368 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028369 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28370 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28371 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28372 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28373 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28374 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28375 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28376 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028377
28378 wpalMutexAcquire(&pWDICtx->wptMutex);
28379 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28380 &pBSSSes);
28381
28382 if ( NULL == pBSSSes )
28383 {
28384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28385 "Association sequence for this BSS does not exist or "
28386 "association no longer in progress - mysterious HAL response");
28387 wpalMutexRelease(&pWDICtx->wptMutex);
28388 return WDI_STATUS_E_NOT_ALLOWED;
28389 }
28390
28391 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28392 sizeof (wpt_macAddr));
28393 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028394 }
28395 else
28396 {
28397 halStatus = *((eHalStatus*)pEventData->pEventData);
28398 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28399 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028400 /*Notify UMAC*/
28401 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28402 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028403 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028404
28405 return WDI_STATUS_SUCCESS;
28406}
28407#endif // WLAN_FEATURE_GTK_OFFLOAD
28408
28409#ifdef WLAN_WAKEUP_EVENTS
28410WDI_Status
28411WDI_ProcessWakeReasonInd
28412(
28413 WDI_ControlBlockType* pWDICtx,
28414 WDI_EventInfoType* pEventData
28415)
28416{
28417 WDI_LowLevelIndType *pWdiInd;
28418 tpWakeReasonParams pWakeReasonParams;
28419 wpt_uint32 allocSize = 0;
28420
28421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028422 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028423
28424 /*-------------------------------------------------------------------------
28425 Sanity check
28426 -------------------------------------------------------------------------*/
28427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28428 ( NULL == pEventData->pEventData ))
28429 {
28430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028432 WDI_ASSERT( 0 );
28433 return WDI_STATUS_E_FAILURE;
28434 }
28435
28436 /*-------------------------------------------------------------------------
28437 Extract indication and send it to UMAC
28438 -------------------------------------------------------------------------*/
28439 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28440
28441 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28442
28443 //Allocate memory for WDI_WakeReasonIndType structure
28444 pWdiInd = wpalMemoryAllocate(allocSize) ;
28445
28446 if(NULL == pWdiInd)
28447 {
28448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028449 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028450 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028451 WDI_ASSERT(0);
28452 return WDI_STATUS_E_FAILURE;
28453 }
28454
28455 wpalMemoryZero(pWdiInd, allocSize);
28456
28457 /* Fill in the indication parameters*/
28458 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28459 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28460 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28461 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28462 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28463 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28464 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28465 &(pWakeReasonParams->aDataStart[0]),
28466 pWakeReasonParams->ulStoredDataLen);
28467
ltimariub77f24b2013-01-24 18:54:33 -080028468
28469 if ( pWDICtx->wdiLowLevelIndCB )
28470 {
28471 /*Notify UMAC*/
28472 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028474
28475 //Free memory allocated for WDI_WakeReasonIndType structure
28476 wpalMemoryFree(pWdiInd);
28477
28478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028479 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028480
28481 return WDI_STATUS_SUCCESS;
28482}
28483#endif // WLAN_WAKEUP_EVENTS
28484
28485void WDI_GetWcnssCompiledApiVersion
28486(
28487 WDI_WlanVersionType *pWcnssApiVersion
28488)
28489{
28490 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28491 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28492 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28493 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28494}
28495
28496/**
28497 @brief Process Set TM Level Rsp function (called when a
28498 response is being received over the bus from HAL)
28499
28500 @param pWDICtx: pointer to the WLAN DAL context
28501 pEventData: pointer to the event information structure
28502
28503 @see
28504 @return Result of the function call
28505*/
28506WDI_Status
28507WDI_ProcessSetTmLevelRsp
28508(
28509 WDI_ControlBlockType* pWDICtx,
28510 WDI_EventInfoType* pEventData
28511)
28512{
28513 WDI_Status wdiStatus;
28514 eHalStatus halStatus;
28515 WDI_SetTmLevelCb wdiSetTmLevelCb;
28516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28517
28518 /*-------------------------------------------------------------------------
28519 Sanity check
28520 -------------------------------------------------------------------------*/
28521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28522 ( NULL == pEventData->pEventData ))
28523 {
28524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028526 WDI_ASSERT(0);
28527 return WDI_STATUS_E_FAILURE;
28528 }
28529
28530 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28531
28532 /*-------------------------------------------------------------------------
28533 Extract response and send it to UMAC
28534 -------------------------------------------------------------------------*/
28535 halStatus = *((eHalStatus*)pEventData->pEventData);
28536 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28537
28538 /*Notify UMAC*/
28539 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28540
28541 return WDI_STATUS_SUCCESS;
28542}/*WDI_ProcessSetTmLevelRsp*/
28543
28544/**
28545 @brief Process Set Thermal Mitigation level Changed request
28546
28547 @param pWDICtx: pointer to the WLAN DAL context
28548 pEventData: pointer to the event information structure
28549
28550 @see
28551 @return Result of the function call
28552*/
28553WDI_Status
28554WDI_ProcessSetTmLevelReq
28555(
28556 WDI_ControlBlockType* pWDICtx,
28557 WDI_EventInfoType* pEventData
28558)
28559{
28560 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28561 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28562 wpt_uint8* pSendBuffer = NULL;
28563 wpt_uint16 usDataOffset = 0;
28564 wpt_uint16 usSendSize = 0;
28565 tSetThermalMitgationType halTmMsg;
28566
28567 /*-------------------------------------------------------------------------
28568 Sanity check
28569 -------------------------------------------------------------------------*/
28570 if (( NULL == pEventData ) ||
28571 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28572 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28573 {
28574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028576 WDI_ASSERT(0);
28577 return WDI_STATUS_E_FAILURE;
28578 }
28579
28580 /*-----------------------------------------------------------------------
28581 Get message buffer
28582 -----------------------------------------------------------------------*/
28583 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28584 sizeof(halTmMsg),
28585 &pSendBuffer, &usDataOffset, &usSendSize))||
28586 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28587 {
28588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028589 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028590 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28591 WDI_ASSERT(0);
28592 return WDI_STATUS_E_FAILURE;
28593 }
28594
28595 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28596 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28597
28598 wpalMemoryCopy( pSendBuffer+usDataOffset,
28599 &halTmMsg,
28600 sizeof(halTmMsg));
28601
28602 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28603 pWDICtx->pfncRspCB = NULL;
28604 /*-------------------------------------------------------------------------
28605 Send Get STA Request to HAL
28606 -------------------------------------------------------------------------*/
28607 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28608 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28609}
28610
28611/* Fill the value from the global features enabled array to the global capabilities
28612 * bitmap struct
28613 */
28614static void
28615FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28616{
28617 wpt_int8 i;
28618 for (i=0; i<len; i++)
28619 {
28620 setFeatCaps(fCaps, enabledFeat[i]);
28621 }
28622}
28623
28624/**
28625 @brief WDI_featureCapsExchangeReq
28626 Post feature capability bitmap exchange event.
28627 Host will send its own capability to FW in this req and
28628 expect FW to send its capability back as a bitmap in Response
28629
28630 @param
28631
28632 wdiFeatureCapsExchangeCb: callback called on getting the response.
28633 It is kept to mantain similarity between WDI reqs and if needed, can
28634 be used in future. Currently, It is set to NULL
28635
28636 pUserData: user data will be passed back with the
28637 callback
28638
28639 @see
28640 @return Result of the function call
28641*/
28642WDI_Status
28643WDI_featureCapsExchangeReq
28644(
28645 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28646 void* pUserData
28647)
28648{
28649 WDI_EventInfoType wdiEventData;
28650 wpt_int32 fCapsStructSize;
28651
28652 /*------------------------------------------------------------------------
28653 Sanity Check
28654 ------------------------------------------------------------------------*/
28655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28656 {
28657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28658 "WDI API call before module is initialized - Fail request");
28659
28660 return WDI_STATUS_E_NOT_ALLOWED;
28661 }
28662
28663 /* Allocate memory separately for global variable carrying FW caps */
28664 fCapsStructSize = sizeof(tWlanFeatCaps);
28665 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28666 if ( NULL == gpHostWlanFeatCaps )
28667 {
28668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028669 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028670 WDI_ASSERT(0);
28671 return WDI_STATUS_MEM_FAILURE;
28672 }
28673
28674 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28675
28676 /*------------------------------------------------------------------------
28677 Fill in Event data and post to the Main FSM
28678 ------------------------------------------------------------------------*/
28679 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28680 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028682 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028683 gpHostWlanFeatCaps->featCaps[0],
28684 gpHostWlanFeatCaps->featCaps[1],
28685 gpHostWlanFeatCaps->featCaps[2],
28686 gpHostWlanFeatCaps->featCaps[3]
28687 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28689 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028690 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28691 wdiEventData.pEventData = gpHostWlanFeatCaps;
28692 wdiEventData.uEventDataSize = fCapsStructSize;
28693 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28694 wdiEventData.pUserData = pUserData;
28695
28696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28697}
28698
28699/**
Yathish9f22e662012-12-10 14:21:35 -080028700 @brief Disable Active mode offload in Host
28701
28702 @param void
28703 @see
28704 @return void
28705*/
28706void
28707WDI_disableCapablityFeature(wpt_uint8 feature_index)
28708{
28709 supportEnabledFeatures[feature_index] = 0;
28710 return;
28711}
28712
28713/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028714 @brief Process Host-FW Capability Exchange Request function
28715
28716 @param pWDICtx: pointer to the WLAN DAL context
28717 pEventData: pointer to the event information structure
28718
28719 @see
28720 @return Result of the function call
28721*/
28722WDI_Status
28723WDI_ProcessFeatureCapsExchangeReq
28724(
28725 WDI_ControlBlockType* pWDICtx,
28726 WDI_EventInfoType* pEventData
28727)
28728{
28729 wpt_uint8* pSendBuffer = NULL;
28730 wpt_uint16 usDataOffset = 0;
28731 wpt_uint16 usSendSize = 0;
28732 wpt_uint16 usLen = 0;
28733
28734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28735
28736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028737 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028738
28739 /*-------------------------------------------------------------------------
28740 Sanity check
28741 -------------------------------------------------------------------------*/
28742 /* Call back function is NULL since not required for cap exchange req */
28743 if (( NULL == pEventData ) ||
28744 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28745 {
28746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028748 WDI_ASSERT(0);
28749 return WDI_STATUS_E_FAILURE;
28750 }
28751
28752 /*-----------------------------------------------------------------------
28753 Get message buffer
28754 -----------------------------------------------------------------------*/
28755 usLen = sizeof(tWlanFeatCaps);
28756
28757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28758 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28759 usLen,
28760 &pSendBuffer, &usDataOffset, &usSendSize))||
28761 ( usSendSize < (usDataOffset + usLen )))
28762 {
28763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028764 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028765 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28766 WDI_ASSERT(0);
28767 return WDI_STATUS_E_FAILURE;
28768 }
28769
28770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028771 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028772 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28773 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28774 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28775 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28776 );
28777
28778 /* Copy host caps after the offset in the send buffer */
28779 wpalMemoryCopy( pSendBuffer+usDataOffset,
28780 (tWlanFeatCaps *)pEventData->pEventData,
28781 usLen);
28782
28783 /*-------------------------------------------------------------------------
28784 Send Start Request to HAL
28785 -------------------------------------------------------------------------*/
28786 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28787 (WDI_StartRspCb)pEventData->pCBfnc,
28788 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28789
28790}/*WDI_ProcessFeatureCapsExchangeReq*/
28791
28792/**
28793 @brief Process Host-FW Capability Exchange Response function
28794
28795 @param pWDICtx: pointer to the WLAN DAL context
28796 pEventData: pointer to the event information structure
28797
28798 @see
28799 @return Result of the function call
28800*/
28801WDI_Status
28802WDI_ProcessFeatureCapsExchangeRsp
28803(
28804 WDI_ControlBlockType* pWDICtx,
28805 WDI_EventInfoType* pEventData
28806)
28807{
28808 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28809 wpt_int32 fCapsStructSize;
28810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28811
28812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028813 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028814
28815 /*-------------------------------------------------------------------------
28816 Sanity check
28817 -------------------------------------------------------------------------*/
28818 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28819 ( NULL == pEventData->pEventData ))
28820 {
28821 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028824 WDI_ASSERT(0);
28825 return WDI_STATUS_E_FAILURE;
28826 }
28827
28828 /* Allocate memory separately for global variable carrying FW caps */
28829 fCapsStructSize = sizeof(tWlanFeatCaps);
28830 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28831 if ( NULL == gpFwWlanFeatCaps )
28832 {
28833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028834 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028835 WDI_ASSERT(0);
28836 return WDI_STATUS_MEM_FAILURE;
28837 }
28838
28839 /*-------------------------------------------------------------------------
28840 Unpack HAL Response Message - the header was already extracted by the
28841 main Response Handling procedure
28842 -------------------------------------------------------------------------*/
28843 /*-------------------------------------------------------------------------
28844 Extract response and send it to UMAC
28845 -------------------------------------------------------------------------*/
28846
28847 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28848 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028850 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028851 gpFwWlanFeatCaps->featCaps[0],
28852 gpFwWlanFeatCaps->featCaps[1],
28853 gpFwWlanFeatCaps->featCaps[2],
28854 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028855 );
28856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28857 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028858 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28859
28860 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28861 if (wdiFeatureCapsExchangeCb != NULL)
28862 wdiFeatureCapsExchangeCb(NULL, NULL);
28863
28864 return WDI_STATUS_SUCCESS;
28865}
28866
Mohit Khanna4a70d262012-09-11 16:30:12 -070028867#ifdef WLAN_FEATURE_11AC
28868WDI_Status
28869WDI_ProcessUpdateVHTOpModeRsp
28870(
28871 WDI_ControlBlockType* pWDICtx,
28872 WDI_EventInfoType* pEventData
28873)
28874{
28875 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28876 WDI_Status wdiStatus;
28877 eHalStatus halStatus;
28878
28879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28880
28881 /*-------------------------------------------------------------------------
28882 Sanity check
28883 -------------------------------------------------------------------------*/
28884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28885 ( NULL == pEventData->pEventData))
28886 {
28887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028888 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028889 WDI_ASSERT(0);
28890 return WDI_STATUS_E_FAILURE;
28891 }
28892 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28893
28894 /*-------------------------------------------------------------------------
28895 Extract response and send it to UMAC
28896 -------------------------------------------------------------------------*/
28897 halStatus = *((eHalStatus*)pEventData->pEventData);
28898 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28899
28900 /*Notify UMAC*/
28901 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28902
28903 return WDI_STATUS_SUCCESS;
28904}
28905#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028906/**
28907 @brief WDI_getHostWlanFeatCaps
28908 WDI API that returns whether the feature passed to it as enum value in
28909 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28910 variable storing host capability bitmap to find this. This can be used by
28911 other moduels to decide certain things like call different APIs based on
28912 whether a particular feature is supported.
28913
28914 @param
28915
28916 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28917
28918 @see
28919 @return
28920 0 - if the feature is NOT supported in host
28921 any non-zero value - if the feature is SUPPORTED in host.
28922*/
28923wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28924{
28925 wpt_uint8 featSupported = 0;
28926 if (gpHostWlanFeatCaps != NULL)
28927 {
28928 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28929 }
28930 else
28931 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028933 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028934 }
28935 return featSupported;
28936}
28937
28938/**
28939 @brief WDI_getFwWlanFeatCaps
28940 WDI API that returns whether the feature passed to it as enum value in
28941 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28942 variable storing host capability bitmap to find this. This can be used by
28943 other moduels to decide certain things like call different APIs based on
28944 whether a particular feature is supported.
28945
28946 @param
28947
28948 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28949 in wlan_hal_msg.h.
28950
28951 @see
28952 @return
28953 0 - if the feature is NOT supported in FW
28954 any non-zero value - if the feature is SUPPORTED in FW.
28955*/
28956wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28957{
28958 wpt_uint8 featSupported = 0;
28959 if (gpFwWlanFeatCaps != NULL)
28960 {
28961 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28962 }
28963 else
28964 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028966 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028967 }
28968 return featSupported;
28969}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028970
28971#ifdef WLAN_FEATURE_11AC
28972WDI_Status
28973WDI_ProcessUpdateVHTOpModeReq
28974(
28975 WDI_ControlBlockType* pWDICtx,
28976 WDI_EventInfoType* pEventData
28977)
28978{
28979 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28980 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28981 wpt_uint8* pSendBuffer = NULL;
28982 wpt_uint16 usDataOffset = 0;
28983 wpt_uint16 usSendSize = 0;
28984
28985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28986
28987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028988 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028989
28990 /*-------------------------------------------------------------------------
28991 Sanity check
28992 -------------------------------------------------------------------------*/
28993 if (( NULL == pEventData ) ||
28994 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28995 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28996 {
28997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028998 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028999 WDI_ASSERT(0);
29000 return WDI_STATUS_E_FAILURE;
29001 }
29002
29003 /*-----------------------------------------------------------------------
29004 Get message buffer
29005 -----------------------------------------------------------------------*/
29006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29007 sizeof(WDI_UpdateVHTOpMode),
29008 &pSendBuffer, &usDataOffset, &usSendSize))||
29009 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29010 {
29011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29012 "Unable to get send buffer in update vht opMode req");
29013 WDI_ASSERT(0);
29014 return WDI_STATUS_E_FAILURE;
29015 }
29016
29017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029018 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029019
29020 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29021 sizeof(WDI_UpdateVHTOpMode));
29022
29023 /*-------------------------------------------------------------------------
29024 Send Start Request to HAL
29025 -------------------------------------------------------------------------*/
29026 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29027 wdiVHTOpModeCb,
29028 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29029
29030}
29031
29032WDI_Status
29033WDI_UpdateVHTOpModeReq
29034(
29035 WDI_UpdateVHTOpMode *pData,
29036 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29037 void* pUserData
29038)
29039{
29040 WDI_EventInfoType wdiEventData;
29041
29042 /*------------------------------------------------------------------------
29043 Sanity Check
29044 ------------------------------------------------------------------------*/
29045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29046 {
29047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29048 "WDI API call before module is initialized - Fail request");
29049
29050 return WDI_STATUS_E_NOT_ALLOWED;
29051 }
29052
29053 /*------------------------------------------------------------------------
29054 Fill in Event data and post to the Main FSM
29055 ------------------------------------------------------------------------*/
29056 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29057 wdiEventData.pEventData = pData;
29058 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29059 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29060 wdiEventData.pUserData = pUserData;
29061
29062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029063 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029064
29065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29066
29067}
29068#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029069
29070/**
29071 @brief WDI_TransportChannelDebug -
29072 Display DXE Channel debugging information
29073 User may request to display DXE channel snapshot
29074 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029075
Jeff Johnsonb88db982012-12-10 13:34:59 -080029076 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029077 @param debugFlags : Enable stall detect features
29078 defined by WPAL_DeviceDebugFlags
29079 These features may effect
29080 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029081 @see
29082 @return none
29083*/
29084void WDI_TransportChannelDebug
29085(
29086 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029087 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029088)
29089{
Mihir Shete40a55652014-03-02 14:14:47 +053029090 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029091 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029092}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029093/**
29094 @brief WDI_SsrTimerCB
29095 Callback function for SSR timer, if this is called then the graceful
29096 shutdown for Riva did not happen.
29097
29098 @param pUserData : user data to timer
29099
29100 @see
29101 @return none
29102*/
29103void
29104WDI_SsrTimerCB
29105(
29106 void *pUserData
29107)
29108{
29109 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29111
29112 if (NULL == pWDICtx )
29113 {
29114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029115 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029116 WDI_ASSERT(0);
29117 return;
29118 }
29119 wpalRivaSubystemRestart();
29120
29121 return;
29122
29123}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029124
29125/**
29126 @brief WDI_SetEnableSSR -
29127 This API is called to enable/disable SSR on WDI timeout.
29128
29129 @param enableSSR : enable/disable SSR
29130
29131 @see
29132 @return none
29133*/
29134void WDI_SetEnableSSR(wpt_boolean enableSSR)
29135{
29136 gWDICb.bEnableSSR = enableSSR;
29137}
Leo Chang9056f462013-08-01 19:21:11 -070029138
29139
29140#ifdef FEATURE_WLAN_LPHB
29141/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029142 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029143 This function will be invoked when FW detects low power
29144 heart beat failure
29145
29146 @param pWDICtx : wdi context
29147 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029148 @see
29149 @return Result of the function call
29150*/
29151WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029152WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029153(
29154 WDI_ControlBlockType* pWDICtx,
29155 WDI_EventInfoType* pEventData
29156)
29157{
29158 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029159 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29161
29162 /*-------------------------------------------------------------------------
29163 Sanity check
29164 -------------------------------------------------------------------------*/
29165 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29166 (NULL == pEventData->pEventData))
29167 {
29168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29169 "%s: Invalid parameters", __func__);
29170 WDI_ASSERT(0);
29171 return WDI_STATUS_E_FAILURE;
29172 }
29173
29174 /*-------------------------------------------------------------------------
29175 Extract indication and send it to UMAC
29176 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029177 wpalMemoryCopy(&lphbIndicationParam,
29178 pEventData->pEventData,
29179 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029180
Leo Changd9df8aa2013-09-26 13:32:26 -070029181 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029182 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029183 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029184 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029185 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029186 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029187 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029188 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029189 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029190 /*Notify UMAC*/
29191 if (pWDICtx->wdiLowLevelIndCB)
29192 {
29193 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29194 }
29195
29196 return WDI_STATUS_SUCCESS;
29197}
29198
29199/**
29200 @brief WDI_ProcessLphbCfgRsp -
29201 LPHB configuration response from FW
29202
29203 @param pWDICtx : wdi context
29204 pEventData : indication data
29205
29206 @see
29207 @return Result of the function call
29208*/
29209WDI_Status WDI_ProcessLphbCfgRsp
29210(
29211 WDI_ControlBlockType* pWDICtx,
29212 WDI_EventInfoType* pEventData
29213)
29214{
29215 WDI_Status wdiStatus;
29216 eHalStatus halStatus;
29217 WDI_LphbCfgCb wdiLphbCfgCb;
29218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29219
29220 /*-------------------------------------------------------------------------
29221 Sanity check
29222 -------------------------------------------------------------------------*/
29223 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29224 (NULL == pEventData->pEventData))
29225 {
29226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29227 "%s: Invalid parameters", __func__);
29228 WDI_ASSERT(0);
29229 return WDI_STATUS_E_FAILURE;
29230 }
29231
29232 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29233
29234 /*-------------------------------------------------------------------------
29235 Extract response and send it to UMAC
29236 -------------------------------------------------------------------------*/
29237 halStatus = *((eHalStatus*)pEventData->pEventData);
29238 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29239
29240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29241 "LPHB Cfg Rsp Return status %d", wdiStatus);
29242 /*Notify UMAC*/
29243 if (NULL != wdiLphbCfgCb)
29244 {
29245 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29246 }
29247
29248 return WDI_STATUS_SUCCESS;
29249}
29250
29251/**
29252 @brief WDI_ProcessLPHBConfReq -
29253 LPHB configuration request to FW
29254
29255 @param pWDICtx : wdi context
29256 pEventData : indication data
29257
29258 @see
29259 @return none
29260*/
29261WDI_Status WDI_ProcessLPHBConfReq
29262(
29263 WDI_ControlBlockType* pWDICtx,
29264 WDI_EventInfoType* pEventData
29265)
29266{
29267 WDI_LPHBReq *pLphbReqParams;
29268 WDI_Status wdiStatus;
29269 wpt_uint8* pSendBuffer = NULL;
29270 wpt_uint16 usDataOffset = 0;
29271 wpt_uint16 usSendSize = 0;
29272 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29274
29275 /*-------------------------------------------------------------------------
29276 Sanity check
29277 -------------------------------------------------------------------------*/
29278 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29279 {
29280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29281 "%s: Invalid parameters in Suspend ind",__func__);
29282 WDI_ASSERT(0);
29283 return WDI_STATUS_E_FAILURE;
29284 }
29285
29286 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29287
29288 /*-----------------------------------------------------------------------
29289 Get message buffer
29290 -----------------------------------------------------------------------*/
29291 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29292 WDI_LPHB_CFG_REQ,
29293 sizeof(tHalLowPowerHeartBeatReqMsg),
29294 &pSendBuffer, &usDataOffset, &usSendSize))||
29295 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29296 {
29297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29298 "Unable to get send buffer in LPHB Ind ");
29299 WDI_ASSERT(0);
29300 return WDI_STATUS_E_FAILURE;
29301 }
29302
29303 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29304 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29305
29306 halLphbReqRarams->lowPowerHeartBeatCmdType =
29307 (tANI_U16)(++pLphbReqParams->cmd);
29308 switch ((tANI_U16)pLphbReqParams->cmd)
29309 {
29310 case WDI_LPHB_SET_EN_PARAMS_INDID:
29311 halLphbReqRarams->sessionIdx =
29312 pLphbReqParams->params.lphbEnableReq.session;
29313 halLphbReqRarams->options.control.heartBeatEnable =
29314 pLphbReqParams->params.lphbEnableReq.enable;
29315 halLphbReqRarams->options.control.heartBeatType =
29316 pLphbReqParams->params.lphbEnableReq.item;
29317 break;
29318
29319 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29320 halLphbReqRarams->sessionIdx =
29321 pLphbReqParams->params.lphbTcpParamReq.session;
29322 halLphbReqRarams->options.tcpParams.timeOutSec =
29323 pLphbReqParams->params.lphbTcpParamReq.timeout;
29324 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29325 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29326 sizeof(v_U32_t));
29327 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29328 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29329 sizeof(v_U32_t));
29330
29331 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29332 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29333 WDI_MAC_ADDR_LEN);
29334
29335 halLphbReqRarams->options.tcpParams.hostPort =
29336 pLphbReqParams->params.lphbTcpParamReq.src_port;
29337 halLphbReqRarams->options.tcpParams.destPort =
29338 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029339 halLphbReqRarams->options.tcpParams.timePeriodSec =
29340 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29341 halLphbReqRarams->options.tcpParams.tcpSn =
29342 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029343 break;
29344
29345 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29346 halLphbReqRarams->sessionIdx =
29347 pLphbReqParams->params.lphbTcpFilterReq.session;
29348 halLphbReqRarams->options.tcpUdpFilter.offset =
29349 pLphbReqParams->params.lphbTcpFilterReq.offset;
29350 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29351 pLphbReqParams->params.lphbTcpFilterReq.length;
29352 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29353 pLphbReqParams->params.lphbTcpFilterReq.filter,
29354 WDI_LPHB_FILTER_LEN);
29355 break;
29356
29357 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29358 halLphbReqRarams->sessionIdx =
29359 pLphbReqParams->params.lphbUdpParamReq.session;
29360 halLphbReqRarams->options.udpParams.timeOutSec =
29361 pLphbReqParams->params.lphbUdpParamReq.timeout;
29362 halLphbReqRarams->options.udpParams.timePeriodSec =
29363 pLphbReqParams->params.lphbUdpParamReq.interval;
29364 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29365 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29366 sizeof(v_U32_t));
29367 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29368 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29369 sizeof(v_U32_t));
29370
29371 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29372 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29373 WDI_MAC_ADDR_LEN);
29374
29375 halLphbReqRarams->options.udpParams.hostPort =
29376 pLphbReqParams->params.lphbUdpParamReq.src_port;
29377 halLphbReqRarams->options.udpParams.destPort =
29378 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29379 break;
29380
29381 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29382 halLphbReqRarams->sessionIdx =
29383 pLphbReqParams->params.lphbUdpFilterReq.session;
29384 halLphbReqRarams->options.tcpUdpFilter.offset =
29385 pLphbReqParams->params.lphbUdpFilterReq.offset;
29386 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29387 pLphbReqParams->params.lphbUdpFilterReq.length;
29388 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29389 pLphbReqParams->params.lphbUdpFilterReq.filter,
29390 WDI_LPHB_FILTER_LEN);
29391 break;
29392
29393 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29394 /* NA */
29395 break;
29396
29397 default:
29398 break;
29399 }
29400
29401 /*-------------------------------------------------------------------------
29402 Send Suspend Request to HAL
29403 -------------------------------------------------------------------------*/
29404 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29405 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29406
29407 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29408 usSendSize, pWDICtx->pfncRspCB,
29409 pWDICtx->pReqStatusUserData,
29410 WDI_LPHB_CFG_RESP);
29411
29412 return wdiStatus;
29413}
29414
29415/**
29416 @brief WDI_LPHBConfReq -
29417 LPHB configuration request API
29418
29419 @param lphbconfParam : configuration parameter
29420 usrData : client context
29421 lphbCfgCb : callback function pointer
29422
29423 @see
29424 @return Success or fail status code
29425*/
29426WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29427 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29428{
29429 WDI_EventInfoType wdiEventData;
29430
29431 /*------------------------------------------------------------------------
29432 Sanity Check
29433 ------------------------------------------------------------------------*/
29434 if (eWLAN_PAL_FALSE == gWDIInitialized)
29435 {
29436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29437 "WDI API call before module is initialized - Fail request");
29438
29439 return WDI_STATUS_E_NOT_ALLOWED;
29440 }
29441
29442 /*------------------------------------------------------------------------
29443 Fill in Event data and post to the Main FSM
29444 ------------------------------------------------------------------------*/
29445 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29446 wdiEventData.pEventData = lphbconfParam;
29447 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29448 wdiEventData.pCBfnc = lphbCfgCb;
29449 wdiEventData.pUserData = usrData;
29450
29451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29452}
29453#endif /* FEATURE_WLAN_LPHB */
29454
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029455/**
29456 @brief WDI_ProcessIbssPeerInactivityInd
29457 Process peer inactivity indication coming from HAL
29458
29459 @param pWDICtx: pointer to the WLAN DAL context
29460 pEventData: pointer to the event information structure
29461 @see
29462 @return Result of the function call
29463*/
29464WDI_Status
29465WDI_ProcessIbssPeerInactivityInd
29466(
29467 WDI_ControlBlockType* pWDICtx,
29468 WDI_EventInfoType* pEventData
29469)
29470{
29471 WDI_LowLevelIndType wdiInd;
29472 tIbssPeerInactivityIndMsg halIbssIndMsg;
29473
29474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29475
29476 /*-------------------------------------------------------------------------
29477 Sanity check
29478 -------------------------------------------------------------------------*/
29479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29480 ( NULL == pEventData->pEventData ))
29481 {
29482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29483 "%s: Invalid parameters", __func__);
29484 WDI_ASSERT( 0 );
29485 return WDI_STATUS_E_FAILURE;
29486 }
29487
29488 /*-------------------------------------------------------------------------
29489 Extract indication and send it to UMAC
29490 -------------------------------------------------------------------------*/
29491 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29492 pEventData->pEventData,
29493 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29494
29495 /*Fill in the indication parameters*/
29496 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29497
29498 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29499 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29500
29501 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29502 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29503
29504 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29505 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29506 sizeof(tSirMacAddr));
29507
29508 /*Notify UMAC*/
29509 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29510
29511 return WDI_STATUS_SUCCESS;
29512
29513} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029514
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029515/**
29516*@brief WDI_RateUpdateInd will be called when the upper MAC
29517 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029518
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029519
29520 @param wdiRateUpdateIndParams:
29521
29522
29523 @see
29524 @return Result of the function call
29525*/
29526WDI_Status
29527WDI_RateUpdateInd
29528(
29529 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29530)
29531{
29532 WDI_EventInfoType wdiEventData;
29533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29534
29535 /*------------------------------------------------------------------------
29536 Sanity Check
29537 ------------------------------------------------------------------------*/
29538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29539 {
29540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29541 "WDI API call before module is initialized - Fail request");
29542
29543 return WDI_STATUS_E_NOT_ALLOWED;
29544 }
29545
29546 /*------------------------------------------------------------------------
29547 Fill in Event data and post to the Main FSM
29548 ------------------------------------------------------------------------*/
29549 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29550 wdiEventData.pEventData = wdiRateUpdateIndParams;
29551 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29552 wdiEventData.pCBfnc = NULL;
29553 wdiEventData.pUserData = NULL;
29554
29555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29556
29557}/* WDI_RateUpdateInd */
29558
29559/**
29560 @brief Process Rate Update Indication and post it to HAL
29561
29562 @param pWDICtx: pointer to the WLAN DAL context
29563 pEventData: pointer to the event information structure
29564
29565 @see
29566 @return Result of the function call
29567*/
29568WDI_Status
29569WDI_ProcessRateUpdateInd
29570(
29571 WDI_ControlBlockType* pWDICtx,
29572 WDI_EventInfoType* pEventData
29573)
29574{
29575 wpt_uint8* pSendBuffer = NULL;
29576 wpt_uint16 usDataOffset = 0;
29577 wpt_uint16 usSendSize = 0;
29578 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29579 tHalRateUpdateInd *pRateUpdateInd;
29580 WDI_Status wdiStatus;
29581
29582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29583
29584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29585 "%s", __func__);
29586
29587 /*-------------------------------------------------------------------------
29588 Sanity check
29589 -------------------------------------------------------------------------*/
29590 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29591 {
29592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29593 "%s: Invalid parameters", __func__);
29594 WDI_ASSERT(0);
29595 return WDI_STATUS_E_FAILURE;
29596 }
29597 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29598 /*-----------------------------------------------------------------------
29599 Get message buffer
29600 -----------------------------------------------------------------------*/
29601
29602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29603 WDI_RATE_UPDATE_IND,
29604 sizeof(tHalRateUpdateParams),
29605 &pSendBuffer, &usDataOffset, &usSendSize))||
29606 ( usSendSize < (usDataOffset +
29607 sizeof(tHalRateUpdateParams) )))
29608 {
29609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29610 "Unable to get send buffer in Rate Update Indication %p ",
29611 pEventData);
29612 WDI_ASSERT(0);
29613 return WDI_STATUS_E_FAILURE;
29614 }
29615
29616 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29617
29618 /* Copy the bssid */
29619 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29620 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29621
29622 /* Copy the tx flags */
29623 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29624 pwdiRateUpdateInd->ucastDataRateTxFlag;
29625 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29626 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29627 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29628 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29629 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29630 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29631
29632 /* Copy the tx rates */
29633 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29634 pwdiRateUpdateInd->ucastDataRate;
29635 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29636 pwdiRateUpdateInd->reliableMcastDataRate;
29637 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29638 pwdiRateUpdateInd->mcastDataRate24GHz;
29639 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29640 pwdiRateUpdateInd->mcastDataRate5GHz;
29641
29642 /*-------------------------------------------------------------------------
29643 Send Rate Update Indication to HAL
29644 -------------------------------------------------------------------------*/
29645 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29646 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29647
29648 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29649
29650 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29651 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29652
29653} /* WDI_ProcessRateUpdateInd */
29654
29655#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029656/**
29657 @brief Process stop batch indication from WDA
29658
29659 @param pWDICtx: pointer to the WLAN DAL context
29660 pEventData: pointer to the event information structure
29661
29662 @see
29663 @return Result of the function call
29664*/
29665WDI_Status
29666WDI_ProcessStopBatchScanInd
29667(
29668 WDI_ControlBlockType* pWDICtx,
29669 WDI_EventInfoType* pEventData
29670)
29671{
29672 wpt_uint8* pSendBuffer = NULL;
29673 wpt_uint16 usDataOffset = 0;
29674 wpt_uint16 usSendSize = 0;
29675 WDI_Status wdiStatus;
29676 tHalBatchScanStopIndParam *pHalInd = NULL;
29677 WDI_StopBatchScanIndType *pWdiInd = NULL;
29678
29679
29680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29681
29682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29683 "%s", __func__);
29684
29685 /*-------------------------------------------------------------------------
29686 Sanity check
29687 -------------------------------------------------------------------------*/
29688
29689 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29690 {
29691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29692 "%s: Invalid parameters", __func__);
29693 WDI_ASSERT(0);
29694 return WDI_STATUS_E_FAILURE;
29695 }
29696 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29697 /*-----------------------------------------------------------------------
29698 Get message buffer
29699 -----------------------------------------------------------------------*/
29700
29701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29702 WDI_STOP_BATCH_SCAN_IND,
29703 sizeof(tHalBatchScanStopIndParam),
29704 &pSendBuffer, &usDataOffset, &usSendSize))||
29705 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29706 {
29707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29708 "Unable to get send buffer in stop batch scan ind %p ",
29709 pEventData);
29710 WDI_ASSERT(0);
29711 return WDI_STATUS_E_FAILURE;
29712 }
29713
29714 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29715 pHalInd->param = pWdiInd->param;
29716
29717 pWDICtx->pReqStatusUserData = NULL;
29718 pWDICtx->pfncRspCB = NULL;
29719 /*-------------------------------------------------------------------------
29720 Send Stop batch scan indication to HAL
29721 -------------------------------------------------------------------------*/
29722 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29723 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29724}
29725
29726/**
29727 @brief This API is called to trigger batch scan results from FW
29728
29729 @param pWDICtx: pointer to the WLAN DAL context
29730 pEventData: pointer to the event information structure
29731
29732 @see
29733 @return Result of the function call
29734*/
29735WDI_Status
29736WDI_ProcessTriggerBatchScanResultInd
29737(
29738 WDI_ControlBlockType* pWDICtx,
29739 WDI_EventInfoType* pEventData
29740)
29741{
29742 WDI_Status wdiStatus;
29743 wpt_uint8* pSendBuffer = NULL;
29744 wpt_uint16 usDataOffset = 0;
29745 wpt_uint16 usSendSize = 0;
29746 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29747 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29748
29749
29750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29751
29752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29753 "%s", __func__);
29754
29755 /*-------------------------------------------------------------------------
29756 Sanity check
29757 -------------------------------------------------------------------------*/
29758
29759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29760 {
29761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29762 "%s: Invalid parameters", __func__);
29763 WDI_ASSERT(0);
29764 return WDI_STATUS_E_FAILURE;
29765 }
29766 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29767 /*-----------------------------------------------------------------------
29768 Get message buffer
29769 -----------------------------------------------------------------------*/
29770
29771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29772 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29773 sizeof(tHalBatchScanTriggerResultParam),
29774 &pSendBuffer, &usDataOffset, &usSendSize))||
29775 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29776 {
29777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29778 "Unable to get send buffer in stop batch scan ind %p ",
29779 pEventData);
29780 WDI_ASSERT(0);
29781 return WDI_STATUS_E_FAILURE;
29782 }
29783
29784 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29785 pHalInd->param = pWdiInd->param;
29786
29787 pWDICtx->pReqStatusUserData = NULL;
29788 pWDICtx->pfncRspCB = NULL;
29789 /*-------------------------------------------------------------------------
29790 Send trigger batch scan result indication to HAL
29791 -------------------------------------------------------------------------*/
29792 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29793 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29794}
29795
29796
29797/**
29798 @brief Process set batch scan response from FW
29799
29800 @param pWDICtx: pointer to the WLAN DAL context
29801 pEventData: pointer to the event information structure
29802
29803 @see
29804 @return Result of the function call
29805*/
29806WDI_Status
29807WDI_ProcessSetBatchScanRsp
29808(
29809 WDI_ControlBlockType* pWDICtx,
29810 WDI_EventInfoType* pEventData
29811)
29812{
29813 WDI_SetBatchScanCb wdiSetBatchScanCb;
29814 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29815
29816 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29818
29819 /*sanity check*/
29820 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29821 ( NULL == pEventData->pEventData))
29822 {
29823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29824 "%s: Invalid parameters", __func__);
29825 WDI_ASSERT(0);
29826 return WDI_STATUS_E_FAILURE;
29827 }
29828
29829 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29830 if ( NULL == wdiSetBatchScanCb)
29831 {
29832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29833 "%s: call back function is NULL", __func__);
29834 WDI_ASSERT(0);
29835 return WDI_STATUS_E_FAILURE;
29836 }
29837
29838 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29839
29840 if (NULL == pSetBatchScanRsp)
29841 {
29842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029843 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029844 pWDICtx, pEventData, pEventData->pEventData);
29845 WDI_ASSERT(0);
29846 return WDI_STATUS_E_FAILURE;
29847 }
29848
Sunil Duttbd736ed2014-05-26 21:19:41 +053029849 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029850 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29851
29852 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29853
Sunil Duttbd736ed2014-05-26 21:19:41 +053029854 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029855 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29856
29857 wpalMemoryFree(pSetBatchScanRsp);
29858
29859 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029860}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029861
29862/**
29863 @brief Process batch scan result indication from FW
29864
29865 @param pWDICtx: pointer to the WLAN DAL context
29866 pEventData: pointer to the event information structure
29867
29868 @see
29869 @return Result of the function call
29870*/
29871WDI_Status
29872WDI_ProcessBatchScanResultInd
29873(
29874 WDI_ControlBlockType* pWDICtx,
29875 WDI_EventInfoType* pEventData
29876)
29877{
29878 void *pBatchScanResultInd;
29879 WDI_LowLevelIndType wdiInd;
29880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29881
Sunil Duttbd736ed2014-05-26 21:19:41 +053029882 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29884 ( NULL == pEventData->pEventData))
29885 {
29886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29887 "%s: Invalid parameters", __func__);
29888 WDI_ASSERT(0);
29889 return WDI_STATUS_E_FAILURE;
29890 }
29891
Sunil Duttbd736ed2014-05-26 21:19:41 +053029892 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029893 pBatchScanResultInd = (void *)pEventData->pEventData;
29894
Sunil Duttbd736ed2014-05-26 21:19:41 +053029895 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029896 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29897
29898 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29899
Sunil Duttbd736ed2014-05-26 21:19:41 +053029900 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029901 if (pWDICtx->wdiLowLevelIndCB)
29902 {
29903 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29904 }
29905 else
29906 {
29907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29908 "%s: WDILowLevelIndCb is null", __func__);
29909 WDI_ASSERT(0);
29910 return WDI_STATUS_E_FAILURE;
29911 }
29912
29913 return WDI_STATUS_SUCCESS;
29914} /*End of WDI_ProcessBatchScanResultInd*/
29915
Sunil Duttbd736ed2014-05-26 21:19:41 +053029916#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29917/**
29918 @brief Process Link Layer Statistics Result indication from FW
29919
29920 @param pWDICtx: pointer to the WLAN DAL context
29921 pEventData: pointer to the event information structure
29922
29923 @see
29924 @return Result of the function call
29925*/
29926WDI_Status
29927WDI_ProcessLinkLayerStatsResultsInd
29928(
29929 WDI_ControlBlockType* pWDICtx,
29930 WDI_EventInfoType* pEventData
29931)
29932{
29933 void *pLinkLayerStatsInd;
29934 WDI_LowLevelIndType wdiInd;
29935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29936
29937 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29938 "%s: Event RESULTS Indication", __func__);
29939
29940 /* sanity check */
29941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29942 ( NULL == pEventData->pEventData))
29943 {
29944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29945 "%s: Invalid parameters", __func__);
29946 WDI_ASSERT(0);
29947 return WDI_STATUS_E_FAILURE;
29948 }
29949
29950 /* extract response and send it to UMAC */
29951 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29952
29953 /* Fill in the indication parameters */
29954 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29955
29956 wdiInd.wdiIndicationData.pLinkLayerStatsResults = pLinkLayerStatsInd;
29957
29958 /* Notify UMAC */
29959 if (pWDICtx->wdiLowLevelIndCB)
29960 {
29961 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29962 }
29963 else
29964 {
29965 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29966 "%s: WDILowLevelIndCb is null", __func__);
29967 WDI_ASSERT(0);
29968 return WDI_STATUS_E_FAILURE;
29969 }
29970
29971 return WDI_STATUS_SUCCESS;
29972} /* End of WDI_ProcessLinkLayerStatsResultsInd */
29973#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
29974
Rajeev79dbe4c2013-10-05 11:03:42 +053029975/**
29976 @brief WDI_ProcessSetBatchScanReq -
29977 Set batch scan request to FW
29978
29979 @param pWDICtx : wdi context
29980 pEventData : indication data
29981
29982 @see
29983 @return none
29984*/
29985WDI_Status WDI_ProcessSetBatchScanReq
29986(
29987 WDI_ControlBlockType* pWDICtx,
29988 WDI_EventInfoType* pEventData
29989)
29990{
29991 WDI_SetBatchScanReqType *pWdiReq;
29992 WDI_Status wdiStatus;
29993 wpt_uint8* pSendBuffer = NULL;
29994 wpt_uint16 usDataOffset = 0;
29995 wpt_uint16 usSendSize = 0;
29996 tHalBatchScanSetParams *pHalReq;
29997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29998
29999 /*sanity check*/
30000 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30001 {
30002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30003 "%s: Invalid parameters in set batch scan request", __func__);
30004 WDI_ASSERT(0);
30005 return WDI_STATUS_E_FAILURE;
30006 }
30007
30008
30009 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30010
30011
30012 /*get message buffer*/
30013 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30014 WDI_SET_BATCH_SCAN_REQ,
30015 sizeof(tHalBatchScanSetParams),
30016 &pSendBuffer, &usDataOffset, &usSendSize))||
30017 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30018 {
30019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30020 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30021 WDI_ASSERT(0);
30022 return WDI_STATUS_E_FAILURE;
30023 }
30024
30025 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30026
30027 pHalReq->rtt = pWdiReq->rtt;
30028 pHalReq->rfBand = pWdiReq->rfBand;
30029 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30030 pHalReq->scanInterval = pWdiReq->scanFrequency;
30031 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30032
30033 /*send set batch scan request to fw*/
30034 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30035 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30036
30037 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30038 usSendSize, pWDICtx->pfncRspCB,
30039 pWDICtx->pReqStatusUserData,
30040 WDI_SET_BATCH_SCAN_RESP);
30041
30042 return wdiStatus;
30043}
30044
30045/**
30046 @brief WDI_SetBatchScanReq
30047 This API is called to set batch scan request in FW
30048
30049 @param pBatchScanReqParam : pointer to set batch scan re param
30050 usrData : Client context
30051 setBatchScanRspCb : set batch scan resp callback
30052 @see
30053 @return SUCCESS or FAIL
30054*/
30055WDI_Status WDI_SetBatchScanReq
30056(
30057 void *pBatchScanReqParam,
30058 void *usrData,
30059 WDI_SetBatchScanCb setBatchScanRspCb
30060)
30061{
30062 WDI_EventInfoType wdiEventData;
30063
30064 /*sanity check*/
30065 if (eWLAN_PAL_FALSE == gWDIInitialized)
30066 {
30067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30068 "WDI API call before module is initialized - Fail request");
30069
30070 return WDI_STATUS_E_NOT_ALLOWED;
30071 }
30072
30073 /* fill in event data and post to the main FSM */
30074 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30075 wdiEventData.pEventData = pBatchScanReqParam;
30076 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30077 wdiEventData.pCBfnc = setBatchScanRspCb;
30078 wdiEventData.pUserData = usrData;
30079
30080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30081}
30082
30083/**
30084 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30085
30086 @param None
30087
30088 @see
30089
30090 @return Status of the request
30091*/
30092WDI_Status
30093WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30094{
30095 WDI_EventInfoType wdiEventData;
30096
30097 /*-------------------------------------------------------------------------
30098 Sanity Check
30099 ------------------------------------------------------------------------*/
30100 if (eWLAN_PAL_FALSE == gWDIInitialized)
30101 {
30102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30103 "WDI API call before module is initialized - Fail request!");
30104
30105 return WDI_STATUS_E_NOT_ALLOWED;
30106 }
30107
30108 /*-------------------------------------------------------------------------
30109 Fill in Event data and post to the Main FSM
30110 ------------------------------------------------------------------------*/
30111 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30112 wdiEventData.pEventData = pWdiReq;
30113 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30114 wdiEventData.pCBfnc = NULL;
30115 wdiEventData.pUserData = NULL;
30116
30117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30118}
30119
30120/**
30121 @brief WDI_TriggerBatchScanResultInd
30122 This API is called to pull batch scan result from FW
30123
30124 @param pWdiReq : pointer to get batch scan ind param
30125 @see
30126 @return SUCCESS or FAIL
30127*/
30128WDI_Status WDI_TriggerBatchScanResultInd
30129(
30130 WDI_TriggerBatchScanResultIndType *pWdiReq
30131)
30132{
30133 WDI_EventInfoType wdiEventData;
30134 /*-------------------------------------------------------------------------
30135 Sanity Check
30136 ------------------------------------------------------------------------*/
30137 if (eWLAN_PAL_FALSE == gWDIInitialized)
30138 {
30139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30140 "WDI API call before module is initialized - Fail request!");
30141
30142 return WDI_STATUS_E_NOT_ALLOWED;
30143 }
30144
30145 /*-------------------------------------------------------------------------
30146 Fill in Event data and post to the Main FSM
30147 ------------------------------------------------------------------------*/
30148 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30149 wdiEventData.pEventData = pWdiReq;
30150 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30151 wdiEventData.pCBfnc = NULL;
30152 wdiEventData.pUserData = NULL;
30153
30154 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30155}
Rajeev79dbe4c2013-10-05 11:03:42 +053030156#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030157
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030158/**
30159 @brief Process Update Channel Rsp function (called when a response is
30160 being received over the bus from HAL)
30161
30162 @param pWDICtx: pointer to the WLAN DAL context
30163 pEventData: pointer to the event information structure
30164
30165 @see
30166 @return Result of the function call
30167*/
30168WDI_Status
30169WDI_ProcessUpdateChanRsp
30170(
30171 WDI_ControlBlockType* pWDICtx,
30172 WDI_EventInfoType* pEventData
30173)
30174{
30175 WDI_Status wdiStatus;
30176 eHalStatus halStatus;
30177 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30179
30180 /*-------------------------------------------------------------------------
30181 Sanity check
30182 -------------------------------------------------------------------------*/
30183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30184 ( NULL == pEventData->pEventData))
30185 {
30186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30187 "%s: Invalid parameters", __func__);
30188 WDI_ASSERT(0);
30189 return WDI_STATUS_E_FAILURE;
30190 }
30191
30192 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30193
30194 /*-------------------------------------------------------------------------
30195 Extract response and send it to UMAC
30196 -------------------------------------------------------------------------*/
30197 halStatus = *((eHalStatus*)pEventData->pEventData);
30198 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30199
30200 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30201
30202 return WDI_STATUS_SUCCESS;
30203}/*WDI_ProcessUpdateChanRsp*/
30204
Leo Chang0b0e45a2013-12-15 15:18:55 -080030205#ifdef FEATURE_WLAN_CH_AVOID
30206/**
30207 @brief v -WDI_ProcessChAvoidInd
30208
30209
30210 @param pWDICtx : wdi context
30211 pEventData : indication data
30212 @see
30213 @return Result of the function call
30214*/
30215WDI_Status
30216WDI_ProcessChAvoidInd
30217(
30218 WDI_ControlBlockType* pWDICtx,
30219 WDI_EventInfoType* pEventData
30220)
30221{
30222 WDI_LowLevelIndType wdiInd;
30223 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30224 wpt_uint16 rangeLoop;
30225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30226
30227 /*-------------------------------------------------------------------------
30228 Sanity check
30229 -------------------------------------------------------------------------*/
30230 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30231 (NULL == pEventData->pEventData))
30232 {
30233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30234 "%s: Invalid parameters", __func__);
30235 WDI_ASSERT(0);
30236 return WDI_STATUS_E_FAILURE;
30237 }
30238
30239 /*-------------------------------------------------------------------------
30240 Extract indication and send it to UMAC
30241 -------------------------------------------------------------------------*/
30242 wpalMemoryCopy(&chAvoidIndicationParam,
30243 pEventData->pEventData,
30244 sizeof(tHalAvoidFreqRangeIndParams));
30245
30246 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30247 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30248 chAvoidIndicationParam.avoidCnt;
30249 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30250 (void *)chAvoidIndicationParam.avoidRange,
30251 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30252 sizeof(WDI_ChAvoidFreqType));
30253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30254 "%s: band count %d", __func__,
30255 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30256 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30257 {
30258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30259 "%s: srart freq %d, end freq %d", __func__,
30260 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30261 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30262 }
30263
30264 /*Notify UMAC*/
30265 if (pWDICtx->wdiLowLevelIndCB)
30266 {
30267 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30268 }
30269
30270 return WDI_STATUS_SUCCESS;
30271}
30272#endif /* FEATURE_WLAN_CH_AVOID */
30273
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030274/**
30275 @brief Process OBSS Start scan result indication
30276
30277 @param pWDICtx: pointer to the WLAN DAL context
30278 pEventData: pointer to the event information structure
30279
30280 @see
30281 @return Result of the function call
30282*/
30283WDI_Status
30284WDI_ProcessHT40OBSSScanInd
30285(
30286 WDI_ControlBlockType* pWDICtx,
30287 WDI_EventInfoType* pEventData
30288)
30289{
30290 wpt_uint8* pSendBuffer = NULL;
30291 wpt_uint16 usDataOffset = 0;
30292 wpt_uint16 usSendSize = 0;
30293 wpt_uint16 usLen = 0;
30294 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30295 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30296 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30297 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30298
30299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30300
30301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30302 "%s", __func__);
30303
30304 /*-------------------------------------------------------------------------
30305 Sanity check
30306 -------------------------------------------------------------------------*/
30307 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30308 {
30309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30310 "%s: Invalid parameters", __func__);
30311 WDI_ASSERT(0);
30312 return WDI_STATUS_E_FAILURE;
30313 }
30314 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30315
30316 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30317 /*-----------------------------------------------------------------------
30318 Get message buffer
30319 -----------------------------------------------------------------------*/
30320
30321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30322 WDI_START_HT40_OBSS_SCAN_IND,
30323 sizeof(tHT40ObssScanIndType),
30324 &pSendBuffer, &usDataOffset, &usSendSize))||
30325 ( usSendSize < (usDataOffset + usLen )))
30326 {
30327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30328 "Unable to get send buffer in HT40 OBSS Start req %p ",
30329 pEventData);
30330 WDI_ASSERT(0);
30331 return WDI_STATUS_E_FAILURE;
30332 }
30333 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30334 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30335 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30336 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30337 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30338 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30339 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30340 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30341 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30342 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30343 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30344 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30345 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30346 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30347 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30348 pHT40ObssScanInd->OBSSScanActivityThreshold =
30349 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30350 pHT40ObssScanInd->selfStaIdx =
30351 pwdiHT40OBSSScanInd->selfStaIdx;
30352 pHT40ObssScanInd->bssIdx =
30353 pwdiHT40OBSSScanInd->bssIdx;
30354 pHT40ObssScanInd->fortyMHZIntolerent =
30355 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30356 pHT40ObssScanInd->channelCount =
30357 pwdiHT40OBSSScanInd->channelCount;
30358
30359 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30360 WDI_ROAM_SCAN_MAX_CHANNELS);
30361 pHT40ObssScanInd->ieFieldLen =
30362 pwdiHT40OBSSScanInd->ieFieldLen;
30363
30364 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30365 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30366 pWDICtx->pReqStatusUserData = NULL;
30367 pWDICtx->pfncRspCB = NULL;
30368
30369 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30370 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30371
30372 /*-------------------------------------------------------------------------
30373 Send OBSS Start Indication to HAL
30374 -------------------------------------------------------------------------*/
30375 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30376 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30377
30378} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30379
30380
30381/**
30382 @brief wdi_HT40OBSSScanInd
30383 This API is called to start OBSS scan
30384
30385 @param pWdiReq : pointer to get ind param
30386 @see
30387 @return SUCCESS or FAIL
30388*/
30389WDI_Status WDI_HT40OBSSScanInd
30390(
30391 WDI_HT40ObssScanParamsType *pWdiReq
30392)
30393{
30394 WDI_EventInfoType wdiEventData;
30395
30396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30397 "%s", __func__);
30398 /*-------------------------------------------------------------------------
30399 Sanity Check
30400 ------------------------------------------------------------------------*/
30401 if (eWLAN_PAL_FALSE == gWDIInitialized)
30402 {
30403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30404 "WDI API call before module is initialized - Fail request!");
30405
30406 return WDI_STATUS_E_NOT_ALLOWED;
30407 }
30408
30409 /*-------------------------------------------------------------------------
30410 Fill in Event data and post to the Main FSM
30411 ------------------------------------------------------------------------*/
30412 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30413 wdiEventData.pEventData = pWdiReq;
30414 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30415 wdiEventData.pCBfnc = NULL;
30416 wdiEventData.pUserData = NULL;
30417
30418
30419 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30420}
30421
30422/**
30423 @brief Process OBSS Stop scan result
30424
30425 @param pWDICtx: pointer to the WLAN DAL context
30426 pEventData: pointer to the event information structure
30427
30428 @see
30429 @return Result of the function call
30430*/
30431WDI_Status
30432WDI_ProcessHT40OBSSStopScanInd
30433(
30434 WDI_ControlBlockType* pWDICtx,
30435 WDI_EventInfoType* pEventData
30436)
30437{
30438 wpt_uint8* pSendBuffer = NULL;
30439 wpt_uint16 usDataOffset = 0;
30440 wpt_uint16 usSendSize = 0;
30441 wpt_uint16 usLen = 0;
30442 wpt_uint8 *wdiBssIdx = 0;
30443 tANI_U8 *bssIdx = 0;
30444 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30445
30446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30447
30448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30449 "%s", __func__);
30450
30451 /*-------------------------------------------------------------------------
30452 Sanity check
30453 -------------------------------------------------------------------------*/
30454 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30455 {
30456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30457 "%s: Invalid parameters", __func__);
30458 WDI_ASSERT(0);
30459 return WDI_STATUS_E_FAILURE;
30460 }
30461 bssIdx = (wpt_uint8*)pEventData->pEventData;
30462 /*-----------------------------------------------------------------------
30463 Get message buffer
30464 -----------------------------------------------------------------------*/
30465
30466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30467 WDI_STOP_HT40_OBSS_SCAN_IND,
30468 sizeof(tANI_U8),
30469 &pSendBuffer, &usDataOffset, &usSendSize))||
30470 ( usSendSize < (usDataOffset + usLen )))
30471 {
30472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30473 "Unable to get send buffer in HT40 OBSS Start req %p ",
30474 pEventData);
30475 WDI_ASSERT(0);
30476 return WDI_STATUS_E_FAILURE;
30477 }
30478
30479 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30480 bssIdx = wdiBssIdx;
30481
30482 pWDICtx->pReqStatusUserData = NULL;
30483 pWDICtx->pfncRspCB = NULL;
30484
30485 /*-------------------------------------------------------------------------
30486 Send DHCP Start Indication to HAL
30487 -------------------------------------------------------------------------*/
30488 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30489 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30490} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30491
30492/**
30493 @brief WDI_HT40OBSSStopScanInd
30494 This API is called to start OBSS scan
30495 @param pWdiReq : pointer to get ind param
30496 @see
30497 @return SUCCESS or FAIL
30498*/
30499WDI_Status WDI_HT40OBSSStopScanInd
30500(
30501 wpt_uint8 bssIdx
30502)
30503{
30504 WDI_EventInfoType wdiEventData;
30505
30506 /*-------------------------------------------------------------------------
30507 Sanity Check
30508 ------------------------------------------------------------------------*/
30509 if (eWLAN_PAL_FALSE == gWDIInitialized)
30510 {
30511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30512 "WDI API call before module is initialized - Fail request!");
30513
30514 return WDI_STATUS_E_NOT_ALLOWED;
30515 }
30516
30517 /*-------------------------------------------------------------------------
30518 Fill in Event data and post to the Main FSM
30519 ------------------------------------------------------------------------*/
30520 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30521 wdiEventData.pEventData = &bssIdx;
30522 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30523 wdiEventData.pCBfnc = NULL;
30524 wdiEventData.pUserData = NULL;
30525
30526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30527}
30528
c_hpothu86041002014-04-14 19:06:51 +053030529WDI_Status
30530WDI_printRegInfo
30531(
30532 WDI_ControlBlockType* pWDICtx,
30533 WDI_EventInfoType* pEventData
30534)
30535{
30536 tHalRegDebugInfo *pRegTable;
30537 tHalRegDebugInfoParams *pRegParams;
30538 uint32 cnt=0;
30539
30540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30541 "%s: ", __func__);
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 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30555
30556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30557 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30558 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30559
30560 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30561
30562 if (pRegParams->regCount <= 0)
30563 {
30564 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30565 "%s incorrect parameters passed", __func__);
30566 return WDI_STATUS_E_FAILURE;
30567 }
30568
30569 while(pRegParams->regCount--)
30570 {
30571 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30572 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30573 cnt++;
30574 }
30575
30576 return WDI_STATUS_SUCCESS;
30577}
c_hpothu92367912014-05-01 15:18:17 +053030578
30579/*
30580 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30581 * send the response to PE with beacon miss count
30582 * received from WDI.
30583 */
30584WDI_Status
30585WDI_ProcessGetBcnMissRateRsp
30586(
30587 WDI_ControlBlockType* pWDICtx,
30588 WDI_EventInfoType* pEventData
30589)
30590{
30591 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30592 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30593
30594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30595 "In %s",__func__);
30596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30597
30598 /*-------------------------------------------------------------------------
30599 Sanity check
30600 -------------------------------------------------------------------------*/
30601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30602 ( NULL == pEventData->pEventData))
30603 {
30604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30605 "%s: Invalid parameters", __func__);
30606 WDI_ASSERT(0);
30607 return WDI_STATUS_E_FAILURE;
30608 }
30609
30610 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30611 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30612
30613 /*Notify UMAC*/
30614 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30615 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30616 return WDI_STATUS_SUCCESS;
30617}
30618
30619/*
30620 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30621 * Request to WDI to get missed beacon rate.
30622 */
30623WDI_Status
30624WDI_ProcessGetBcnMissRateReq
30625(
30626 WDI_ControlBlockType* pWDICtx,
30627 WDI_EventInfoType* pEventData
30628)
30629{
30630 wpt_uint8* pSendBuffer = NULL;
30631 wpt_uint16 usDataOffset = 0;
30632 wpt_uint16 usSendSize = 0;
30633 wpt_uint8 ucCurrentBSSSesIdx = 0;
30634 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053030635 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30636 tHalBcnMissRateReqParams halBcnMissRateReq;
30637
30638/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30639
30640 /*-------------------------------------------------------------------------
30641 Sanity check
30642 -------------------------------------------------------------------------*/
30643 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30644 ( NULL == pEventData->pCBfnc ) )
30645 {
30646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30647 "%s: Invalid parameters", __func__);
30648 WDI_ASSERT(0);
30649 return WDI_STATUS_E_FAILURE;
30650 }
30651
30652 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30653
30654 wpalMutexAcquire(&pWDICtx->wptMutex);
30655
30656 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30657 pEventData->pEventData, &pBSSSes);
30658 if ( NULL == pBSSSes )
30659 {
30660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30661 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053030662 MAC_ADDRESS_STR, __func__,
30663 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053030664 wpalMutexRelease(&pWDICtx->wptMutex);
30665 return WDI_STATUS_E_NOT_ALLOWED;
30666 }
30667 wpalMutexRelease(&pWDICtx->wptMutex);
30668
30669 /*-----------------------------------------------------------------------
30670 Get message buffer
30671 -----------------------------------------------------------------------*/
30672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30673 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30674 sizeof(tHalBcnMissRateReqParams),
30675 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30676 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30677 {
30678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30679 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30680 pEventData);
30681 WDI_ASSERT(0);
30682 return WDI_STATUS_E_FAILURE;
30683 }
30684
30685 pWDICtx->wdiReqStatusCB = NULL;
30686 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30687
30688 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30689
30690 wpalMemoryCopy( pSendBuffer+usDataOffset,
30691 &halBcnMissRateReq,
30692 sizeof(tHalBcnMissRateReqParams));
30693 /*-------------------------------------------------------------------------
30694 Send Get STA Request to HAL
30695 -------------------------------------------------------------------------*/
30696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30697 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30698}
30699
30700/**
30701 @brief WDI_GetBcnMissRate
30702
30703 @param pUserData: user data will be passed back with the
30704 callback
30705 WDI_GetBcnMissRateCb: callback for passing back the response
30706 of the get stats operation received from the device
30707 bssid: bssid, to send bssIdx to FW
30708
30709 @return SUCCESS or FAIL
30710*/
30711WDI_Status WDI_GetBcnMissRate( void *pUserData,
30712 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30713 tANI_U8 *bssid )
30714{
30715 WDI_EventInfoType wdiEventData;
30716
30717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30718
30719 /*------------------------------------------------------------------------
30720 Sanity Check
30721 ------------------------------------------------------------------------*/
30722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30723 {
30724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30725 "WDI API call before module is initialized - Fail request");
30726
30727 return WDI_STATUS_E_NOT_ALLOWED;
30728 }
30729
30730 /*------------------------------------------------------------------------
30731 Fill in Event data and post to the Main FSM
30732 ------------------------------------------------------------------------*/
30733 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30734 wdiEventData.pEventData = bssid;
30735 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30736 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30737 wdiEventData.pUserData = pUserData;
30738
30739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30740}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030741#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30742
30743/**
30744 @brief WDI_LLStatsSetReq
30745 This API is called to set link layer stats request in FW
30746
30747 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30748 wdiLLStatsSetRspCb : set link layer stats resp callback
30749 usrData : Client context
30750 @see
30751 @return SUCCESS or FAIL
30752*/
30753WDI_Status
30754WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30755 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30756 void* pUserData)
30757{
30758 WDI_EventInfoType wdiEventData;
30759
30760 /*------------------------------------------------------------------------
30761 Sanity Check
30762 ------------------------------------------------------------------------*/
30763 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30764 {
30765 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30766 "WDI API call before module is initialized - Fail request");
30767
30768 return WDI_STATUS_E_NOT_ALLOWED;
30769 }
30770
30771 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30772 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30773 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30774 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30775 wdiEventData.pUserData = pUserData;
30776
30777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30778}
30779
30780/**
30781 @brief WDI_ProcessLLStatsSetReq -
30782 Set Link Layer Stats request to FW
30783
30784 @param pWDICtx : wdi context
30785 pEventData : indication data
30786
30787 @see
30788 @return none
30789*/
30790WDI_Status
30791WDI_ProcessLLStatsSetReq
30792(
30793 WDI_ControlBlockType* pWDICtx,
30794 WDI_EventInfoType* pEventData
30795)
30796{
30797 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30798 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30799 wpt_uint8* pSendBuffer = NULL;
30800 wpt_uint16 usSendSize = 0;
30801 wpt_uint16 usDataOffset = 0;
30802 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30803
30804 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30805 ( NULL == pEventData->pCBfnc ))
30806 {
30807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30808 "%s: Invalid parameters", __func__);
30809 WDI_ASSERT(0);
30810 return WDI_STATUS_E_FAILURE;
30811 }
30812
30813 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30814 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30815
30816 /*-----------------------------------------------------------------------
30817 Get message buffer
30818 ! TO DO : proper conversion into the HAL Message Request Format
30819 -----------------------------------------------------------------------*/
30820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30821 pWDICtx,
30822 WDI_LL_STATS_SET_REQ,
30823 sizeof(tHalMacLlSetStatsReqParams),
30824 &pSendBuffer, &usDataOffset,
30825 &usSendSize))||
30826 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30827 {
30828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30829 "Unable to get send buffer in %s %p %p %p", __func__,
30830 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30831 WDI_ASSERT(0);
30832 return WDI_STATUS_E_FAILURE;
30833 }
30834
30835
30836
30837 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
30838 halLLStatsSetParams.sta_id = pwdiLLStatsSetReqParams->staId;
30839 halLLStatsSetParams.mpdu_size_threshold =
30840 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30841 halLLStatsSetParams.aggressive_statistics_gathering =
30842 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30843
30844 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30845 " halLLStatsSetParams.req_id = %u",
30846 halLLStatsSetParams.req_id);
30847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30848 " halLLStatsSetParams.sta_id = %u",
30849 halLLStatsSetParams.sta_id);
30850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30851 " halLLStatsSetParams.mpdu_size_threshold = %u",
30852 halLLStatsSetParams.mpdu_size_threshold);
30853 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30854 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30855 halLLStatsSetParams.aggressive_statistics_gathering);
30856
30857 wpalMemoryCopy(pSendBuffer+usDataOffset,
30858 &halLLStatsSetParams,
30859 sizeof(halLLStatsSetParams));
30860
30861 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30862
30863 /*-------------------------------------------------------------------------
30864 Send Clear Link Layer Stats Request to HAL
30865 -------------------------------------------------------------------------*/
30866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30867 wdiLLStatsSetCb, pEventData->pUserData,
30868 WDI_LL_STATS_SET_RSP);
30869}
30870
30871/**
30872 @brief WDI_LLStatsGetReq
30873 This API is called to get link layer stats request in FW
30874
30875 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30876 wdiLLStatsGetRspCb : get link layer stats resp callback
30877 usrData : Client context
30878 @see
30879 @return SUCCESS or FAIL
30880*/
30881WDI_Status
30882WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30883 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30884 void* pUserData)
30885{
30886 WDI_EventInfoType wdiEventData;
30887
30888 /*------------------------------------------------------------------------
30889 Sanity Check
30890 ------------------------------------------------------------------------*/
30891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30892 {
30893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30894 "WDI API call before module is initialized - Fail request");
30895
30896 return WDI_STATUS_E_NOT_ALLOWED;
30897 }
30898
30899 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30900 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30901 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30902 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30903 wdiEventData.pUserData = pUserData;
30904
30905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30906}
30907
30908/**
30909 @brief WDI_ProcessLLStatsGetReq -
30910 Get Link Layer Stats request to FW
30911
30912 @param pWDICtx : wdi context
30913 pEventData : indication data
30914
30915 @see
30916 @return none
30917*/
30918WDI_Status
30919WDI_ProcessLLStatsGetReq
30920(
30921 WDI_ControlBlockType* pWDICtx,
30922 WDI_EventInfoType* pEventData
30923)
30924{
30925 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30926 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30927 wpt_uint8* pSendBuffer = NULL;
30928 wpt_uint16 usSendSize = 0;
30929 wpt_uint16 usDataOffset = 0;
30930 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30931
30932 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30933 ( NULL == pEventData->pCBfnc ))
30934 {
30935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30936 "%s: Invalid parameters", __func__);
30937 WDI_ASSERT(0);
30938 return WDI_STATUS_E_FAILURE;
30939 }
30940
30941 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30942 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30943
30944 /*-----------------------------------------------------------------------
30945 Get message buffer
30946 ! TO DO : proper conversion into the HAL Message Request Format
30947 -----------------------------------------------------------------------*/
30948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30949 pWDICtx,
30950 WDI_LL_STATS_GET_REQ,
30951 sizeof(tHalMacLlGetStatsReqParams),
30952 &pSendBuffer, &usDataOffset,
30953 &usSendSize))||
30954 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30955 {
30956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30957 "Unable to get send buffer in %s %p %p %p", __func__,
30958 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30959 WDI_ASSERT(0);
30960 return WDI_STATUS_E_FAILURE;
30961 }
30962
30963 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
30964 halLLStatsGetParams.sta_id = pwdiLLStatsGetReqParams->staId;
30965 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
30966
30967 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30968 " halLLStatsGetParams.req_id = %u",
30969 halLLStatsGetParams.req_id);
30970 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30971 " halLLStatsGetParams.staId = %u",
30972 halLLStatsGetParams.sta_id);
30973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30974 " halLLStatsGetParams.Mask = %u",
30975 halLLStatsGetParams.param_id_mask);
30976
30977 wpalMemoryCopy(pSendBuffer+usDataOffset,
30978 &halLLStatsGetParams,
30979 sizeof(halLLStatsGetParams));
30980
30981 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30982
30983 /*-------------------------------------------------------------------------
30984 Send Clear Link Layer Stats Request to HAL
30985 -------------------------------------------------------------------------*/
30986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30987 wdiLLStatsGetCb, pEventData->pUserData,
30988 WDI_LL_STATS_GET_RSP);
30989}
30990
30991/**
30992 @brief WDI_LLStatsClearReq
30993 This API is called to clear link layer stats request in FW
30994
30995 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
30996 wdiLLStatsSetRspCb : clear link layer stats resp callback
30997 usrData : Client context
30998 @see
30999 @return SUCCESS or FAIL
31000*/
31001WDI_Status
31002WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31003 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31004 void* pUserData)
31005{
31006 WDI_EventInfoType wdiEventData;
31007
31008 /*------------------------------------------------------------------------
31009 Sanity Check
31010 ------------------------------------------------------------------------*/
31011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31012 {
31013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31014 "WDI API call before module is initialized - Fail request");
31015
31016 return WDI_STATUS_E_NOT_ALLOWED;
31017 }
31018
31019 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31020 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31021 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31022 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31023 wdiEventData.pUserData = pUserData;
31024
31025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31026 "%s:%d Enter", __func__, __LINE__);
31027
31028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31029}
31030
31031/**
31032 @brief WDI_ProcessLLStatsClearReq -
31033 Clear Link Layer Stats request to FW
31034
31035 @param pWDICtx : wdi context
31036 pEventData : indication data
31037
31038 @see
31039 @return none
31040*/
31041WDI_Status
31042WDI_ProcessLLStatsClearReq
31043(
31044 WDI_ControlBlockType* pWDICtx,
31045 WDI_EventInfoType* pEventData
31046)
31047{
31048 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31049 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31050 wpt_uint8* pSendBuffer = NULL;
31051 wpt_uint16 usSendSize = 0;
31052 wpt_uint16 usDataOffset = 0;
31053 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31054
31055 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31056 ( NULL == pEventData->pCBfnc ))
31057 {
31058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31059 "%s: Invalid parameters", __func__);
31060 WDI_ASSERT(0);
31061 return WDI_STATUS_E_FAILURE;
31062 }
31063
31064 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31065 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31066
31067 /*-----------------------------------------------------------------------
31068 Get message buffer
31069 ! TO DO : proper conversion into the HAL Message Request Format
31070 -----------------------------------------------------------------------*/
31071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31072 pWDICtx,
31073 WDI_LL_STATS_CLEAR_REQ,
31074 sizeof(tHalMacLlClearStatsReqParams),
31075 &pSendBuffer, &usDataOffset,
31076 &usSendSize))||
31077 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31078 {
31079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31080 "Unable to get send buffer in %s %p %p %p", __func__,
31081 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31082 WDI_ASSERT(0);
31083 return WDI_STATUS_E_FAILURE;
31084 }
31085
31086 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
31087 halLLStatsClearParams.sta_id = pwdiLLStatsClearReqParams->staId;
31088 halLLStatsClearParams.stats_clear_req_mask =
31089 pwdiLLStatsClearReqParams->statsClearReqMask;
31090 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31091
31092 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31093 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31094 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31095 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31096 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31097 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31098 halLLStatsClearParams.stats_clear_req_mask);
31099 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31100 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31101
31102 wpalMemoryCopy(pSendBuffer+usDataOffset,
31103 &halLLStatsClearParams,
31104 sizeof(halLLStatsClearParams));
31105
31106 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31107
31108 /*-------------------------------------------------------------------------
31109 Send Clear Link Layer Stats Request to HAL
31110 -------------------------------------------------------------------------*/
31111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31112 wdiLLStatsClearCb, pEventData->pUserData,
31113 WDI_LL_STATS_CLEAR_RSP);
31114}
31115#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031116
31117#ifdef WLAN_FEATURE_EXTSCAN
31118
31119/**
31120 @brief Process EXTSCAN BUffer full indication from FW
31121
31122 @param pWDICtx: pointer to the WLAN DAL context
31123 pEventData: pointer to the event information structure
31124
31125 @see
31126 @return Result of the function call
31127*/
31128WDI_Status
31129WDI_ProcessEXTScanProgressInd
31130(
31131 WDI_ControlBlockType* pWDICtx,
31132 WDI_EventInfoType* pEventData
31133)
31134{
31135 WDI_LowLevelIndType wdiInd;
31136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31137
31138 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31139 "%s: ", __func__);
31140
31141 /* sanity check */
31142 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31143 ( NULL == pEventData->pEventData))
31144 {
31145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31146 "%s: Invalid parameters", __func__);
31147 WDI_ASSERT(0);
31148 return WDI_STATUS_E_FAILURE;
31149 }
31150
31151 /* Fill in the indication parameters */
31152 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31153
31154 /* extract response and send it to UMAC */
31155 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31156
31157 /* Notify UMAC */
31158 if (pWDICtx->wdiLowLevelIndCB)
31159 {
31160 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31161 }
31162 else
31163 {
31164 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31165 "%s: WDILowLevelIndCb is null", __func__);
31166 WDI_ASSERT(0);
31167 return WDI_STATUS_E_FAILURE;
31168 }
31169 return WDI_STATUS_SUCCESS;
31170
31171} /* End of WDI_ProcessEXTScanProgressInd */
31172
31173
31174/**
31175 @brief Process EXTScan Scan Available indication from FW
31176
31177 @param pWDICtx: pointer to the WLAN DAL context
31178 pEventData: pointer to the event information structure
31179
31180 @see
31181 @return Result of the function call
31182*/
31183WDI_Status
31184WDI_ProcessEXTScanScanAvailableInd
31185(
31186 WDI_ControlBlockType* pWDICtx,
31187 WDI_EventInfoType* pEventData
31188)
31189{
31190 WDI_LowLevelIndType wdiInd;
31191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31192
31193 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31194 "%s: ", __func__);
31195
31196 /* sanity check */
31197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31198 ( NULL == pEventData->pEventData))
31199 {
31200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31201 "%s: Invalid parameters", __func__);
31202 WDI_ASSERT(0);
31203 return WDI_STATUS_E_FAILURE;
31204 }
31205
31206
31207
31208 /* Fill in the indication parameters */
31209 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31210
31211 /* extract response and send it to UMAC */
31212 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31213
31214 /* Notify UMAC */
31215 if (pWDICtx->wdiLowLevelIndCB)
31216 {
31217 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31218 }
31219 else
31220 {
31221 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31222 "%s: WDILowLevelIndCb is null", __func__);
31223 WDI_ASSERT(0);
31224 return WDI_STATUS_E_FAILURE;
31225 }
31226 return WDI_STATUS_SUCCESS;
31227} /* End of WDI_ProcessEXTScanScanDoneInd */
31228
31229/**
31230 @brief Process EXTScan Result Indication indication from FW
31231
31232 @param pWDICtx: pointer to the WLAN DAL context
31233 pEventData: pointer to the event information structure
31234
31235 @see
31236 @return Result of the function call
31237*/
31238WDI_Status
31239WDI_ProcessEXTScanResultInd
31240(
31241 WDI_ControlBlockType* pWDICtx,
31242 WDI_EventInfoType* pEventData
31243)
31244{
31245 WDI_LowLevelIndType wdiInd;
31246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31247
31248 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31249 "%s: ", __func__);
31250
31251 /* sanity check */
31252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31253 ( NULL == pEventData->pEventData))
31254 {
31255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31256 "%s: Invalid parameters", __func__);
31257 WDI_ASSERT(0);
31258 return WDI_STATUS_E_FAILURE;
31259 }
31260
31261 /* Fill in the indication parameters */
31262 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31263
31264 /* extract response and send it to UMAC */
31265 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31266
31267 /* Notify UMAC */
31268 if (pWDICtx->wdiLowLevelIndCB)
31269 {
31270 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31271 }
31272 else
31273 {
31274 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31275 "%s: WDILowLevelIndCb is null", __func__);
31276 WDI_ASSERT(0);
31277 return WDI_STATUS_E_FAILURE;
31278 }
31279 return WDI_STATUS_SUCCESS;
31280} /* End of WDI_ProcessEXTScanResultInd */
31281
31282/**
31283 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31284
31285 @param pWDICtx: pointer to the WLAN DAL context
31286 pEventData: pointer to the event information structure
31287
31288 @see
31289 @return Result of the function call
31290*/
31291WDI_Status
31292WDI_ProcessEXTScanBssidHotListResultInd
31293(
31294 WDI_ControlBlockType* pWDICtx,
31295 WDI_EventInfoType* pEventData
31296)
31297{
31298 WDI_LowLevelIndType wdiInd;
31299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31300
31301 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31302 "%s: ", __func__);
31303
31304 /* sanity check */
31305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31306 ( NULL == pEventData->pEventData))
31307 {
31308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31309 "%s: Invalid parameters", __func__);
31310 WDI_ASSERT(0);
31311 return WDI_STATUS_E_FAILURE;
31312 }
31313
31314 /* Fill in the indication parameters */
31315 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31316
31317 /* extract response and send it to UMAC */
31318 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31319
31320 /* Notify UMAC */
31321 if (pWDICtx->wdiLowLevelIndCB)
31322 {
31323 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31324 }
31325 else
31326 {
31327 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31328 "%s: WDILowLevelIndCb is null", __func__);
31329 WDI_ASSERT(0);
31330 return WDI_STATUS_E_FAILURE;
31331 }
31332 return WDI_STATUS_SUCCESS;
31333} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31334
31335/**
31336 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31337
31338 @param pWDICtx: pointer to the WLAN DAL context
31339 pEventData: pointer to the event information structure
31340
31341 @see
31342 @return Result of the function call
31343*/
31344WDI_Status
31345WDI_ProcessEXTScanSignfRssiResultInd
31346(
31347 WDI_ControlBlockType* pWDICtx,
31348 WDI_EventInfoType* pEventData
31349)
31350{
31351 WDI_LowLevelIndType wdiInd;
31352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31353
31354 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31355 "%s: ", __func__);
31356
31357 /* sanity check */
31358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31359 ( NULL == pEventData->pEventData))
31360 {
31361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31362 "%s: Invalid parameters", __func__);
31363 WDI_ASSERT(0);
31364 return WDI_STATUS_E_FAILURE;
31365 }
31366
31367 /* Fill in the indication parameters */
31368 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
31369
31370 /* extract response and send it to UMAC */
31371 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31372
31373 /* Notify UMAC */
31374 if (pWDICtx->wdiLowLevelIndCB)
31375 {
31376 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31377 }
31378 else
31379 {
31380 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31381 "%s: WDILowLevelIndCb is null", __func__);
31382 WDI_ASSERT(0);
31383 return WDI_STATUS_E_FAILURE;
31384 }
31385 return WDI_STATUS_SUCCESS;
31386} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
31387
31388/**
31389 @brief WDI_EXTScanGetCapabilitiesReq
31390
31391 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
31392 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
31393 of the Req operation received from the device
31394 pUserData: user data will be passed back with the callback
31395
31396 @return SUCCESS or FAIL
31397*/
31398WDI_Status
31399WDI_EXTScanGetCapabilitiesReq(
31400 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
31401 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
31402 void* pUserData)
31403{
31404 WDI_EventInfoType wdiEventData;
31405
31406 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31407 "%s: %d ",__func__, __LINE__);
31408 /*------------------------------------------------------------------------
31409 Sanity Check
31410 ------------------------------------------------------------------------*/
31411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31412 {
31413 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31414 "WDI API call before module is initialized - Fail request");
31415
31416 return WDI_STATUS_E_NOT_ALLOWED;
31417 }
31418
31419 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
31420 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
31421 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
31422 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
31423 wdiEventData.pUserData = pUserData;
31424
31425 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31426}
31427
31428/**
31429 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
31430 Extended Scan Get Capability request to FW
31431
31432 @param pWDICtx : wdi context
31433 pEventData : indication data
31434
31435 @see
31436 @return none
31437*/
31438WDI_Status
31439WDI_ProcessEXTScanGetCapabilitiesReq
31440(
31441 WDI_ControlBlockType* pWDICtx,
31442 WDI_EventInfoType* pEventData
31443)
31444{
31445 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
31446 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
31447 wpt_uint8* pSendBuffer = NULL;
31448 wpt_uint16 usSendSize = 0;
31449 wpt_uint16 usDataOffset = 0;
31450 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
31451
31452 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31453 "%s: %d Enter",__func__, __LINE__);
31454
31455 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31456 ( NULL == pEventData->pCBfnc ))
31457 {
31458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31459 "%s: Invalid parameters", __func__);
31460 WDI_ASSERT(0);
31461 return WDI_STATUS_E_FAILURE;
31462 }
31463
31464 pwdiEXTScanGetCapabilitiesReqParams =
31465 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
31466 wdiEXTScanGetCapabilitiesRspCb =
31467 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
31468
31469 /*-----------------------------------------------------------------------
31470 Get message buffer
31471 ! TO DO : proper conversion into the HAL Message Request Format
31472 -----------------------------------------------------------------------*/
31473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31474 pWDICtx,
31475 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
31476 sizeof(halEXTScanGetCapReqParams),
31477 &pSendBuffer, &usDataOffset,
31478 &usSendSize))||
31479 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
31480 {
31481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31482 "Unable to get send buffer in %s %p %p %p", __func__,
31483 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
31484 wdiEXTScanGetCapabilitiesRspCb);
31485 WDI_ASSERT(0);
31486 return WDI_STATUS_E_FAILURE;
31487 }
31488
31489 halEXTScanGetCapReqParams.requestId =
31490 pwdiEXTScanGetCapabilitiesReqParams->requestId;
31491 halEXTScanGetCapReqParams.sessionId =
31492 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
31493
31494 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31495 " requestId %u "
31496 " sessionId %u ",
31497 halEXTScanGetCapReqParams.requestId,
31498 halEXTScanGetCapReqParams.sessionId);
31499
31500 wpalMemoryCopy(pSendBuffer+usDataOffset,
31501 &halEXTScanGetCapReqParams,
31502 sizeof(halEXTScanGetCapReqParams));
31503
31504 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31505
31506
31507 /*-------------------------------------------------------------------------
31508 Send EXTScan Stop Request to HAL
31509 -------------------------------------------------------------------------*/
31510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31511 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
31512 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
31513}
31514
31515/**
31516 @brief WDI_EXTScanGetCachedResultsReq
31517
31518 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
31519 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
31520 of the Req operation received from the device
31521 pUserData: user data will be passed back with the callback
31522
31523 @return SUCCESS or FAIL
31524*/
31525
31526WDI_Status
31527WDI_EXTScanGetCachedResultsReq(
31528 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
31529 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
31530 void* pUserData)
31531{
31532 WDI_EventInfoType wdiEventData;
31533
31534 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31535 "%s: %d Enter",__func__, __LINE__);
31536 /*------------------------------------------------------------------------
31537 Sanity Check
31538 ------------------------------------------------------------------------*/
31539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31540 {
31541 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31542 "WDI API call before module is initialized - Fail request");
31543
31544 return WDI_STATUS_E_NOT_ALLOWED;
31545 }
31546
31547 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
31548 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
31549 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
31550 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
31551 wdiEventData.pUserData = pUserData;
31552
31553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31554}
31555
31556/**
31557 @brief WDI_ProcessEXTScanGetCachedResultsReq -
31558 Extended Scan Get Cached Result request to FW
31559
31560 @param pWDICtx : wdi context
31561 pEventData : indication data
31562
31563 @see
31564 @return none
31565*/
31566WDI_Status
31567WDI_ProcessEXTScanGetCachedResultsReq
31568(
31569 WDI_ControlBlockType* pWDICtx,
31570 WDI_EventInfoType* pEventData
31571)
31572{
31573 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
31574 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
31575 wpt_uint8* pSendBuffer = NULL;
31576 wpt_uint16 usSendSize = 0;
31577 wpt_uint16 usDataOffset = 0;
31578 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
31579
31580 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31581 "%s: %d Enter",__func__, __LINE__);
31582
31583 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31584 ( NULL == pEventData->pCBfnc ))
31585 {
31586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31587 "%s: Invalid parameters", __func__);
31588 WDI_ASSERT(0);
31589 return WDI_STATUS_E_FAILURE;
31590 }
31591
31592 pwdiEXTScanGetCachedResultsReqParams =
31593 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
31594 wdiEXTScanGetCachedResultsCb =
31595 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
31596
31597 /*-----------------------------------------------------------------------
31598 Get message buffer
31599 ! TO DO : proper conversion into the HAL Message Request Format
31600 -----------------------------------------------------------------------*/
31601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31602 pWDICtx,
31603 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
31604 sizeof(tHalExtScanGetScanReq),
31605 &pSendBuffer, &usDataOffset,
31606 &usSendSize))||
31607 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
31608 {
31609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31610 "Unable to get send buffer in %s %p %p %p", __func__,
31611 pEventData, pwdiEXTScanGetCachedResultsReqParams,
31612 wdiEXTScanGetCachedResultsCb);
31613 WDI_ASSERT(0);
31614 return WDI_STATUS_E_FAILURE;
31615 }
31616
31617 halEXTScanGetScanReqParams.requestId =
31618 pwdiEXTScanGetCachedResultsReqParams->requestId;
31619 halEXTScanGetScanReqParams.sessionId =
31620 pwdiEXTScanGetCachedResultsReqParams->sessionId;
31621 halEXTScanGetScanReqParams.flush =
31622 pwdiEXTScanGetCachedResultsReqParams->flush;
31623
31624 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31625 " requestId %u "
31626 " sessionId %u "
31627 " flush %u ",
31628 halEXTScanGetScanReqParams.requestId,
31629 halEXTScanGetScanReqParams.sessionId,
31630 halEXTScanGetScanReqParams.flush);
31631
31632 wpalMemoryCopy(pSendBuffer+usDataOffset,
31633 &halEXTScanGetScanReqParams,
31634 sizeof(halEXTScanGetScanReqParams));
31635
31636 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31637
31638
31639 /*-------------------------------------------------------------------------
31640 Send EXTScan Stop Request to HAL
31641 -------------------------------------------------------------------------*/
31642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31643 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
31644 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
31645}
31646
31647/**
31648 @brief WDI_EXTScanStopReq
31649
31650 @param WDI_EXTScanStopReqParams: Req parameter for the FW
31651 WDI_EXTScanStopRspCb: callback for passing back the response
31652 of the Req operation received from the device
31653 pUserData: user data will be passed back with the callback
31654
31655 @return SUCCESS or FAIL
31656*/
31657WDI_Status
31658WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
31659 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
31660 void* pUserData)
31661{
31662 WDI_EventInfoType wdiEventData;
31663
31664 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31665 "%s: %d ",__func__, __LINE__);
31666 /*------------------------------------------------------------------------
31667 Sanity Check
31668 ------------------------------------------------------------------------*/
31669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31670 {
31671 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31672 "WDI API call before module is initialized - Fail request");
31673
31674 return WDI_STATUS_E_NOT_ALLOWED;
31675 }
31676
31677 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
31678 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
31679 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
31680 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
31681 wdiEventData.pUserData = pUserData;
31682
31683 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31684}
31685
31686/**
31687 @brief WDI_ProcessEXTScanStopReq -
31688 Extended Scan Stop request to FW
31689
31690 @param pWDICtx : wdi context
31691 pEventData : indication data
31692
31693 @see
31694 @return none
31695*/
31696WDI_Status
31697WDI_ProcessEXTScanStopReq
31698(
31699 WDI_ControlBlockType* pWDICtx,
31700 WDI_EventInfoType* pEventData
31701)
31702{
31703 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
31704 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
31705 wpt_uint8* pSendBuffer = NULL;
31706 wpt_uint16 usSendSize = 0;
31707 wpt_uint16 usDataOffset = 0;
31708 tHalExtScanStopReq halEXTScanStopReqParams;
31709
31710 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31711 "%s: %d ",__func__, __LINE__);
31712
31713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31714 ( NULL == pEventData->pCBfnc ))
31715 {
31716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31717 "%s: Invalid parameters", __func__);
31718 WDI_ASSERT(0);
31719 return WDI_STATUS_E_FAILURE;
31720 }
31721
31722 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
31723 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
31724
31725 /*-----------------------------------------------------------------------
31726 Get message buffer
31727 ! TO DO : proper conversion into the HAL Message Request Format
31728 -----------------------------------------------------------------------*/
31729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31730 pWDICtx,
31731 WDI_EXTSCAN_STOP_REQ,
31732 sizeof(tHalExtScanStopReq),
31733 &pSendBuffer, &usDataOffset,
31734 &usSendSize))||
31735 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
31736 {
31737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31738 "Unable to get send buffer in %s %p %p %p", __func__,
31739 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
31740 WDI_ASSERT(0);
31741 return WDI_STATUS_E_FAILURE;
31742 }
31743
31744 halEXTScanStopReqParams.requestId =
31745 pwdiEXTScanStopReqParams->requestId;
31746 halEXTScanStopReqParams.sessionId =
31747 pwdiEXTScanStopReqParams->sessionId;
31748
31749 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31750 " halEXTScanStopReqParams.requestId %u "
31751 " halEXTScanStopReqParams.sessionId %u ",
31752 halEXTScanStopReqParams.requestId,
31753 halEXTScanStopReqParams.sessionId);
31754
31755 wpalMemoryCopy(pSendBuffer+usDataOffset,
31756 &halEXTScanStopReqParams,
31757 sizeof(halEXTScanStopReqParams));
31758
31759 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31760
31761
31762 /*-------------------------------------------------------------------------
31763 Send EXTScan Stop Request to HAL
31764 -------------------------------------------------------------------------*/
31765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31766 wdiEXTScanStopCb, pEventData->pUserData,
31767 WDI_EXTSCAN_STOP_RSP);
31768}
31769
31770/**
31771 @brief WDI_EXTScanStartReq
31772
31773 @param WDI_EXTScanStartReqParams: Req parameter for the FW
31774 WDI_EXTScanStartRspCb: callback for passing back the response
31775 of the Req operation received from the device
31776 pUserData: user data will be passed back with the callback
31777
31778 @return SUCCESS or FAIL
31779*/
31780WDI_Status
31781WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
31782 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
31783 void* pUserData)
31784{
31785 WDI_EventInfoType wdiEventData;
31786
31787 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31788 "%s: %d Enter",__func__, __LINE__);
31789 /*------------------------------------------------------------------------
31790 Sanity Check
31791 ------------------------------------------------------------------------*/
31792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31793 {
31794 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31795 "WDI API call before module is initialized - Fail request");
31796
31797 return WDI_STATUS_E_NOT_ALLOWED;
31798 }
31799
31800 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
31801 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
31802 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
31803 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
31804 wdiEventData.pUserData = pUserData;
31805
31806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31807}
31808
31809/**
31810 @brief WDI_ProcessEXTScanStartReq -
31811 Extended Scan Start Request to FW
31812
31813 @param pWDICtx : wdi context
31814 pEventData : indication data
31815
31816 @see
31817 @return none
31818*/
31819WDI_Status
31820WDI_ProcessEXTScanStartReq
31821(
31822 WDI_ControlBlockType* pWDICtx,
31823 WDI_EventInfoType* pEventData
31824)
31825{
31826 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
31827 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
31828 wpt_uint8* pSendBuffer = NULL;
31829 wpt_uint16 usSendSize = 0;
31830 wpt_uint16 usDataOffset = 0;
31831 tpHalExtScanStartReq pHalExtScanStartReqParams;
31832 int i = 0;
31833 int j = 0;
31834
31835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31836 "%s: %d Enter",__func__, __LINE__);
31837
31838 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31839 ( NULL == pEventData->pCBfnc ))
31840 {
31841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31842 "%s: Invalid parameters", __func__);
31843 WDI_ASSERT(0);
31844 return WDI_STATUS_E_FAILURE;
31845 }
31846
31847 pwdiEXTScanStartReqParams =
31848 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
31849 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
31850
31851 /*-----------------------------------------------------------------------
31852 Get message buffer
31853 ! TO DO : proper conversion into the HAL Message Request Format
31854 -----------------------------------------------------------------------*/
31855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31856 pWDICtx,
31857 WDI_EXTSCAN_START_REQ,
31858 sizeof(tHalExtScanStartReq),
31859 &pSendBuffer, &usDataOffset,
31860 &usSendSize))||
31861 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
31862 {
31863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31864 "Unable to get send buffer in %s %p %p %p", __func__,
31865 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
31866 WDI_ASSERT(0);
31867 return WDI_STATUS_E_FAILURE;
31868 }
31869
31870 pHalExtScanStartReqParams =
31871 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
31872
31873 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
31874 pHalExtScanStartReqParams->maxApPerScan =
31875 pwdiEXTScanStartReqParams->maxAPperScan;
31876 pHalExtScanStartReqParams->reportThreshold =
31877 pwdiEXTScanStartReqParams->reportThreshold;
31878 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
31879 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
31880 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
31881
31882 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
31883 {
31884 pHalExtScanStartReqParams->bucketData[i].bucketId =
31885 pwdiEXTScanStartReqParams->buckets[i].bucket;
31886 pHalExtScanStartReqParams->bucketData[i].channelBand =
31887 pwdiEXTScanStartReqParams->buckets[i].band;
31888 pHalExtScanStartReqParams->bucketData[i].period =
31889 pwdiEXTScanStartReqParams->buckets[i].period;
31890 pHalExtScanStartReqParams->bucketData[i].reportEvents =
31891 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
31892 pHalExtScanStartReqParams->bucketData[i].numChannels =
31893 pwdiEXTScanStartReqParams->buckets[i].numChannels;
31894
31895 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
31896 {
31897 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
31898 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
31899 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
31900 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
31901 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
31902 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
31903 }
31904
31905 }
31906
31907
31908 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31909 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
31910 " sessionId %u numBuckets%u ",
31911 pHalExtScanStartReqParams->basePeriod,
31912 pHalExtScanStartReqParams->maxApPerScan,
31913 pHalExtScanStartReqParams->reportThreshold,
31914 pHalExtScanStartReqParams->requestId,
31915 pHalExtScanStartReqParams->sessionId,
31916 pHalExtScanStartReqParams->numBuckets);
31917
31918 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
31919 {
31920 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
31921 " %d) bucketId %u channelBand %u period %u "
31922 " reportEvents %u numChannels %u ",i,
31923 pHalExtScanStartReqParams->bucketData[i].bucketId,
31924 pHalExtScanStartReqParams->bucketData[i].channelBand,
31925 pHalExtScanStartReqParams->bucketData[i].period,
31926 pHalExtScanStartReqParams->bucketData[i].reportEvents,
31927 pHalExtScanStartReqParams->bucketData[i].numChannels);
31928
31929 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
31930 {
31931 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31932 "%d) channel %u dwellTimeMs %u passive %u ",j,
31933 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
31934 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
31935 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
31936 }
31937
31938 }
31939
Dino Mycle41bdc942014-06-10 11:30:24 +053031940 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31941
31942 /*-------------------------------------------------------------------------
31943 Send EXTSCAN Start Request to HAL
31944 -------------------------------------------------------------------------*/
31945 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31946 wdiEXTScanStartCb, pEventData->pUserData,
31947 WDI_EXTSCAN_START_RSP);
31948}
31949
31950/**
31951 @brief WDI_EXTScanSetBSSIDHotlistReq
31952
31953 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
31954 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
31955 of the Req operation received from the device
31956 pUserData: user data will be passed back with the callback
31957
31958 @return SUCCESS or FAIL
31959*/
31960WDI_Status
31961WDI_EXTScanSetBSSIDHotlistReq(
31962 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
31963 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
31964 void* pUserData)
31965{
31966 WDI_EventInfoType wdiEventData;
31967
31968 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31969 "%s: %d Enter ",__func__, __LINE__);
31970 /*------------------------------------------------------------------------
31971 Sanity Check
31972 ------------------------------------------------------------------------*/
31973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31974 {
31975 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31976 "WDI API call before module is initialized - Fail request");
31977
31978 return WDI_STATUS_E_NOT_ALLOWED;
31979 }
31980
31981 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
31982 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
31983 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
31984 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
31985 wdiEventData.pUserData = pUserData;
31986
31987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31988}
31989
31990/**
31991 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
31992 Extended Scan Set BSSSID Hotlist Request to FW
31993
31994 @param pWDICtx : wdi context
31995 pEventData : indication data
31996
31997 @see
31998 @return none
31999*/
32000WDI_Status
32001WDI_ProcessEXTScanSetBSSIDHotlistReq
32002(
32003 WDI_ControlBlockType* pWDICtx,
32004 WDI_EventInfoType* pEventData
32005)
32006{
32007 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32008 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32009 wpt_uint8* pSendBuffer = NULL;
32010 wpt_uint16 usSendSize = 0;
32011 wpt_uint16 usDataOffset = 0;
32012 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32013 int i;
32014
32015 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32016 "%s: %d Enter",__func__, __LINE__);
32017
32018 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32019 ( NULL == pEventData->pCBfnc ))
32020 {
32021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32022 "%s: Invalid parameters", __func__);
32023 WDI_ASSERT(0);
32024 return WDI_STATUS_E_FAILURE;
32025 }
32026
32027 pwdiEXTScanSetBSSIDHotlistReqParams =
32028 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32029 wdiEXTScanSetBSSIDHotlistRspCb =
32030 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32031
32032 /*-----------------------------------------------------------------------
32033 Get message buffer
32034 ! TO DO : proper conversion into the HAL Message Request Format
32035 -----------------------------------------------------------------------*/
32036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32037 pWDICtx,
32038 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32039 sizeof(tHalBssidHotlistSetReq),
32040 &pSendBuffer, &usDataOffset,
32041 &usSendSize))||
32042 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32043 {
32044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32045 "Unable to get send buffer in %s %p %p %p", __func__,
32046 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32047 wdiEXTScanSetBSSIDHotlistRspCb);
32048 WDI_ASSERT(0);
32049 return WDI_STATUS_E_FAILURE;
32050 }
32051 pHalBssidHotlistSetReqParams =
32052 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32053
32054 pHalBssidHotlistSetReqParams->requestId =
32055 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32056
32057 pHalBssidHotlistSetReqParams->sessionId =
32058 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32059
32060 pHalBssidHotlistSetReqParams->numAp =
32061 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32062
32063 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32064
32065 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32066 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32067 WDI_MAC_ADDR_LEN);
32068
32069 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32070 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32071
32072 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32073 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32074
32075 pHalBssidHotlistSetReqParams->ap[i].channel =
32076 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32077
32078 }
32079
32080 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32081 "ReqID %u sessionId %u numAp %u ",
32082 pHalBssidHotlistSetReqParams->requestId,
32083 pHalBssidHotlistSetReqParams->sessionId,
32084 pHalBssidHotlistSetReqParams->numAp);
32085
32086 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32087
32088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32089 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32090 __func__, __LINE__, i,
32091 pHalBssidHotlistSetReqParams->ap[i].bssid,
32092 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32093 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32094 pHalBssidHotlistSetReqParams->ap[i].channel);
32095
32096 }
32097
32098 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32099
32100
32101 /*-------------------------------------------------------------------------
32102 Send EXTScan Stop Request to HAL
32103 -------------------------------------------------------------------------*/
32104 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32105 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32106 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32107}
32108
32109/**
32110 @brief WDI_EXTScanResetBSSIDHotlistReq
32111
32112 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32113 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32114 of the Req operation received from the device
32115 pUserData: user data will be passed back with the callback
32116
32117 @return SUCCESS or FAIL
32118*/
32119WDI_Status
32120WDI_EXTScanResetBSSIDHotlistReq(
32121 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32122 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32123 void* pUserData)
32124{
32125 WDI_EventInfoType wdiEventData;
32126
32127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32128 "%s: %d",__func__, __LINE__);
32129 /*------------------------------------------------------------------------
32130 Sanity Check
32131 ------------------------------------------------------------------------*/
32132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32133 {
32134 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32135 "WDI API call before module is initialized - Fail request");
32136
32137 return WDI_STATUS_E_NOT_ALLOWED;
32138 }
32139
32140 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32141 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32142 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32143 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32144 wdiEventData.pUserData = pUserData;
32145
32146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32147}
32148
32149/**
32150 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32151 Extended Scan reset BSSID hotlist Request to FW
32152
32153 @param pWDICtx : wdi context
32154 pEventData : indication data
32155
32156 @see
32157 @return none
32158*/
32159WDI_Status
32160WDI_ProcessEXTScanResetBSSIDHotlistReq
32161(
32162 WDI_ControlBlockType* pWDICtx,
32163 WDI_EventInfoType* pEventData
32164)
32165{
32166 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32167 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32168 wpt_uint8* pSendBuffer = NULL;
32169 wpt_uint16 usSendSize = 0;
32170 wpt_uint16 usDataOffset = 0;
32171 tpHalHotlistResetReq pHalHotlistResetReqParams;
32172
32173 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32174 "%s: %d",__func__, __LINE__);
32175
32176 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32177 ( NULL == pEventData->pCBfnc ))
32178 {
32179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32180 "%s: Invalid parameters", __func__);
32181 WDI_ASSERT(0);
32182 return WDI_STATUS_E_FAILURE;
32183 }
32184
32185 pwdiEXTScanResetBSSIDHotlistReqParams =
32186 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32187 wdiEXTScanResetBSSIDHotlistRspCb =
32188 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32189
32190 /*-----------------------------------------------------------------------
32191 Get message buffer
32192 ! TO DO : proper conversion into the HAL Message Request Format
32193 -----------------------------------------------------------------------*/
32194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32195 pWDICtx,
32196 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32197 sizeof(tHalHotlistResetReq),
32198 &pSendBuffer, &usDataOffset,
32199 &usSendSize))||
32200 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32201 {
32202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32203 "Unable to get send buffer in %s %p %p %p", __func__,
32204 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32205 wdiEXTScanResetBSSIDHotlistRspCb);
32206 WDI_ASSERT(0);
32207 return WDI_STATUS_E_FAILURE;
32208 }
32209 pHalHotlistResetReqParams =
32210 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32211
32212 pHalHotlistResetReqParams->requestId =
32213 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32214
32215 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32216
32217 /*-------------------------------------------------------------------------
32218 Send EXTScan Stop Request to HAL
32219 -------------------------------------------------------------------------*/
32220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32221 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32222 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32223}
32224
32225/**
32226 @brief WDI_EXTScanSetSignfRSSIChangeReq
32227
32228 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32229 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32230 of the Req operation received from the device
32231 pUserData: user data will be passed back with the callback
32232
32233 @return SUCCESS or FAIL
32234*/
32235WDI_Status
32236WDI_EXTScanSetSignfRSSIChangeReq(
32237 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32238 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32239 void* pUserData)
32240{
32241 WDI_EventInfoType wdiEventData;
32242
32243 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32244 "%s: %d ",__func__, __LINE__);
32245 /*------------------------------------------------------------------------
32246 Sanity Check
32247 ------------------------------------------------------------------------*/
32248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32249 {
32250 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32251 "WDI API call before module is initialized - Fail request");
32252
32253 return WDI_STATUS_E_NOT_ALLOWED;
32254 }
32255
32256 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32257 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32258 wdiEventData.uEventDataSize =
32259 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32260 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32261 wdiEventData.pUserData = pUserData;
32262
32263 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32264}
32265
32266/**
32267 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32268 Extended Scan set Significant RSSI change Request to FW
32269
32270 @param pWDICtx : wdi context
32271 pEventData : indication data
32272
32273 @see
32274 @return none
32275*/
32276WDI_Status
32277WDI_ProcessEXTScanSetSignifRSSIChangeReq
32278(
32279 WDI_ControlBlockType* pWDICtx,
32280 WDI_EventInfoType* pEventData
32281)
32282{
32283 WDI_EXTScanSetSignfRSSIChangeReqParams*
32284 pwdiEXTScanSetSignfRSSIChangeReqParams;
32285 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32286 wpt_uint8* pSendBuffer = NULL;
32287 wpt_uint16 usSendSize = 0;
32288 wpt_uint16 usDataOffset = 0;
32289 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32290 int i;
32291
32292 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32293 "%s: %d Enter",__func__, __LINE__);
32294
32295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32296 ( NULL == pEventData->pCBfnc ))
32297 {
32298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32299 "%s: Invalid parameters", __func__);
32300 WDI_ASSERT(0);
32301 return WDI_STATUS_E_FAILURE;
32302 }
32303
32304 pwdiEXTScanSetSignfRSSIChangeReqParams =
32305 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32306 wdiEXTScanSetSignfRSSIChangeRspCb =
32307 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32308
32309 /*-----------------------------------------------------------------------
32310 Get message buffer
32311 ! TO DO : proper conversion into the HAL Message Request Format
32312 -----------------------------------------------------------------------*/
32313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32314 pWDICtx,
32315 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32316 sizeof(tHalSigRssiSetReq),
32317 &pSendBuffer, &usDataOffset,
32318 &usSendSize))||
32319 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32320 {
32321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32322 "Unable to get send buffer in %s %p %p %p", __func__,
32323 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32324 wdiEXTScanSetSignfRSSIChangeRspCb);
32325 WDI_ASSERT(0);
32326 return WDI_STATUS_E_FAILURE;
32327 }
32328
32329 pHalSigRssiSetReqParams =
32330 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32331
32332 pHalSigRssiSetReqParams->requestId =
32333 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32334 pHalSigRssiSetReqParams->sessionId =
32335 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32336 pHalSigRssiSetReqParams->rssiSampleSize =
32337 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32338 pHalSigRssiSetReqParams->lostApSampleSize =
32339 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32340 pHalSigRssiSetReqParams->minBreaching =
32341 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32342 pHalSigRssiSetReqParams->numAp =
32343 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32344
32345
32346 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
32347
32348 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
32349 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
32350 WDI_MAC_ADDR_LEN);
32351
32352 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
32353 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
32354
32355 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
32356 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
32357
32358 pHalSigRssiSetReqParams->ap[i].channel =
32359 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
32360
32361 }
32362
32363
32364 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32365 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
32366 " minBreaching %u numAp %u ",
32367 pHalSigRssiSetReqParams->requestId,
32368 pHalSigRssiSetReqParams->sessionId,
32369 pHalSigRssiSetReqParams->rssiSampleSize,
32370 pHalSigRssiSetReqParams->lostApSampleSize,
32371 pHalSigRssiSetReqParams->minBreaching,
32372 pHalSigRssiSetReqParams->numAp);
32373
32374 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
32375
32376 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32377 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32378 i,
32379 pHalSigRssiSetReqParams->ap[i].bssid,
32380 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
32381 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
32382 pHalSigRssiSetReqParams->ap[i].channel);
32383
32384 }
32385
32386 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32387
32388
32389 /*-------------------------------------------------------------------------
32390 Send EXTScan Stop Request to HAL
32391 -------------------------------------------------------------------------*/
32392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32393 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
32394 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
32395}
32396
32397/**
32398 @brief WDI_EXTScanResetSignfRSSIChangeReq
32399
32400 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
32401 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
32402 of the Req operation received from the device
32403 pUserData: user data will be passed back with the callback
32404
32405 @return SUCCESS or FAIL
32406*/
32407WDI_Status
32408WDI_EXTScanResetSignfRSSIChangeReq(
32409 WDI_EXTScanResetSignfRSSIChangeReqParams*
32410 pwdiEXTScanResetSignfRSSIChangeReqParams,
32411 WDI_EXTScanResetSignfRSSIChangeRspCb
32412 wdiEXTScanResetSignfRSSIChangeRspCb,
32413 void* pUserData)
32414{
32415 WDI_EventInfoType wdiEventData;
32416
32417 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32418 "%s: %d ",__func__, __LINE__);
32419 /*------------------------------------------------------------------------
32420 Sanity Check
32421 ------------------------------------------------------------------------*/
32422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32423 {
32424 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32425 "WDI API call before module is initialized - Fail request");
32426
32427 return WDI_STATUS_E_NOT_ALLOWED;
32428 }
32429
32430 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
32431 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
32432 wdiEventData.uEventDataSize =
32433 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
32434 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
32435 wdiEventData.pUserData = pUserData;
32436
32437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32438}
32439
32440/**
32441 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
32442 Extended Scana reset Significant RSSI change Request to FW
32443
32444 @param pWDICtx : wdi context
32445 pEventData : indication data
32446
32447 @see
32448 @return none
32449*/
32450WDI_Status
32451WDI_ProcessEXTScanResetSignfRSSIChangeReq
32452(
32453 WDI_ControlBlockType* pWDICtx,
32454 WDI_EventInfoType* pEventData
32455)
32456{
32457 WDI_EXTScanResetSignfRSSIChangeReqParams*
32458 pwdiEXTScanResetSignfRSSIChangeReqParams;
32459 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32460 wpt_uint8* pSendBuffer = NULL;
32461 wpt_uint16 usSendSize = 0;
32462 wpt_uint16 usDataOffset = 0;
32463 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
32464
32465 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32466 "%s: %d ",__func__, __LINE__);
32467
32468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32469 ( NULL == pEventData->pCBfnc ))
32470 {
32471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32472 "%s: Invalid parameters", __func__);
32473 WDI_ASSERT(0);
32474 return WDI_STATUS_E_FAILURE;
32475 }
32476
32477 pwdiEXTScanResetSignfRSSIChangeReqParams =
32478 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
32479 wdiEXTScanResetSignfRSSIChangeRspCb =
32480 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32481
32482 /*-----------------------------------------------------------------------
32483 Get message buffer
32484 ! TO DO : proper conversion into the HAL Message Request Format
32485 -----------------------------------------------------------------------*/
32486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32487 pWDICtx,
32488 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
32489 sizeof(tHalSigRssiResetReq),
32490 &pSendBuffer, &usDataOffset,
32491 &usSendSize))||
32492 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
32493 {
32494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32495 "Unable to get send buffer in %s %p %p %p", __func__,
32496 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
32497 wdiEXTScanResetSignfRSSIChangeRspCb);
32498 WDI_ASSERT(0);
32499 return WDI_STATUS_E_FAILURE;
32500 }
32501 pHalSigRssiResetReqParams =
32502 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
32503
32504 pHalSigRssiResetReqParams->requestId =
32505 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
32506
32507 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32508
32509
32510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32511 wdiEXTScanResetSignfRSSIChangeRspCb,
32512 pEventData->pUserData,
32513 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
32514}
32515
32516/**
32517 @brief Process Extended Scan Start Rsp function (called when a response
32518 is being received over the bus from HAL)
32519
32520 @param pWDICtx: pointer to the WLAN DAL context
32521 pEventData: pointer to the event information structure
32522
32523 @see
32524 @return Result of the function call
32525*/
32526WDI_Status
32527WDI_ProcessEXTScanStartRsp
32528(
32529 WDI_ControlBlockType* pWDICtx,
32530 WDI_EventInfoType* pEventData
32531)
32532{
32533 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
32534
32535 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32536 "%s: %d",__func__, __LINE__);
32537 /*-------------------------------------------------------------------------
32538 Sanity check
32539 -------------------------------------------------------------------------*/
32540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32541 ( NULL == pEventData->pEventData))
32542 {
32543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32544 "%s: Invalid parameters", __func__);
32545 WDI_ASSERT(0);
32546 return WDI_STATUS_E_FAILURE;
32547 }
32548
32549 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32550 if ( NULL == wdiEXTScanStartRspCb)
32551 {
32552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32553 "%s: Callback function Invalid", __func__);
32554 WDI_ASSERT(0);
32555 return WDI_STATUS_E_FAILURE;
32556 }
32557
32558 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
32559
32560 return WDI_STATUS_SUCCESS;
32561}
32562
32563
32564/**
32565 @brief Process Extended Scan Stop Rsp function (called when a response
32566 is being received over the bus from HAL)
32567
32568 @param pWDICtx: pointer to the WLAN DAL context
32569 pEventData: pointer to the event information structure
32570
32571 @see
32572 @return Result of the function call
32573*/
32574WDI_Status
32575WDI_ProcessEXTScanStopRsp
32576(
32577 WDI_ControlBlockType* pWDICtx,
32578 WDI_EventInfoType* pEventData
32579)
32580{
32581 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
32582
32583 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32584 "%s: %d",__func__, __LINE__);
32585
32586
32587 /*-------------------------------------------------------------------------
32588 Sanity check
32589 -------------------------------------------------------------------------*/
32590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32591 ( NULL == pEventData->pEventData))
32592 {
32593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32594 "%s: Invalid parameters", __func__);
32595 WDI_ASSERT(0);
32596 return WDI_STATUS_E_FAILURE;
32597 }
32598
32599 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32600 if ( NULL == wdiEXTScanStopRspCb)
32601 {
32602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32603 "%s: Callback function Invalid", __func__);
32604 WDI_ASSERT(0);
32605 return WDI_STATUS_E_FAILURE;
32606 }
32607
32608 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32609
32610 return WDI_STATUS_SUCCESS;
32611}
32612
32613/**
32614 @brief Process Extended Scan Get Cached Rsp function (called when a response
32615 is being received over the bus from HAL)
32616
32617 @param pWDICtx: pointer to the WLAN DAL context
32618 pEventData: pointer to the event information structure
32619
32620 @see
32621 @return Result of the function call
32622*/
32623WDI_Status
32624WDI_ProcessEXTScanGetCachedResultsRsp
32625(
32626 WDI_ControlBlockType* pWDICtx,
32627 WDI_EventInfoType* pEventData
32628)
32629{
32630 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
32631
32632 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32633 "%s: %d Enter",__func__, __LINE__);
32634
32635
32636 /*-------------------------------------------------------------------------
32637 Sanity check
32638 -------------------------------------------------------------------------*/
32639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32640 ( NULL == pEventData->pEventData))
32641 {
32642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32643 "%s: Invalid parameters", __func__);
32644 WDI_ASSERT(0);
32645 return WDI_STATUS_E_FAILURE;
32646 }
32647
32648 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32649 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
32650 {
32651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32652 "%s: Callback function Invalid", __func__);
32653 WDI_ASSERT(0);
32654 return WDI_STATUS_E_FAILURE;
32655 }
32656
32657 wdiEXTScanGetCachedResultsRspCb(
32658 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32659
32660 return WDI_STATUS_SUCCESS;
32661}
32662
32663/**
32664 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
32665 is being received over the bus from HAL)
32666
32667 @param pWDICtx: pointer to the WLAN DAL context
32668 pEventData: pointer to the event information structure
32669
32670 @see
32671 @return Result of the function call
32672*/
32673WDI_Status
32674WDI_ProcessEXTScanGetCapabilitiesRsp
32675(
32676 WDI_ControlBlockType* pWDICtx,
32677 WDI_EventInfoType* pEventData
32678)
32679{
32680 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32681
32682 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32683 "%s: %d ",__func__, __LINE__);
32684
32685
32686 /*-------------------------------------------------------------------------
32687 Sanity check
32688 -------------------------------------------------------------------------*/
32689 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32690 ( NULL == pEventData->pEventData))
32691 {
32692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32693 "%s: Invalid parameters", __func__);
32694 WDI_ASSERT(0);
32695 return WDI_STATUS_E_FAILURE;
32696 }
32697
32698 wdiEXTScanGetCapabilitiesRspCb =
32699 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
32700 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
32701 {
32702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32703 "%s: Callback function Invalid", __func__);
32704 WDI_ASSERT(0);
32705 return WDI_STATUS_E_FAILURE;
32706 }
32707
32708 wdiEXTScanGetCapabilitiesRspCb(
32709 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32710
32711 return WDI_STATUS_SUCCESS;
32712}
32713
32714/**
32715 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
32716 response is being received over the bus from HAL)
32717
32718 @param pWDICtx: pointer to the WLAN DAL context
32719 pEventData: pointer to the event information structure
32720
32721 @see
32722 @return Result of the function call
32723*/
32724WDI_Status
32725WDI_ProcessEXTScanSetHotlistBSSIDRsp
32726(
32727 WDI_ControlBlockType* pWDICtx,
32728 WDI_EventInfoType* pEventData
32729)
32730{
32731 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32732
32733 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32734 "%s: %d ",__func__, __LINE__);
32735
32736
32737 /*-------------------------------------------------------------------------
32738 Sanity check
32739 -------------------------------------------------------------------------*/
32740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32741 ( NULL == pEventData->pEventData))
32742 {
32743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32744 "%s: Invalid parameters", __func__);
32745 WDI_ASSERT(0);
32746 return WDI_STATUS_E_FAILURE;
32747 }
32748
32749 wdiEXTScanSetBSSIDHotlistRspCb =
32750 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32751 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
32752 {
32753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32754 "%s: Callback function Invalid", __func__);
32755 WDI_ASSERT(0);
32756 return WDI_STATUS_E_FAILURE;
32757 }
32758
32759 wdiEXTScanSetBSSIDHotlistRspCb(
32760 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32761
32762 return WDI_STATUS_SUCCESS;
32763}
32764
32765/**
32766 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
32767 when a response is being received over the bus from HAL)
32768
32769 @param pWDICtx: pointer to the WLAN DAL context
32770 pEventData: pointer to the event information structure
32771
32772 @see
32773 @return Result of the function call
32774*/
32775WDI_Status
32776WDI_ProcessEXTScanResetHotlistBSSIDRsp
32777(
32778 WDI_ControlBlockType* pWDICtx,
32779 WDI_EventInfoType* pEventData
32780)
32781{
32782 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32783
32784 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32785 "%s: %d ",__func__, __LINE__);
32786
32787
32788 /*-------------------------------------------------------------------------
32789 Sanity check
32790 -------------------------------------------------------------------------*/
32791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32792 ( NULL == pEventData->pEventData))
32793 {
32794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32795 "%s: Invalid parameters", __func__);
32796 WDI_ASSERT(0);
32797 return WDI_STATUS_E_FAILURE;
32798 }
32799
32800 wdiEXTScanResetBSSIDHotlistRspCb =
32801 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32802 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
32803 {
32804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32805 "%s: Callback function Invalid", __func__);
32806 WDI_ASSERT(0);
32807 return WDI_STATUS_E_FAILURE;
32808 }
32809
32810 wdiEXTScanResetBSSIDHotlistRspCb(
32811 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32812
32813 return WDI_STATUS_SUCCESS;
32814}
32815
32816/**
32817 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
32818 when a response is being received over the bus from HAL)
32819
32820 @param pWDICtx: pointer to the WLAN DAL context
32821 pEventData: pointer to the event information structure
32822
32823 @see
32824 @return Result of the function call
32825*/
32826WDI_Status
32827WDI_ProcessEXTScanSetSignfRSSIChangeRsp
32828(
32829 WDI_ControlBlockType* pWDICtx,
32830 WDI_EventInfoType* pEventData
32831)
32832{
32833 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32834
32835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32836 "%s: %d",__func__, __LINE__);
32837
32838
32839 /*-------------------------------------------------------------------------
32840 Sanity check
32841 -------------------------------------------------------------------------*/
32842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32843 ( NULL == pEventData->pEventData))
32844 {
32845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32846 "%s: Invalid parameters", __func__);
32847 WDI_ASSERT(0);
32848 return WDI_STATUS_E_FAILURE;
32849 }
32850
32851 wdiEXTScanSetSignfRSSIChangeRspCb =
32852 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32853 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
32854 {
32855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32856 "%s: Callback function Invalid", __func__);
32857 WDI_ASSERT(0);
32858 return WDI_STATUS_E_FAILURE;
32859 }
32860
32861 wdiEXTScanSetSignfRSSIChangeRspCb(
32862 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32863
32864 return WDI_STATUS_SUCCESS;
32865}
32866
32867/**
32868 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
32869 (called when a response is being received over the bus from HAL)
32870
32871 @param pWDICtx: pointer to the WLAN DAL context
32872 pEventData: pointer to the event information structure
32873
32874 @see
32875 @return Result of the function call
32876*/
32877WDI_Status
32878WDI_ProcessEXTScanResetSignfRSSIChangeRsp
32879(
32880 WDI_ControlBlockType* pWDICtx,
32881 WDI_EventInfoType* pEventData
32882)
32883{
32884 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32885
32886 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32887 "%s: %d Enter",__func__, __LINE__);
32888
32889
32890 /*-------------------------------------------------------------------------
32891 Sanity check
32892 -------------------------------------------------------------------------*/
32893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32894 ( NULL == pEventData->pEventData))
32895 {
32896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32897 "%s: Invalid parameters", __func__);
32898 WDI_ASSERT(0);
32899 return WDI_STATUS_E_FAILURE;
32900 }
32901
32902 wdiEXTScanResetSignfRSSIChangeRspCb =
32903 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32904 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
32905 {
32906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32907 "%s: Callback function Invalid", __func__);
32908 WDI_ASSERT(0);
32909 return WDI_STATUS_E_FAILURE;
32910 }
32911
32912 wdiEXTScanResetSignfRSSIChangeRspCb(
32913 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32914
32915 return WDI_STATUS_SUCCESS;
32916}
32917#endif /* WLAN_FEATURE_EXTSCAN */