blob: 6d99130f6d6148a55a86432826fb7f859aadea7d [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
Dino Myclee8843b32014-07-04 14:21:45 +0530183 ,FEATURE_NOT_SUPPORTED //41
184#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
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301366
Abhishek Singh08b60122014-02-04 18:05:23 +05301367 }
1368 *pCapStr++ = ',';
1369 *pCapStr++ = ' ';
1370 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301371 }
1372 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301373 pCapStr -= 2;
1374 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301375 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301377}
1378
1379/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001380 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001381
1382 @param halStatusId: HAL status Id
1383
1384 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 @return Result of the function call
1386*/
1387static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1388{
1389 switch (halStatusId)
1390 {
1391 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1392 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1393 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1394 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1395 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1396 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1397 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1398 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1399 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1400 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1401 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1402 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1403 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1404 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1405 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1406 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1407 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1408 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1409 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1410 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1411 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1412 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1413 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1414 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1415 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1416 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1417 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1418 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1419 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1420 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1421 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1422 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1423 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1424 default:
1425 return "Unknown HAL status";
1426 }
1427}
1428
Jeff Johnsone7245742012-09-05 17:12:55 -07001429/*========================================================================
1430
Jeff Johnson295189b2012-06-20 16:38:30 -07001431 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001432
Jeff Johnson295189b2012-06-20 16:38:30 -07001433==========================================================================*/
1434
1435/**
1436 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001437
Jeff Johnson295189b2012-06-20 16:38:30 -07001438 DAL will allocate all the resources it needs. It will open PAL, it will also
1439 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 DXE/SMD or any other drivers that they need.
1441
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301442 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001443 ppWDIGlobalCtx: output pointer of Global Context
1444 pWdiDevCapability: output pointer of device capability
1445
1446 @return Result of the function call
1447*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001449WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001450(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301451 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001452 void** ppWDIGlobalCtx,
1453 WDI_DeviceCapabilityType* pWdiDevCapability,
1454 unsigned int driverType
1455)
1456{
1457 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001458 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001459 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001460 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1462
1463 /*---------------------------------------------------------------------
1464 Sanity check
1465 ---------------------------------------------------------------------*/
1466 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1467 {
1468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1469 "Invalid input parameters in WDI_Init");
1470
Jeff Johnsone7245742012-09-05 17:12:55 -07001471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 }
1473
1474 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001475 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001476 ---------------------------------------------------------------------*/
1477 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1478 {
1479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1480 "WDI module already initialized - return");
1481
Jeff Johnsone7245742012-09-05 17:12:55 -07001482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001483 }
1484
1485 /*Module is now initialized - this flag is to ensure the fact that multiple
1486 init will not happen on WDI
1487 !! - potential race does exist because read and set are not atomic,
1488 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001489 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001490
1491 /*Setup the control block */
1492 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301493 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001494
1495 /*Setup the STA Table*/
1496 wdiStatus = WDI_STATableInit(&gWDICb);
1497 if ( WDI_STATUS_SUCCESS != wdiStatus )
1498 {
1499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1500 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001501 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 goto fail_STATableInit;
1503 }
1504
1505 /*------------------------------------------------------------------------
1506 Open the PAL
1507 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301508 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001509 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1510 {
1511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1512 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 goto fail_wpalOpen;
1515 }
1516
1517 /*Initialize main synchro mutex - it will be used to ensure integrity of
1518 the main WDI Control Block*/
1519 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1520 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1521 {
1522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1523 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001524 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 goto fail_mutex;
1526 }
1527
1528 /*Initialize the response timer - it will be used to time all messages
1529 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001530 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1531 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001532 &gWDICb);
1533 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1534 {
1535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1536 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001537 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 goto fail_timer;
1539 }
1540
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001541 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1542 WDI_SsrTimerCB,
1543 &gWDICb);
1544 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1545 {
1546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1547 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001548 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001549 goto fail_timer2;
1550 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001551 /* Initialize the WDI Pending Request Queue*/
1552 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1553 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1554 {
1555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1556 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001557 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001558 goto fail_pend_queue;
1559 }
1560
1561 /*Init WDI Pending Assoc Id Queue */
1562 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1563 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1564 {
1565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1566 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001567 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 goto fail_assoc_queue;
1569 }
1570
1571 /*Initialize the BSS sessions pending Queue */
1572 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1573 {
1574 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1575 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1576 {
1577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1578 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001579 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 goto fail_bss_queue;
1581 }
1582 }
1583
1584 /*Indicate the control block is sufficiently initialized for callbacks*/
1585 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1586
1587 /*------------------------------------------------------------------------
1588 Initialize the Data Path Utility Module
1589 ------------------------------------------------------------------------*/
1590 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1591 if ( WDI_STATUS_SUCCESS != wdiStatus )
1592 {
1593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1594 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001595 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 goto fail_dp_util_init;
1597 }
1598
1599 /* Init Set power state event */
1600 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 {
1603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1604 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001605 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001606 goto fail_power_event;
1607 }
1608
1609 /* Init WCTS action event */
1610 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001611 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001612 {
1613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1614 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001615 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001616 goto fail_wcts_event;
1617 }
1618
1619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001620 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 ------------------------------------------------------------------------*/
1622 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1623 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001624 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001625 wctsCBs.wctsRxMsgCBData = &gWDICb;
1626
Jeff Johnsone7245742012-09-05 17:12:55 -07001627 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001629 WDI_CT_CHANNEL_SIZE,
1630 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001631
1632 if ( NULL == gWDICb.wctsHandle )
1633 {
1634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001635 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 goto fail_wcts_open;
1637 }
1638
1639 gWDICb.driverMode = (tDriverType)driverType;
1640 /* FTM mode not need to open Transport Driver */
1641 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001642 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 /*------------------------------------------------------------------------
1644 Open the Data Transport
1645 ------------------------------------------------------------------------*/
1646 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1647 {
1648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001649 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001650 goto fail_wdts_open;
1651 }
1652 }
1653
1654 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001656
1657 /*Send the context as a ptr to the global WDI Control Block*/
1658 *ppWDIGlobalCtx = &gWDICb;
1659
1660 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001661 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1663 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1664 return WDI_STATUS_SUCCESS;
1665
1666 /* ERROR handlers
1667 Undo everything that completed successfully */
1668
1669 fail_wdts_open:
1670 {
1671 wpt_status eventStatus;
1672
1673 /* Closing WCTS in this scenario is tricky since it has to close
1674 the SMD channel and then we get notified asynchronously when
1675 the channel has been closed. So we take some of the logic from
1676 the "normal" close procedure in WDI_Close()
1677 */
1678
1679 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001680 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 {
1682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001683 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 }
1685
1686 WCTS_CloseTransport(gWDICb.wctsHandle);
1687
1688 /* Wait for WCTS to close the control transport. If we were able
1689 to reset the event flag, then we'll wait for the event,
1690 otherwise we'll wait for a maximum amount of time required for
1691 the channel to be closed */
1692 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1693 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001694 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 WDI_WCTS_ACTION_TIMEOUT);
1696 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001699 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001700 }
1701 }
1702 else
1703 {
1704 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1705 }
1706 }
1707 fail_wcts_open:
1708 wpalEventDelete(&gWDICb.wctsActionEvent);
1709 fail_wcts_event:
1710 wpalEventDelete(&gWDICb.setPowerStateEvent);
1711 fail_power_event:
1712 WDI_DP_UtilsExit(&gWDICb);
1713 fail_dp_util_init:
1714 gWDICb.magic = 0;
1715 fail_bss_queue:
1716 /* entries 0 thru i-1 were successfully initialized */
1717 while (0 < i)
1718 {
1719 i--;
1720 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1721 }
1722 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1723 fail_assoc_queue:
1724 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1725 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001726 wpalTimerDelete(&gWDICb.ssrTimer);
1727 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 wpalTimerDelete(&gWDICb.wptResponseTimer);
1729 fail_timer:
1730 wpalMutexDelete(&gWDICb.wptMutex);
1731 fail_mutex:
1732 wpalClose(gWDICb.pPALContext);
1733 fail_wpalOpen:
1734 WDI_STATableClose(&gWDICb);
1735 fail_STATableInit:
1736 gWDIInitialized = eWLAN_PAL_FALSE;
1737
1738 return WDI_STATUS_E_FAILURE;
1739
1740}/*WDI_Init*/;
1741
1742/**
1743 @brief WDI_Start will be called when the upper MAC is ready to
1744 commence operation with the WLAN Device. Upon the call
1745 of this API the WLAN DAL will pack and send a HAL Start
1746 message to the lower RIVA sub-system if the SMD channel
1747 has been fully opened and the RIVA subsystem is up.
1748
1749 If the RIVA sub-system is not yet up and running DAL
1750 will queue the request for Open and will wait for the
1751 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001752 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001753
1754 WDI_Init must have been called.
1755
Jeff Johnsone7245742012-09-05 17:12:55 -07001756 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001758
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 wdiStartRspCb: callback for passing back the response of
1760 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001761
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001763 callback
1764
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 @see WDI_Start
1766 @return Result of the function call
1767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001769WDI_Start
1770(
1771 WDI_StartReqParamsType* pwdiStartParams,
1772 WDI_StartRspCb wdiStartRspCb,
1773 void* pUserData
1774)
1775{
1776 WDI_EventInfoType wdiEventData;
1777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1778
1779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 ------------------------------------------------------------------------*/
1782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1783 {
1784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1785 "WDI API call before module is initialized - Fail request");
1786
Jeff Johnsone7245742012-09-05 17:12:55 -07001787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 }
1789
1790 /*------------------------------------------------------------------------
1791 Fill in Event data and post to the Main FSM
1792 ------------------------------------------------------------------------*/
1793 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 wdiEventData.pEventData = pwdiStartParams;
1795 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1796 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001797 wdiEventData.pUserData = pUserData;
1798
1799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1800
1801}/*WDI_Start*/
1802
1803/**
1804 @brief WDI_Stop will be called when the upper MAC is ready to
1805 stop any operation with the WLAN Device. Upon the call
1806 of this API the WLAN DAL will pack and send a HAL Stop
1807 message to the lower RIVA sub-system if the DAL Core is
1808 in started state.
1809
1810 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001811
1812 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001813
1814 WDI_Start must have been called.
1815
Jeff Johnsone7245742012-09-05 17:12:55 -07001816 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001817 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001818
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 wdiStopRspCb: callback for passing back the response of
1820 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001821
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001823 callback
1824
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 @see WDI_Start
1826 @return Result of the function call
1827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001829WDI_Stop
1830(
1831 WDI_StopReqParamsType* pwdiStopParams,
1832 WDI_StopRspCb wdiStopRspCb,
1833 void* pUserData
1834)
1835{
1836 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001837 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1839
1840 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 ------------------------------------------------------------------------*/
1843 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1844 {
1845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1846 "WDI API call before module is initialized - Fail request");
1847
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 }
1850
Jeff Johnson43971f52012-07-17 12:26:56 -07001851 /*Access to the global state must be locked before cleaning */
1852 wpalMutexAcquire(&pWDICtx->wptMutex);
1853
1854 /*Clear all pending request*/
1855 WDI_ClearPendingRequests(pWDICtx);
1856
1857 /*We have completed cleaning unlock now*/
1858 wpalMutexRelease(&pWDICtx->wptMutex);
1859
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 /* Free the global variables */
1861 wpalMemoryFree(gpHostWlanFeatCaps);
1862 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001863 gpHostWlanFeatCaps = NULL;
1864 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001865
1866 /*------------------------------------------------------------------------
1867 Fill in Event data and post to the Main FSM
1868 ------------------------------------------------------------------------*/
1869 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 wdiEventData.pEventData = pwdiStopParams;
1871 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1872 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 wdiEventData.pUserData = pUserData;
1874
1875 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1876
1877}/*WDI_Stop*/
1878
1879
1880
1881/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 needs to interact with DAL. DAL will free its control
1884 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001885
1886 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001887
1888 WDI_Stop must have been called.
1889
1890 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001891
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 @see WDI_Stop
1893 @return Result of the function call
1894*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001895WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001896WDI_Close
1897(
1898 void
1899)
1900{
1901 wpt_uint8 i;
1902 WDI_EventInfoType wdiEventData;
1903 wpt_status wptStatus;
1904 wpt_status eventStatus;
1905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1906
1907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 ------------------------------------------------------------------------*/
1910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1911 {
1912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1913 "WDI API call before module is initialized - Fail request");
1914
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 }
1917
1918 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1919 (the control transport will be closed by the FSM and we'll want
1920 to wait until that completes)*/
1921 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001922 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 {
1924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001925 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 /* fall through and try to finish closing via the FSM */
1927 }
1928
1929 /*------------------------------------------------------------------------
1930 Fill in Event data and post to the Main FSM
1931 ------------------------------------------------------------------------*/
1932 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 wdiEventData.pEventData = NULL;
1934 wdiEventData.uEventDataSize = 0;
1935 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 wdiEventData.pUserData = NULL;
1937
1938 gWDIInitialized = eWLAN_PAL_FALSE;
1939
1940 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1941
1942 /*Wait for WCTS to close the control transport
1943 (but only if we were able to reset the event flag*/
1944 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1945 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001947 WDI_WCTS_ACTION_TIMEOUT);
1948 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1949 {
1950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001951 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 }
1953 }
1954
1955 /* Destroy the WCTS action event */
1956 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1957 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1958 {
1959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1960 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001961 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001962 }
1963
1964 /* Destroy the Set Power State event */
1965 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1966 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1967 {
1968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1969 "WDI Close failed to destroy an event");
1970
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 }
1973
1974 /*------------------------------------------------------------------------
1975 Closes the Data Path Utility Module
1976 ------------------------------------------------------------------------*/
1977 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1978 {
1979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1980 "WDI Init failed to close the DP Util Module");
1981
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 }
1984
1985 /*destroy the BSS sessions pending Queue */
1986 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1987 {
1988 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1989 }
1990
1991 /* destroy the WDI Pending Assoc Id Request Queue*/
1992 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1993
1994 /* destroy the WDI Pending Request Queue*/
1995 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001996
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 /*destroy the response timer */
1998 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1999
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002000 /*destroy the SSR timer */
2001 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2002
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 /*invalidate the main synchro mutex */
2004 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2005 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2006 {
2007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2008 "Failed to delete mutex %d", wptStatus);
2009 WDI_ASSERT(0);
2010 }
2011
2012 /*Clear control block. note that this will clear the "magic"
2013 which will inhibit all asynchronous callbacks*/
2014 WDI_CleanCB(&gWDICb);
2015
2016 return wptStatus;
2017
2018}/*WDI_Close*/
2019
2020/**
2021 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2022 This will do most of the WDI stop & close
2023 operations without doing any handshake with Riva
2024
2025 This will also make sure that the control transport
2026 will NOT be closed.
2027
2028 This request will not be queued.
2029
2030
2031 WDI_Start must have been called.
2032
2033 @param closeTransport: Close control channel if this is set
2034
2035 @return Result of the function call
2036*/
2037WDI_Status
2038WDI_Shutdown
2039(
2040 wpt_boolean closeTransport
2041)
2042{
2043 WDI_EventInfoType wdiEventData;
2044 wpt_status wptStatus;
2045 int i = 0;
2046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2047
2048 /*------------------------------------------------------------------------
2049 Sanity Check
2050 ------------------------------------------------------------------------*/
2051 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2052 {
2053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2054 "WDI API call before module is initialized - Fail request");
2055
2056 return WDI_STATUS_E_NOT_ALLOWED;
2057 }
2058
2059 /*------------------------------------------------------------------------
2060 Fill in Event data and post to the Main FSM
2061 ------------------------------------------------------------------------*/
2062 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2063 wdiEventData.pEventData = NULL;
2064 wdiEventData.uEventDataSize = 0;
2065
2066 /* Shutdown will not be queued, if the state is busy timer will be
2067 * stopped & this message will be processed.*/
2068 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2069 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2070 {
2071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002072 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 }
2074 /* Destroy the Set Power State event */
2075 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2076 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2077 {
2078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2079 "WDI Close failed to destroy an event");
2080
2081 WDI_ASSERT(0);
2082 }
2083 /*------------------------------------------------------------------------
2084 Closes the Data Path Utility Module
2085 ------------------------------------------------------------------------*/
2086 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2087 {
2088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2089 "WDI Init failed to close the DP Util Module");
2090
2091 WDI_ASSERT(0);
2092 }
2093 if ( closeTransport )
2094 {
2095 /* Close control transport, called from module unload */
2096 WCTS_CloseTransport(gWDICb.wctsHandle);
2097 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002098 else
2099 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002100 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002101 the pending messages in the transport queue */
2102 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2103 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 /*destroy the BSS sessions pending Queue */
2105 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2106 {
2107 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2108 }
2109
2110 /* destroy the WDI Pending Assoc Id Request Queue*/
2111 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2112 /* destroy the WDI Pending Request Queue*/
2113 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2114 /*destroy the response timer */
2115 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002116 /*destroy the SSR timer */
2117 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002118
2119 /*invalidate the main synchro mutex */
2120 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2122 {
2123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002124 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 WDI_ASSERT(0);
2126 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002127 /* Free the global variables */
2128 wpalMemoryFree(gpHostWlanFeatCaps);
2129 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002130 gpHostWlanFeatCaps = NULL;
2131 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002132 /*Clear control block. note that this will clear the "magic"
2133 which will inhibit all asynchronous callbacks*/
2134 WDI_CleanCB(&gWDICb);
2135 return wptStatus;
2136
2137}/*WDI_Shutdown*/
2138
2139
Jeff Johnsone7245742012-09-05 17:12:55 -07002140/*========================================================================
2141
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002143
Jeff Johnson295189b2012-06-20 16:38:30 -07002144==========================================================================*/
2145
2146/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002147 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 the WLAN Device to get ready for a scan procedure. Upon
2149 the call of this API the WLAN DAL will pack and send a
2150 HAL Init Scan request message to the lower RIVA
2151 sub-system if DAL is in state STARTED.
2152
2153 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002155
2156 WDI_Start must have been called.
2157
2158 @param wdiInitScanParams: the init scan parameters as specified
2159 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002160
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 wdiInitScanRspCb: callback for passing back the response
2162 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002163
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 callback
2166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 @see WDI_Start
2168 @return Result of the function call
2169*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002171WDI_InitScanReq
2172(
2173 WDI_InitScanReqParamsType* pwdiInitScanParams,
2174 WDI_InitScanRspCb wdiInitScanRspCb,
2175 void* pUserData
2176)
2177{
2178 WDI_EventInfoType wdiEventData;
2179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2180
2181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 ------------------------------------------------------------------------*/
2184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2185 {
2186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2187 "WDI API call before module is initialized - Fail request");
2188
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 }
2191
2192 /*------------------------------------------------------------------------
2193 Fill in Event data and post to the Main FSM
2194 ------------------------------------------------------------------------*/
2195 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 wdiEventData.pEventData = pwdiInitScanParams;
2197 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2198 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 wdiEventData.pUserData = pUserData;
2200
2201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2202
2203}/*WDI_InitScanReq*/
2204
2205/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002206 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002207 wishes to change the Scan channel on the WLAN Device.
2208 Upon the call of this API the WLAN DAL will pack and
2209 send a HAL Start Scan request message to the lower RIVA
2210 sub-system if DAL is in state STARTED.
2211
2212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002214
2215 WDI_InitScanReq must have been called.
2216
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002219
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 wdiStartScanRspCb: callback for passing back the
2221 response of the start scan operation received from the
2222 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 callback
2226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 @see WDI_InitScanReq
2228 @return Result of the function call
2229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002231WDI_StartScanReq
2232(
2233 WDI_StartScanReqParamsType* pwdiStartScanParams,
2234 WDI_StartScanRspCb wdiStartScanRspCb,
2235 void* pUserData
2236)
2237{
2238 WDI_EventInfoType wdiEventData;
2239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2240
2241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002243 ------------------------------------------------------------------------*/
2244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2245 {
2246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2247 "WDI API call before module is initialized - Fail request");
2248
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 }
2251
2252 /*------------------------------------------------------------------------
2253 Fill in Event data and post to the Main FSM
2254 ------------------------------------------------------------------------*/
2255 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 wdiEventData.pEventData = pwdiStartScanParams;
2257 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2258 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 wdiEventData.pUserData = pUserData;
2260
2261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2262
2263}/*WDI_StartScanReq*/
2264
2265
2266/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002267 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002268 wants to end scanning for a particular channel that it
2269 had set before by calling Scan Start on the WLAN Device.
2270 Upon the call of this API the WLAN DAL will pack and
2271 send a HAL End Scan request message to the lower RIVA
2272 sub-system if DAL is in state STARTED.
2273
2274 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002276
2277 WDI_StartScanReq must have been called.
2278
Jeff Johnsone7245742012-09-05 17:12:55 -07002279 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002280 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 wdiEndScanRspCb: callback for passing back the response
2283 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002284
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 callback
2287
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 @see WDI_StartScanReq
2289 @return Result of the function call
2290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002292WDI_EndScanReq
2293(
2294 WDI_EndScanReqParamsType* pwdiEndScanParams,
2295 WDI_EndScanRspCb wdiEndScanRspCb,
2296 void* pUserData
2297)
2298{
2299 WDI_EventInfoType wdiEventData;
2300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2301
2302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 ------------------------------------------------------------------------*/
2305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2306 {
2307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2308 "WDI API call before module is initialized - Fail request");
2309
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 }
2312
2313 /*------------------------------------------------------------------------
2314 Fill in Event data and post to the Main FSM
2315 ------------------------------------------------------------------------*/
2316 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002317 wdiEventData.pEventData = pwdiEndScanParams;
2318 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2319 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002320 wdiEventData.pUserData = pUserData;
2321
2322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2323
2324}/*WDI_EndScanReq*/
2325
2326
2327/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002329 completed the scan process on the WLAN Device. Upon the
2330 call of this API the WLAN DAL will pack and send a HAL
2331 Finish Scan Request request message to the lower RIVA
2332 sub-system if DAL is in state STARTED.
2333
2334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002336
2337 WDI_InitScanReq must have been called.
2338
Jeff Johnsone7245742012-09-05 17:12:55 -07002339 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002341
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 wdiFinishScanRspCb: callback for passing back the
2343 response of the finish scan operation received from the
2344 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002345
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002347 callback
2348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 @see WDI_InitScanReq
2350 @return Result of the function call
2351*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002352WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002353WDI_FinishScanReq
2354(
2355 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2356 WDI_FinishScanRspCb wdiFinishScanRspCb,
2357 void* pUserData
2358)
2359{
2360 WDI_EventInfoType wdiEventData;
2361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2362
2363 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 ------------------------------------------------------------------------*/
2366 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2367 {
2368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2369 "WDI API call before module is initialized - Fail request");
2370
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002372 }
2373
2374 /*------------------------------------------------------------------------
2375 Fill in Event data and post to the Main FSM
2376 ------------------------------------------------------------------------*/
2377 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 wdiEventData.pEventData = pwdiFinishScanParams;
2379 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2380 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 wdiEventData.pUserData = pUserData;
2382
2383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2384
2385}/*WDI_FinishScanReq*/
2386
Jeff Johnsone7245742012-09-05 17:12:55 -07002387/*========================================================================
2388
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002390
Jeff Johnson295189b2012-06-20 16:38:30 -07002391==========================================================================*/
2392
2393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 to start an association procedure to a BSS. Upon the
2396 call of this API the WLAN DAL will pack and send a HAL
2397 Join request message to the lower RIVA sub-system if
2398 DAL is in state STARTED.
2399
2400 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002402
2403 WDI_Start must have been called.
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiJoinRspCb: callback for passing back the response of
2409 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002410
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 callback
2413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 @see WDI_Start
2415 @return Result of the function call
2416*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002417WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002418WDI_JoinReq
2419(
2420 WDI_JoinReqParamsType* pwdiJoinParams,
2421 WDI_JoinRspCb wdiJoinRspCb,
2422 void* pUserData
2423)
2424{
2425 WDI_EventInfoType wdiEventData;
2426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2427
2428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 ------------------------------------------------------------------------*/
2431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2432 {
2433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2434 "WDI API call before module is initialized - Fail request");
2435
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 }
2438
2439 /*------------------------------------------------------------------------
2440 Fill in Event data and post to the Main FSM
2441 ------------------------------------------------------------------------*/
2442 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 wdiEventData.pEventData = pwdiJoinParams;
2444 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2445 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 wdiEventData.pUserData = pUserData;
2447
2448 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2449
2450}/*WDI_JoinReq*/
2451
2452/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002453 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002454 wishes to configure the newly acquired or in process of
2455 being acquired BSS to the HW . Upon the call of this API
2456 the WLAN DAL will pack and send a HAL Config BSS request
2457 message to the lower RIVA sub-system if DAL is in state
2458 STARTED.
2459
2460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002462
2463 WDI_JoinReq must have been called.
2464
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 wdiConfigBSSRspCb: callback for passing back the
2469 response of the config BSS operation received from the
2470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002471
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 callback
2474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 @see WDI_JoinReq
2476 @return Result of the function call
2477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002479WDI_ConfigBSSReq
2480(
2481 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2482 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2483 void* pUserData
2484)
2485{
2486 WDI_EventInfoType wdiEventData;
2487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2488
2489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 ------------------------------------------------------------------------*/
2492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2493 {
2494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2495 "WDI API call before module is initialized - Fail request");
2496
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 }
2499
2500 /*------------------------------------------------------------------------
2501 Fill in Event data and post to the Main FSM
2502 ------------------------------------------------------------------------*/
2503 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 wdiEventData.pEventData = pwdiConfigBSSParams;
2505 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2506 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 wdiEventData.pUserData = pUserData;
2508
2509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2510
2511}/*WDI_ConfigBSSReq*/
2512
2513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 disassociating from the BSS and wishes to notify HW.
2516 Upon the call of this API the WLAN DAL will pack and
2517 send a HAL Del BSS request message to the lower RIVA
2518 sub-system if DAL is in state STARTED.
2519
2520 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002522
2523 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2524
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002527
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 wdiDelBSSRspCb: callback for passing back the response
2529 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 callback
2533
2534 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 @return Result of the function call
2536*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002537WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002538WDI_DelBSSReq
2539(
2540 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2541 WDI_DelBSSRspCb wdiDelBSSRspCb,
2542 void* pUserData
2543)
2544{
2545 WDI_EventInfoType wdiEventData;
2546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2547
2548 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 ------------------------------------------------------------------------*/
2551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2552 {
2553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2554 "WDI API call before module is initialized - Fail request");
2555
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 }
2558
2559 /*------------------------------------------------------------------------
2560 Fill in Event data and post to the Main FSM
2561 ------------------------------------------------------------------------*/
2562 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 wdiEventData.pEventData = pwdiDelBSSParams;
2564 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2565 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002566 wdiEventData.pUserData = pUserData;
2567
2568 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2569
2570}/*WDI_DelBSSReq*/
2571
2572/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002574 associated to a BSS and wishes to configure HW for
2575 associated state. Upon the call of this API the WLAN DAL
2576 will pack and send a HAL Post Assoc request message to
2577 the lower RIVA sub-system if DAL is in state STARTED.
2578
2579 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002581
2582 WDI_JoinReq must have been called.
2583
2584 @param wdiPostAssocReqParams: the assoc parameters as specified
2585 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002586
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 wdiPostAssocRspCb: callback for passing back the
2588 response of the post assoc operation received from the
2589 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002592 callback
2593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 @see WDI_JoinReq
2595 @return Result of the function call
2596*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002598WDI_PostAssocReq
2599(
2600 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2601 WDI_PostAssocRspCb wdiPostAssocRspCb,
2602 void* pUserData
2603)
2604{
2605 WDI_EventInfoType wdiEventData;
2606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2607
2608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 ------------------------------------------------------------------------*/
2611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2612 {
2613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2614 "WDI API call before module is initialized - Fail request");
2615
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 }
2618
2619 /*------------------------------------------------------------------------
2620 Fill in Event data and post to the Main FSM
2621 ------------------------------------------------------------------------*/
2622 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 wdiEventData.pEventData = pwdiPostAssocReqParams;
2624 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2625 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 wdiEventData.pUserData = pUserData;
2627
2628 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2629
2630}/*WDI_PostAssocReq*/
2631
2632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 association with another STA has ended and the station
2635 must be deleted from HW. Upon the call of this API the
2636 WLAN DAL will pack and send a HAL Del STA request
2637 message to the lower RIVA sub-system if DAL is in state
2638 STARTED.
2639
2640 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002642
2643 WDI_PostAssocReq must have been called.
2644
Jeff Johnsone7245742012-09-05 17:12:55 -07002645 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002646 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002647
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 wdiDelSTARspCb: callback for passing back the response
2649 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002650
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 callback
2653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 @see WDI_PostAssocReq
2655 @return Result of the function call
2656*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002658WDI_DelSTAReq
2659(
2660 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2661 WDI_DelSTARspCb wdiDelSTARspCb,
2662 void* pUserData
2663)
2664{
2665 WDI_EventInfoType wdiEventData;
2666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2667
2668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002669 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002670 ------------------------------------------------------------------------*/
2671 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2672 {
2673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2674 "WDI API call before module is initialized - Fail request");
2675
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 }
2678
2679 /*------------------------------------------------------------------------
2680 Fill in Event data and post to the Main FSM
2681 ------------------------------------------------------------------------*/
2682 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 wdiEventData.pEventData = pwdiDelSTAParams;
2684 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2685 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002686 wdiEventData.pUserData = pUserData;
2687
2688 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2689
2690}/*WDI_DelSTAReq*/
2691
Jeff Johnsone7245742012-09-05 17:12:55 -07002692/*========================================================================
2693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002695
Jeff Johnson295189b2012-06-20 16:38:30 -07002696==========================================================================*/
2697
2698/**
2699 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2700 install a BSS encryption key on the HW. Upon the call of this
2701 API the WLAN DAL will pack and send a Set BSS Key request
2702 message to the lower RIVA sub-system if DAL is in state
2703 STARTED.
2704
2705 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002707
2708 WDI_PostAssocReq must have been called.
2709
Jeff Johnsone7245742012-09-05 17:12:55 -07002710 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 wdiSetBSSKeyRspCb: callback for passing back the
2714 response of the set BSS Key operation received from the
2715 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 callback
2719
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 @see WDI_PostAssocReq
2721 @return Result of the function call
2722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002724WDI_SetBSSKeyReq
2725(
2726 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2727 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2728 void* pUserData
2729)
2730{
2731 WDI_EventInfoType wdiEventData;
2732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2733
2734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 ------------------------------------------------------------------------*/
2737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2738 {
2739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2740 "WDI API call before module is initialized - Fail request");
2741
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 }
2744
2745 /*------------------------------------------------------------------------
2746 Fill in Event data and post to the Main FSM
2747 ------------------------------------------------------------------------*/
2748 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2750 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2751 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002752 wdiEventData.pUserData = pUserData;
2753
2754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2755
2756}/*WDI_SetBSSKeyReq*/
2757
2758/**
2759 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2760 uninstall a BSS key from HW. Upon the call of this API the
2761 WLAN DAL will pack and send a HAL Remove BSS Key request
2762 message to the lower RIVA sub-system if DAL is in state
2763 STARTED.
2764
2765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002767
2768 WDI_SetBSSKeyReq must have been called.
2769
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002772
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 wdiRemoveBSSKeyRspCb: callback for passing back the
2774 response of the remove BSS key operation received from
2775 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002776
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002778 callback
2779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 @see WDI_SetBSSKeyReq
2781 @return Result of the function call
2782*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002784WDI_RemoveBSSKeyReq
2785(
2786 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2787 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2788 void* pUserData
2789)
2790{
2791 WDI_EventInfoType wdiEventData;
2792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2793
2794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 ------------------------------------------------------------------------*/
2797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2798 {
2799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2800 "WDI API call before module is initialized - Fail request");
2801
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002803 }
2804
2805 /*------------------------------------------------------------------------
2806 Fill in Event data and post to the Main FSM
2807 ------------------------------------------------------------------------*/
2808 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002809 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2810 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2811 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002812 wdiEventData.pUserData = pUserData;
2813
2814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2815
2816}/*WDI_RemoveBSSKeyReq*/
2817
2818
2819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002820 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002821 ready to install a STA(ast) encryption key in HW. Upon
2822 the call of this API the WLAN DAL will pack and send a
2823 HAL Set STA Key request message to the lower RIVA
2824 sub-system if DAL is in state STARTED.
2825
2826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002828
2829 WDI_PostAssocReq must have been called.
2830
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002833
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 wdiSetSTAKeyRspCb: callback for passing back the
2835 response of the set STA key operation received from the
2836 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002837
Jeff Johnson295189b2012-06-20 16:38:30 -07002838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002839 callback
2840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 @see WDI_PostAssocReq
2842 @return Result of the function call
2843*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002844WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002845WDI_SetSTAKeyReq
2846(
2847 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2848 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2849 void* pUserData
2850)
2851{
2852 WDI_EventInfoType wdiEventData;
2853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2854
2855 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 ------------------------------------------------------------------------*/
2858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2859 {
2860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2861 "WDI API call before module is initialized - Fail request");
2862
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002864 }
2865
2866 /*------------------------------------------------------------------------
2867 Fill in Event data and post to the Main FSM
2868 ------------------------------------------------------------------------*/
2869 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002870 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2871 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2872 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002873 wdiEventData.pUserData = pUserData;
2874
2875 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2876
2877}/*WDI_SetSTAKeyReq*/
2878
2879
2880/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 wants to uninstall a previously set STA key in HW. Upon
2883 the call of this API the WLAN DAL will pack and send a
2884 HAL Remove STA Key request message to the lower RIVA
2885 sub-system if DAL is in state STARTED.
2886
2887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002889
2890 WDI_SetSTAKeyReq must have been called.
2891
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002894
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 wdiRemoveSTAKeyRspCb: callback for passing back the
2896 response of the remove STA key operation received from
2897 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002898
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 callback
2901
Jeff Johnson295189b2012-06-20 16:38:30 -07002902 @see WDI_SetSTAKeyReq
2903 @return Result of the function call
2904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002906WDI_RemoveSTAKeyReq
2907(
2908 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2909 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2910 void* pUserData
2911)
2912{
2913 WDI_EventInfoType wdiEventData;
2914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2915
2916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002918 ------------------------------------------------------------------------*/
2919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2920 {
2921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2922 "WDI API call before module is initialized - Fail request");
2923
Jeff Johnsone7245742012-09-05 17:12:55 -07002924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 }
2926
2927 /*------------------------------------------------------------------------
2928 Fill in Event data and post to the Main FSM
2929 ------------------------------------------------------------------------*/
2930 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002931 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2932 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2933 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002934 wdiEventData.pUserData = pUserData;
2935
2936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2937
2938}/*WDI_RemoveSTAKeyReq*/
2939
2940
2941/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 wants to install a STA Bcast encryption key on the HW.
2944 Upon the call of this API the WLAN DAL will pack and
2945 send a HAL Start request message to the lower RIVA
2946 sub-system if DAL is in state STARTED.
2947
2948 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002950
2951 WDI_PostAssocReq must have been called.
2952
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002955
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 wdiSetSTABcastKeyRspCb: callback for passing back the
2957 response of the set BSS Key operation received from the
2958 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002959
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 callback
2962
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 @see WDI_PostAssocReq
2964 @return Result of the function call
2965*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002966WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002967WDI_SetSTABcastKeyReq
2968(
2969 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2970 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2971 void* pUserData
2972)
2973
2974{
2975 WDI_EventInfoType wdiEventData;
2976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2977
2978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 ------------------------------------------------------------------------*/
2981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2982 {
2983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2984 "WDI API call before module is initialized - Fail request");
2985
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 }
2988
2989 /*------------------------------------------------------------------------
2990 Fill in Event data and post to the Main FSM
2991 ------------------------------------------------------------------------*/
2992 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002993 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2994 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2995 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 wdiEventData.pUserData = pUserData;
2997
2998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2999
3000}/*WDI_SetSTABcastKeyReq*/
3001
3002/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 MAC wants to uninstall a STA Bcast key from HW. Upon the
3005 call of this API the WLAN DAL will pack and send a HAL
3006 Remove STA Bcast Key request message to the lower RIVA
3007 sub-system if DAL is in state STARTED.
3008
3009 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003011
3012 WDI_SetSTABcastKeyReq must have been called.
3013
Jeff Johnsone7245742012-09-05 17:12:55 -07003014 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003015 parameters as specified by the Device
3016 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003017
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3019 response of the remove STA Bcast key operation received
3020 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 callback
3024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 @see WDI_SetSTABcastKeyReq
3026 @return Result of the function call
3027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003029WDI_RemoveSTABcastKeyReq
3030(
3031 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3032 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3033 void* pUserData
3034)
3035{
3036 WDI_EventInfoType wdiEventData;
3037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3038
3039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 ------------------------------------------------------------------------*/
3042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3043 {
3044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3045 "WDI API call before module is initialized - Fail request");
3046
Jeff Johnsone7245742012-09-05 17:12:55 -07003047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 }
3049
3050 /*------------------------------------------------------------------------
3051 Fill in Event data and post to the Main FSM
3052 ------------------------------------------------------------------------*/
3053 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003054 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3055 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3056 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiEventData.pUserData = pUserData;
3058
3059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3060
3061}/*WDI_RemoveSTABcastKeyReq*/
3062
3063/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 MAC wants to set Max Tx Power to HW. Upon the
3066 call of this API the WLAN DAL will pack and send a HAL
3067 Remove STA Bcast Key request message to the lower RIVA
3068 sub-system if DAL is in state STARTED.
3069
3070 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003072
3073 WDI_SetSTABcastKeyReq must have been called.
3074
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003076 parameters as specified by the Device
3077 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003078
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3080 response of the remove STA Bcast key operation received
3081 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003082
Jeff Johnson295189b2012-06-20 16:38:30 -07003083 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003084 callback
3085
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 @see WDI_SetMaxTxPowerReq
3087 @return Result of the function call
3088*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003089WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003090WDI_SetMaxTxPowerReq
3091(
3092 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3093 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3094 void* pUserData
3095)
3096{
3097 WDI_EventInfoType wdiEventData;
3098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3099
3100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003102 ------------------------------------------------------------------------*/
3103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3104 {
3105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3106 "WDI API call before module is initialized - Fail request");
3107
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 }
3110
3111 /*------------------------------------------------------------------------
3112 Fill in Event data and post to the Main FSM
3113 ------------------------------------------------------------------------*/
3114 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3116 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3117 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003118 wdiEventData.pUserData = pUserData;
3119
3120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3121}
3122
schang86c22c42013-03-13 18:41:24 -07003123/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003124 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3125 MAC wants to set Max Tx Power to HW for specific band.
3126
3127 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3128
3129 wdiReqStatusCb: callback for passing back the
3130 response msg from the device
3131
3132 pUserData: user data will be passed back with the
3133 callback
3134
3135 @see WDI_SetMaxTxPowerPerBandReq
3136 @return Result of the function call
3137*/
3138WDI_Status
3139WDI_SetMaxTxPowerPerBandReq
3140(
3141 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3142 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3143 void* pUserData
3144)
3145{
3146 WDI_EventInfoType wdiEventData;
3147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3148
3149 /*------------------------------------------------------------------------
3150 Sanity Check
3151 ------------------------------------------------------------------------*/
3152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3153 {
3154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3155 "WDI API call before module is initialized - Fail request");
3156
3157 return WDI_STATUS_E_NOT_ALLOWED;
3158 }
3159
3160 /*------------------------------------------------------------------------
3161 Fill in Event data and post to the Main FSM
3162 ------------------------------------------------------------------------*/
3163 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3164 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3165 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3166 wdiEventData.pCBfnc = wdiReqStatusCb;
3167 wdiEventData.pUserData = pUserData;
3168
3169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3170}
3171
3172/**
schang86c22c42013-03-13 18:41:24 -07003173 @brief WDI_SetTxPowerReq will be called when the upper
3174 MAC wants to set Tx Power to HW.
3175 In state BUSY this request will be queued. Request won't
3176 be allowed in any other state.
3177
3178
3179 @param pwdiSetTxPowerParams: set TS Power parameters
3180 BSSID and target TX Power with dbm included
3181
3182 wdiReqStatusCb: callback for passing back the response
3183
3184 pUserData: user data will be passed back with the
3185 callback
3186
3187 @return Result of the function call
3188*/
3189WDI_Status
3190WDI_SetTxPowerReq
3191(
3192 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3193 WDA_SetTxPowerRspCb wdiReqStatusCb,
3194 void* pUserData
3195)
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
3201 Sanity Check
3202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
3208 return WDI_STATUS_E_NOT_ALLOWED;
3209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3215 wdiEventData.pEventData = pwdiSetTxPowerParams;
3216 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3217 wdiEventData.pCBfnc = wdiReqStatusCb;
3218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221}
3222
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003223#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003224WDI_Status
3225WDI_TSMStatsReq
3226(
3227 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3228 WDI_TsmRspCb wdiReqStatusCb,
3229 void* pUserData
3230)
3231{
3232 WDI_EventInfoType wdiEventData;
3233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003234 /*------------------------------------------------------------------------
3235 Sanity Check
3236 ------------------------------------------------------------------------*/
3237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3238 {
3239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3240 "WDI API call before module is initialized - Fail request");
3241
3242 return WDI_STATUS_E_NOT_ALLOWED;
3243 }
3244
3245 /*------------------------------------------------------------------------
3246 Fill in Event data and post to the Main FSM
3247 ------------------------------------------------------------------------*/
3248 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3249 wdiEventData.pEventData = pwdiTsmReqParams;
3250 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3251 wdiEventData.pCBfnc = wdiReqStatusCb;
3252 wdiEventData.pUserData = pUserData;
3253
3254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3255
3256}
3257#endif
3258
3259/*========================================================================
3260
3261 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003262
Jeff Johnson295189b2012-06-20 16:38:30 -07003263==========================================================================*/
3264
3265/**
3266 @brief WDI_AddTSReq will be called when the upper MAC to inform
3267 the device of a successful add TSpec negotiation. HW
3268 needs to receive the TSpec Info from the UMAC in order
3269 to configure properly the QoS data traffic. Upon the
3270 call of this API the WLAN DAL will pack and send a HAL
3271 Add TS request message to the lower RIVA sub-system if
3272 DAL is in state STARTED.
3273
3274 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003276
3277 WDI_PostAssocReq must have been called.
3278
3279 @param wdiAddTsReqParams: the add TS parameters as specified by
3280 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003281
Jeff Johnson295189b2012-06-20 16:38:30 -07003282 wdiAddTsRspCb: callback for passing back the response of
3283 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003284
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003286 callback
3287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 @see WDI_PostAssocReq
3289 @return Result of the function call
3290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003292WDI_AddTSReq
3293(
3294 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3295 WDI_AddTsRspCb wdiAddTsRspCb,
3296 void* pUserData
3297)
3298{
3299 WDI_EventInfoType wdiEventData;
3300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3301
3302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003304 ------------------------------------------------------------------------*/
3305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3306 {
3307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3308 "WDI API call before module is initialized - Fail request");
3309
Jeff Johnsone7245742012-09-05 17:12:55 -07003310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 }
3312
3313 /*------------------------------------------------------------------------
3314 Fill in Event data and post to the Main FSM
3315 ------------------------------------------------------------------------*/
3316 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 wdiEventData.pEventData = pwdiAddTsReqParams;
3318 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3319 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003320 wdiEventData.pUserData = pUserData;
3321
3322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3323
3324}/*WDI_AddTSReq*/
3325
3326
3327
3328/**
3329 @brief WDI_DelTSReq will be called when the upper MAC has ended
3330 admission on a specific AC. This is to inform HW that
3331 QoS traffic parameters must be rest. Upon the call of
3332 this API the WLAN DAL will pack and send a HAL Del TS
3333 request message to the lower RIVA sub-system if DAL is
3334 in state STARTED.
3335
3336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003338
3339 WDI_AddTSReq must have been called.
3340
3341 @param wdiDelTsReqParams: the del TS parameters as specified by
3342 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003343
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 wdiDelTsRspCb: callback for passing back the response of
3345 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003346
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 callback
3349
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 @see WDI_AddTSReq
3351 @return Result of the function call
3352*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003353WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003354WDI_DelTSReq
3355(
3356 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3357 WDI_DelTsRspCb wdiDelTsRspCb,
3358 void* pUserData
3359)
3360{
3361 WDI_EventInfoType wdiEventData;
3362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3363
3364 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003366 ------------------------------------------------------------------------*/
3367 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3368 {
3369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3370 "WDI API call before module is initialized - Fail request");
3371
Jeff Johnsone7245742012-09-05 17:12:55 -07003372 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 }
3374
3375 /*------------------------------------------------------------------------
3376 Fill in Event data and post to the Main FSM
3377 ------------------------------------------------------------------------*/
3378 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003379 wdiEventData.pEventData = pwdiDelTsReqParams;
3380 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3381 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003382 wdiEventData.pUserData = pUserData;
3383
3384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3385
3386}/*WDI_DelTSReq*/
3387
3388
3389
3390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 wishes to update the EDCA parameters used by HW for QoS
3393 data traffic. Upon the call of this API the WLAN DAL
3394 will pack and send a HAL Update EDCA Params request
3395 message to the lower RIVA sub-system if DAL is in state
3396 STARTED.
3397
3398 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003400
3401 WDI_PostAssocReq must have been called.
3402
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003405
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 wdiUpdateEDCAParamsRspCb: callback for passing back the
3407 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 callback
3411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 @see WDI_PostAssocReq
3413 @return Result of the function call
3414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003416WDI_UpdateEDCAParams
3417(
3418 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3419 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3420 void* pUserData
3421)
3422{
3423 WDI_EventInfoType wdiEventData;
3424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3425
3426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 ------------------------------------------------------------------------*/
3429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3430 {
3431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3432 "WDI API call before module is initialized - Fail request");
3433
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 }
3436
3437 /*------------------------------------------------------------------------
3438 Fill in Event data and post to the Main FSM
3439 ------------------------------------------------------------------------*/
3440 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3442 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3443 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 wdiEventData.pUserData = pUserData;
3445
3446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3447
3448}/*WDI_UpdateEDCAParams*/
3449
3450
3451/**
3452 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3453 successfully a BA session and needs to notify the HW for
3454 the appropriate settings to take place. Upon the call of
3455 this API the WLAN DAL will pack and send a HAL Add BA
3456 request message to the lower RIVA sub-system if DAL is
3457 in state STARTED.
3458
3459 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003461
3462 WDI_PostAssocReq must have been called.
3463
3464 @param wdiAddBAReqParams: the add BA parameters as specified by
3465 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003466
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 wdiAddBARspCb: callback for passing back the response of
3468 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003471 callback
3472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 @see WDI_PostAssocReq
3474 @return Result of the function call
3475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003477WDI_AddBASessionReq
3478(
3479 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3480 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3481 void* pUserData
3482)
3483{
3484 WDI_EventInfoType wdiEventData;
3485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3486
3487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 ------------------------------------------------------------------------*/
3490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3491 {
3492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3493 "WDI API call before module is initialized - Fail request");
3494
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 }
3497
3498 /*------------------------------------------------------------------------
3499 Fill in Event data and post to the Main FSM
3500 ------------------------------------------------------------------------*/
3501 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003502 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3503 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3504 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003505 wdiEventData.pUserData = pUserData;
3506
3507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3508
3509}/*WDI_AddBASessionReq*/
3510
3511/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003512 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 inform HW that it has deleted a previously created BA
3514 session. Upon the call of this API the WLAN DAL will
3515 pack and send a HAL Del BA request message to the lower
3516 RIVA sub-system if DAL is in state STARTED.
3517
3518 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003520
3521 WDI_AddBAReq must have been called.
3522
3523 @param wdiDelBAReqParams: the del BA parameters as specified by
3524 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003525
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 wdiDelBARspCb: callback for passing back the response of
3527 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003528
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003530 callback
3531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 @see WDI_AddBAReq
3533 @return Result of the function call
3534*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003536WDI_DelBAReq
3537(
3538 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3539 WDI_DelBARspCb wdiDelBARspCb,
3540 void* pUserData
3541)
3542{
3543 WDI_EventInfoType wdiEventData;
3544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3545
3546 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003547 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 ------------------------------------------------------------------------*/
3549 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3550 {
3551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3552 "WDI API call before module is initialized - Fail request");
3553
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 }
3556
3557 /*------------------------------------------------------------------------
3558 Fill in Event data and post to the Main FSM
3559 ------------------------------------------------------------------------*/
3560 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 wdiEventData.pEventData = pwdiDelBAReqParams;
3562 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3563 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003564 wdiEventData.pUserData = pUserData;
3565
3566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3567
3568}/*WDI_DelBAReq*/
3569
Jeff Johnsone7245742012-09-05 17:12:55 -07003570/*========================================================================
3571
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003573
Jeff Johnson295189b2012-06-20 16:38:30 -07003574==========================================================================*/
3575
3576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003577 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 wants to set the power save related configurations of
3579 the WLAN Device. Upon the call of this API the WLAN DAL
3580 will pack and send a HAL Update CFG request message to
3581 the lower RIVA sub-system if DAL is in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_Start must have been called.
3587
Jeff Johnsone7245742012-09-05 17:12:55 -07003588 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 wdiSetPwrSaveCfgCb: callback for passing back the
3592 response of the set power save cfg operation received
3593 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 callback
3597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003599 @return Result of the function call
3600*/
3601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003602WDI_SetPwrSaveCfgReq
3603(
3604 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3605 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3606 void* pUserData
3607)
3608{
3609 WDI_EventInfoType wdiEventData;
3610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3611
3612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 ------------------------------------------------------------------------*/
3615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3616 {
3617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3618 "WDI API call before module is initialized - Fail request");
3619
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 }
3622
3623 /*------------------------------------------------------------------------
3624 Fill in Event data and post to the Main FSM
3625 ------------------------------------------------------------------------*/
3626 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 wdiEventData.pEventData = pwdiPowerSaveCfg;
3628 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3629 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 wdiEventData.pUserData = pUserData;
3631
3632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3633
3634}/*WDI_SetPwrSaveCfgReq*/
3635
3636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 request the device to get into IMPS power state. Upon
3639 the call of this API the WLAN DAL will send a HAL Enter
3640 IMPS request message to the lower RIVA sub-system if DAL
3641 is in state STARTED.
3642
3643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003645
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
3647 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 response of the Enter IMPS operation received from the
3649 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 callback
3653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 @see WDI_Start
3655 @return Result of the function call
3656*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003658WDI_EnterImpsReq
3659(
Mihir Shetea4306052014-03-25 00:02:54 +05303660 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3662 void* pUserData
3663)
3664{
3665 WDI_EventInfoType wdiEventData;
3666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3667
3668 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 ------------------------------------------------------------------------*/
3671 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3672 {
3673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3674 "WDI API call before module is initialized - Fail request");
3675
Jeff Johnsone7245742012-09-05 17:12:55 -07003676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003677 }
3678
3679 /*------------------------------------------------------------------------
3680 Fill in Event data and post to the Main FSM
3681 ------------------------------------------------------------------------*/
3682 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303683 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3684 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 wdiEventData.pUserData = pUserData;
3687
3688 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3689
3690}/*WDI_EnterImpsReq*/
3691
3692/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 request the device to get out of IMPS power state. Upon
3695 the call of this API the WLAN DAL will send a HAL Exit
3696 IMPS request message to the lower RIVA sub-system if DAL
3697 is in state STARTED.
3698
3699 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003701
Jeff Johnson295189b2012-06-20 16:38:30 -07003702
Jeff Johnsone7245742012-09-05 17:12:55 -07003703
3704 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003706
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003708 callback
3709
Jeff Johnson295189b2012-06-20 16:38:30 -07003710 @see WDI_Start
3711 @return Result of the function call
3712*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003713WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003714WDI_ExitImpsReq
3715(
3716 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3717 void* pUserData
3718)
3719{
3720 WDI_EventInfoType wdiEventData;
3721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3722
3723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 ------------------------------------------------------------------------*/
3726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3727 {
3728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3729 "WDI API call before module is initialized - Fail request");
3730
Jeff Johnsone7245742012-09-05 17:12:55 -07003731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 }
3733
3734 /*------------------------------------------------------------------------
3735 Fill in Event data and post to the Main FSM
3736 ------------------------------------------------------------------------*/
3737 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pEventData = NULL;
3739 wdiEventData.uEventDataSize = 0;
3740 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 wdiEventData.pUserData = pUserData;
3742
3743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3744
3745}/*WDI_ExitImpsReq*/
3746
3747/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 request the device to get into BMPS power state. Upon
3750 the call of this API the WLAN DAL will pack and send a
3751 HAL Enter BMPS request message to the lower RIVA
3752 sub-system if DAL is in state STARTED.
3753
3754 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003756
3757 WDI_PostAssocReq must have been called.
3758
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003761
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 wdiEnterBmpsRspCb: callback for passing back the
3763 response of the Enter BMPS operation received from the
3764 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003765
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 callback
3768
Jeff Johnson295189b2012-06-20 16:38:30 -07003769 @see WDI_PostAssocReq
3770 @return Result of the function call
3771*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003772WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003773WDI_EnterBmpsReq
3774(
3775 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3776 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3777 void* pUserData
3778)
3779{
3780 WDI_EventInfoType wdiEventData;
3781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3782
3783 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 ------------------------------------------------------------------------*/
3786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3787 {
3788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3789 "WDI API call before module is initialized - Fail request");
3790
Jeff Johnsone7245742012-09-05 17:12:55 -07003791 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 }
3793
3794 /*------------------------------------------------------------------------
3795 Fill in Event data and post to the Main FSM
3796 ------------------------------------------------------------------------*/
3797 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3799 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3800 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 wdiEventData.pUserData = pUserData;
3802
3803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3804
3805}/*WDI_EnterBmpsReq*/
3806
3807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 request the device to get out of BMPS power state. Upon
3810 the call of this API the WLAN DAL will pack and send a
3811 HAL Exit BMPS request message to the lower RIVA
3812 sub-system if DAL is in state STARTED.
3813
3814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003816
3817 WDI_PostAssocReq must have been called.
3818
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003821
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiExitBmpsRspCb: callback for passing back the response
3823 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 callback
3827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 @see WDI_PostAssocReq
3829 @return Result of the function call
3830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003832WDI_ExitBmpsReq
3833(
3834 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3835 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3836 void* pUserData
3837)
3838{
3839 WDI_EventInfoType wdiEventData;
3840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3841
3842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 ------------------------------------------------------------------------*/
3845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3846 {
3847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3848 "WDI API call before module is initialized - Fail request");
3849
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 }
3852
3853 /*------------------------------------------------------------------------
3854 Fill in Event data and post to the Main FSM
3855 ------------------------------------------------------------------------*/
3856 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003857 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3858 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3859 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 wdiEventData.pUserData = pUserData;
3861
3862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3863
3864}/*WDI_ExitBmpsReq*/
3865
3866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 request the device to get into UAPSD power state. Upon
3869 the call of this API the WLAN DAL will pack and send a
3870 HAL Enter UAPSD request message to the lower RIVA
3871 sub-system if DAL is in state STARTED.
3872
3873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003875
3876 WDI_PostAssocReq must have been called.
3877 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003878
3879 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiEnterUapsdRspCb: callback for passing back the
3883 response of the Enter UAPSD operation received from the
3884 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3890 @return Result of the function call
3891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003893WDI_EnterUapsdReq
3894(
3895 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3896 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3897 void* pUserData
3898)
3899{
3900 WDI_EventInfoType wdiEventData;
3901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3902
3903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 ------------------------------------------------------------------------*/
3906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3907 {
3908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3909 "WDI API call before module is initialized - Fail request");
3910
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003912 }
3913
3914 /*------------------------------------------------------------------------
3915 Fill in Event data and post to the Main FSM
3916 ------------------------------------------------------------------------*/
3917 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3919 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3920 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 wdiEventData.pUserData = pUserData;
3922
3923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3924
3925}/*WDI_EnterUapsdReq*/
3926
3927/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 request the device to get out of UAPSD power state. Upon
3930 the call of this API the WLAN DAL will send a HAL Exit
3931 UAPSD request message to the lower RIVA sub-system if
3932 DAL is in state STARTED.
3933
3934 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003936
3937 WDI_PostAssocReq must have been called.
3938
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 response of the Exit UAPSD operation received from the
3941 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 callback
3945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 @see WDI_PostAssocReq
3947 @return Result of the function call
3948*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003950WDI_ExitUapsdReq
3951(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003952 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3954 void* pUserData
3955)
3956{
3957 WDI_EventInfoType wdiEventData;
3958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3959
3960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 ------------------------------------------------------------------------*/
3963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3964 {
3965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3966 "WDI API call before module is initialized - Fail request");
3967
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 }
3970
3971 /*------------------------------------------------------------------------
3972 Fill in Event data and post to the Main FSM
3973 ------------------------------------------------------------------------*/
3974 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003975 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3976 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 wdiEventData.pUserData = pUserData;
3979
3980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3981
3982}/*WDI_ExitUapsdReq*/
3983
3984/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 MAC wants to set the UAPSD related configurations
3987 of an associated STA (while acting as an AP) to the WLAN
3988 Device. Upon the call of this API the WLAN DAL will pack
3989 and send a HAL Update UAPSD params request message to
3990 the lower RIVA sub-system if DAL is in state STARTED.
3991
3992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003994
3995 WDI_ConfigBSSReq must have been called.
3996
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003999
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 wdiUpdateUapsdParamsCb: callback for passing back the
4001 response of the update UAPSD params operation received
4002 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004003
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 callback
4006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 @see WDI_ConfigBSSReq
4008 @return Result of the function call
4009*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004010WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004011WDI_UpdateUapsdParamsReq
4012(
4013 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4014 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4015 void* pUserData
4016)
4017{
4018 WDI_EventInfoType wdiEventData;
4019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4020
4021 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004022 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 ------------------------------------------------------------------------*/
4024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4025 {
4026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4027 "WDI API call before module is initialized - Fail request");
4028
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 }
4031
4032 /*------------------------------------------------------------------------
4033 Fill in Event data and post to the Main FSM
4034 ------------------------------------------------------------------------*/
4035 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004037 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 wdiEventData.pUserData = pUserData;
4040
4041 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4042
4043}/*WDI_UpdateUapsdParamsReq*/
4044
4045/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004047 MAC wants to set the UAPSD related configurations before
4048 requesting for enter UAPSD power state to the WLAN
4049 Device. Upon the call of this API the WLAN DAL will pack
4050 and send a HAL Set UAPSD params request message to
4051 the lower RIVA sub-system if DAL is in state STARTED.
4052
4053 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004055
4056 WDI_PostAssocReq must have been called.
4057
4058 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4059 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wdiSetUapsdAcParamsCb: callback for passing back the
4062 response of the set UAPSD params operation received from
4063 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004064
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 callback
4067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 @see WDI_PostAssocReq
4069 @return Result of the function call
4070*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004071WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004072WDI_SetUapsdAcParamsReq
4073(
4074 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4075 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4076 void* pUserData
4077)
4078{
4079 WDI_EventInfoType wdiEventData;
4080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4081
4082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004083 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004084 ------------------------------------------------------------------------*/
4085 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4086 {
4087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4088 "WDI API call before module is initialized - Fail request");
4089
Jeff Johnsone7245742012-09-05 17:12:55 -07004090 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 }
4092
4093 /*------------------------------------------------------------------------
4094 Fill in Event data and post to the Main FSM
4095 ------------------------------------------------------------------------*/
4096 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 wdiEventData.pEventData = pwdiUapsdInfo;
4098 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4099 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 wdiEventData.pUserData = pUserData;
4101
4102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4103
4104}/*WDI_SetUapsdAcParamsReq*/
4105
4106/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004107 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004108 MAC wants to set/reset the RXP filters for received pkts
4109 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4110 and send a HAL configure RXP filter request message to
4111 the lower RIVA sub-system.
4112
4113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004115
Jeff Johnsone7245742012-09-05 17:12:55 -07004116
4117 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 filter as specified by the Device
4119 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 wdiConfigureRxpFilterCb: callback for passing back the
4122 response of the configure RXP filter operation received
4123 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004126 callback
4127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 @return Result of the function call
4129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004131WDI_ConfigureRxpFilterReq
4132(
4133 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4134 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4135 void* pUserData
4136)
4137{
4138 WDI_EventInfoType wdiEventData;
4139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4140
4141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 ------------------------------------------------------------------------*/
4144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4145 {
4146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4147 "WDI API call before module is initialized - Fail request");
4148
Jeff Johnsone7245742012-09-05 17:12:55 -07004149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004150 }
4151
4152 /*------------------------------------------------------------------------
4153 Fill in Event data and post to the Main FSM
4154 ------------------------------------------------------------------------*/
4155 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4157 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4158 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 wdiEventData.pUserData = pUserData;
4160
4161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4162}/*WDI_ConfigureRxpFilterReq*/
4163
4164/**
4165 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4166 wants to set the beacon filters while in power save.
4167 Upon the call of this API the WLAN DAL will pack and
4168 send a Beacon filter request message to the
4169 lower RIVA sub-system.
4170
4171 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174
4175 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 filter as specified by the Device
4177 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004178
Jeff Johnson295189b2012-06-20 16:38:30 -07004179 wdiBeaconFilterCb: callback for passing back the
4180 response of the set beacon filter operation received
4181 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004182
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 callback
4185
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 @return Result of the function call
4187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004189WDI_SetBeaconFilterReq
4190(
4191 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4192 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4193 void* pUserData
4194)
4195{
4196 WDI_EventInfoType wdiEventData;
4197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4198
4199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 ------------------------------------------------------------------------*/
4202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4203 {
4204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4205 "WDI API call before module is initialized - Fail request");
4206
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 }
4209
4210 /*------------------------------------------------------------------------
4211 Fill in Event data and post to the Main FSM
4212 ------------------------------------------------------------------------*/
4213 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004215 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 wdiEventData.pUserData = pUserData;
4218
4219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4220}/*WDI_SetBeaconFilterReq*/
4221
4222/**
4223 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4224 wants to remove the beacon filter for particular IE
4225 while in power save. Upon the call of this API the WLAN
4226 DAL will pack and send a remove Beacon filter request
4227 message to the lower RIVA sub-system.
4228
4229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004231
Jeff Johnsone7245742012-09-05 17:12:55 -07004232
4233 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 filter as specified by the Device
4235 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004236
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiBeaconFilterCb: callback for passing back the
4238 response of the remove beacon filter operation received
4239 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004242 callback
4243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 @return Result of the function call
4245*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004246WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004247WDI_RemBeaconFilterReq
4248(
4249 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4250 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4251 void* pUserData
4252)
4253{
4254 WDI_EventInfoType wdiEventData;
4255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4256
4257 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 ------------------------------------------------------------------------*/
4260 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4261 {
4262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4263 "WDI API call before module is initialized - Fail request");
4264
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004266 }
4267
4268 /*------------------------------------------------------------------------
4269 Fill in Event data and post to the Main FSM
4270 ------------------------------------------------------------------------*/
4271 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004273 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 wdiEventData.pUserData = pUserData;
4276
4277 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4278}/*WDI_RemBeaconFilterReq*/
4279
4280/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 MAC wants to set the RSSI thresholds related
4283 configurations while in power save. Upon the call of
4284 this API the WLAN DAL will pack and send a HAL Set RSSI
4285 thresholds request message to the lower RIVA
4286 sub-system if DAL is in state STARTED.
4287
4288 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004290
4291 WDI_PostAssocReq must have been called.
4292
4293 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4294 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004295
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 wdiSetUapsdAcParamsCb: callback for passing back the
4297 response of the set UAPSD params operation received from
4298 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004301 callback
4302
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 @see WDI_PostAssocReq
4304 @return Result of the function call
4305*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004306WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004307WDI_SetRSSIThresholdsReq
4308(
4309 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4310 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4311 void* pUserData
4312)
4313{
4314 WDI_EventInfoType wdiEventData;
4315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4316
4317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 ------------------------------------------------------------------------*/
4320 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4321 {
4322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4323 "WDI API call before module is initialized - Fail request");
4324
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 }
4327
4328 /*------------------------------------------------------------------------
4329 Fill in Event data and post to the Main FSM
4330 ------------------------------------------------------------------------*/
4331 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004333 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004334 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004335 wdiEventData.pUserData = pUserData;
4336
4337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4338}/* WDI_SetRSSIThresholdsReq*/
4339
4340/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 wants to set the filter to minimize unnecessary host
4343 wakeup due to broadcast traffic while in power save.
4344 Upon the call of this API the WLAN DAL will pack and
4345 send a HAL host offload request message to the
4346 lower RIVA sub-system if DAL is in state STARTED.
4347
4348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004350
4351 WDI_PostAssocReq must have been called.
4352
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004355
Jeff Johnson295189b2012-06-20 16:38:30 -07004356 wdiHostOffloadCb: callback for passing back the response
4357 of the host offload operation received from the
4358 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004361 callback
4362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 @see WDI_PostAssocReq
4364 @return Result of the function call
4365*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004366WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004367WDI_HostOffloadReq
4368(
4369 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4370 WDI_HostOffloadCb wdiHostOffloadCb,
4371 void* pUserData
4372)
4373{
4374 WDI_EventInfoType wdiEventData;
4375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4376
4377 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 ------------------------------------------------------------------------*/
4380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4381 {
4382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4383 "WDI API call before module is initialized - Fail request");
4384
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 }
4387
4388 /*------------------------------------------------------------------------
4389 Fill in Event data and post to the Main FSM
4390 ------------------------------------------------------------------------*/
4391 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004393 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004394 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 wdiEventData.pUserData = pUserData;
4396
4397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4398}/*WDI_HostOffloadReq*/
4399
4400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 @brief WDI_KeepAliveReq will be called when the upper MAC
4402 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 and minimize unnecessary host wakeups due to while in power save.
4404 Upon the call of this API the WLAN DAL will pack and
4405 send a HAL Keep Alive request message to the
4406 lower RIVA sub-system if DAL is in state STARTED.
4407
4408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004410
4411 WDI_PostAssocReq must have been called.
4412
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wdiKeepAliveCb: callback for passing back the response
4417 of the Keep Alive operation received from the
4418 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004421 callback
4422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 @see WDI_PostAssocReq
4424 @return Result of the function call
4425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004427WDI_KeepAliveReq
4428(
4429 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4430 WDI_KeepAliveCb wdiKeepAliveCb,
4431 void* pUserData
4432)
4433{
4434 WDI_EventInfoType wdiEventData;
4435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4436
4437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 ------------------------------------------------------------------------*/
4440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4441 {
4442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4443 "WDI_KeepAliveReq: WDI API call before module "
4444 "is initialized - Fail request");
4445
Jeff Johnsone7245742012-09-05 17:12:55 -07004446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004447 }
4448
4449 /*------------------------------------------------------------------------
4450 Fill in Event data and post to the Main FSM
4451 ------------------------------------------------------------------------*/
4452 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 wdiEventData.pEventData = pwdiKeepAliveParams;
4454 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4455 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004456 wdiEventData.pUserData = pUserData;
4457
4458 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4459}/*WDI_KeepAliveReq*/
4460
4461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004462 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004463 wants to set the Wowl Bcast ptrn to minimize unnecessary
4464 host wakeup due to broadcast traffic while in power
4465 save. Upon the call of this API the WLAN DAL will pack
4466 and send a HAL Wowl Bcast ptrn request message to the
4467 lower RIVA sub-system if DAL is in state STARTED.
4468
4469 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004471
4472 WDI_PostAssocReq must have been called.
4473
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004476
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 wdiWowlAddBcPtrnCb: callback for passing back the
4478 response of the add Wowl bcast ptrn operation received
4479 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004480
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004482 callback
4483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 @see WDI_PostAssocReq
4485 @return Result of the function call
4486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004488WDI_WowlAddBcPtrnReq
4489(
4490 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4491 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4492 void* pUserData
4493)
4494{
4495 WDI_EventInfoType wdiEventData;
4496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4497
4498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 ------------------------------------------------------------------------*/
4501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4502 {
4503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4504 "WDI API call before module is initialized - Fail request");
4505
Jeff Johnsone7245742012-09-05 17:12:55 -07004506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004507 }
4508
4509 /*------------------------------------------------------------------------
4510 Fill in Event data and post to the Main FSM
4511 ------------------------------------------------------------------------*/
4512 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004514 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 wdiEventData.pUserData = pUserData;
4517
4518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4519}/*WDI_WowlAddBcPtrnReq*/
4520
4521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 wants to clear the Wowl Bcast ptrn. Upon the call of
4524 this API the WLAN DAL will pack and send a HAL delete
4525 Wowl Bcast ptrn request message to the lower RIVA
4526 sub-system if DAL is in state STARTED.
4527
4528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004530
4531 WDI_WowlAddBcPtrnReq must have been called.
4532
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004535
Jeff Johnson295189b2012-06-20 16:38:30 -07004536 wdiWowlDelBcPtrnCb: callback for passing back the
4537 response of the del Wowl bcast ptrn operation received
4538 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004539
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 callback
4542
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 @see WDI_WowlAddBcPtrnReq
4544 @return Result of the function call
4545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004547WDI_WowlDelBcPtrnReq
4548(
4549 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4550 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4551 void* pUserData
4552)
4553{
4554 WDI_EventInfoType wdiEventData;
4555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4556
4557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 ------------------------------------------------------------------------*/
4560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4561 {
4562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4563 "WDI API call before module is initialized - Fail request");
4564
Jeff Johnsone7245742012-09-05 17:12:55 -07004565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004566 }
4567
4568 /*------------------------------------------------------------------------
4569 Fill in Event data and post to the Main FSM
4570 ------------------------------------------------------------------------*/
4571 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004572 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004573 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004574 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 wdiEventData.pUserData = pUserData;
4576
4577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4578}/*WDI_WowlDelBcPtrnReq*/
4579
4580/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004582 wants to enter the Wowl state to minimize unnecessary
4583 host wakeup while in power save. Upon the call of this
4584 API the WLAN DAL will pack and send a HAL Wowl enter
4585 request message to the lower RIVA sub-system if DAL is
4586 in state STARTED.
4587
4588 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004590
4591 WDI_PostAssocReq must have been called.
4592
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004594 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004595
Jeff Johnson295189b2012-06-20 16:38:30 -07004596 wdiWowlEnterReqCb: callback for passing back the
4597 response of the enter Wowl operation received from the
4598 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 callback
4602
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 @see WDI_PostAssocReq
4604 @return Result of the function call
4605*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004606WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004607WDI_WowlEnterReq
4608(
4609 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4610 WDI_WowlEnterReqCb wdiWowlEnterCb,
4611 void* pUserData
4612)
4613{
4614 WDI_EventInfoType wdiEventData;
4615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4616
4617 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 ------------------------------------------------------------------------*/
4620 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4621 {
4622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4623 "WDI API call before module is initialized - Fail request");
4624
Jeff Johnsone7245742012-09-05 17:12:55 -07004625 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004626 }
4627
4628 /*------------------------------------------------------------------------
4629 Fill in Event data and post to the Main FSM
4630 ------------------------------------------------------------------------*/
4631 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004633 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004635 wdiEventData.pUserData = pUserData;
4636
4637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4638}/*WDI_WowlEnterReq*/
4639
4640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 wants to exit the Wowl state. Upon the call of this API
4643 the WLAN DAL will pack and send a HAL Wowl exit request
4644 message to the lower RIVA sub-system if DAL is in state
4645 STARTED.
4646
4647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004649
4650 WDI_WowlEnterReq must have been called.
4651
Jeff Johnsone7245742012-09-05 17:12:55 -07004652 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004653 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004654
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 wdiWowlExitReqCb: callback for passing back the response
4656 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004657
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004659 callback
4660
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 @see WDI_WowlEnterReq
4662 @return Result of the function call
4663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004665WDI_WowlExitReq
4666(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004667 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 WDI_WowlExitReqCb wdiWowlExitCb,
4669 void* pUserData
4670)
4671{
4672 WDI_EventInfoType wdiEventData;
4673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4674
4675 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 ------------------------------------------------------------------------*/
4678 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4679 {
4680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4681 "WDI API call before module is initialized - Fail request");
4682
Jeff Johnsone7245742012-09-05 17:12:55 -07004683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004684 }
4685
4686 /*------------------------------------------------------------------------
4687 Fill in Event data and post to the Main FSM
4688 ------------------------------------------------------------------------*/
4689 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004690 wdiEventData.pEventData = pwdiWowlExitParams;
4691 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004692 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 wdiEventData.pUserData = pUserData;
4694
4695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4696}/*WDI_WowlExitReq*/
4697
4698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004700 the upper MAC wants to dynamically adjusts the listen
4701 interval based on the WLAN/MSM activity. Upon the call
4702 of this API the WLAN DAL will pack and send a HAL
4703 configure Apps Cpu Wakeup State request message to the
4704 lower RIVA sub-system.
4705
4706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004708
Jeff Johnsone7245742012-09-05 17:12:55 -07004709
4710 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004711 Apps Cpu Wakeup State as specified by the
4712 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004713
Jeff Johnson295189b2012-06-20 16:38:30 -07004714 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4715 back the response of the configure Apps Cpu Wakeup State
4716 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004717
Jeff Johnson295189b2012-06-20 16:38:30 -07004718 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004719 callback
4720
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 @return Result of the function call
4722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004724WDI_ConfigureAppsCpuWakeupStateReq
4725(
4726 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4727 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4728 void* pUserData
4729)
4730{
4731 WDI_EventInfoType wdiEventData;
4732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4733
4734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004736 ------------------------------------------------------------------------*/
4737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4738 {
4739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4740 "WDI API call before module is initialized - Fail request");
4741
Jeff Johnsone7245742012-09-05 17:12:55 -07004742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004743 }
4744
4745 /*------------------------------------------------------------------------
4746 Fill in Event data and post to the Main FSM
4747 ------------------------------------------------------------------------*/
4748 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004749 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4750 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4751 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 wdiEventData.pUserData = pUserData;
4753
4754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4755}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 to to perform a flush operation on a given AC. Upon the
4759 call of this API the WLAN DAL will pack and send a HAL
4760 Flush AC request message to the lower RIVA sub-system if
4761 DAL is in state STARTED.
4762
4763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004765
4766 WDI_AddBAReq must have been called.
4767
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004770
Jeff Johnson295189b2012-06-20 16:38:30 -07004771 wdiFlushAcRspCb: callback for passing back the response
4772 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004773
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 callback
4776
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 @see WDI_AddBAReq
4778 @return Result of the function call
4779*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004780WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004781WDI_FlushAcReq
4782(
4783 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4784 WDI_FlushAcRspCb wdiFlushAcRspCb,
4785 void* pUserData
4786)
4787{
4788 WDI_EventInfoType wdiEventData;
4789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4790
4791 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004792 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 ------------------------------------------------------------------------*/
4794 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4795 {
4796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4797 "WDI API call before module is initialized - Fail request");
4798
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 }
4801
4802 /*------------------------------------------------------------------------
4803 Fill in Event data and post to the Main FSM
4804 ------------------------------------------------------------------------*/
4805 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 wdiEventData.pEventData = pwdiFlushAcReqParams;
4807 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4808 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 wdiEventData.pUserData = pUserData;
4810
4811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4812
4813}/*WDI_FlushAcReq*/
4814
4815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 wants to notify the lower mac on a BT AMP event. This is
4818 to inform BTC-SLM that some BT AMP event occurred. Upon
4819 the call of this API the WLAN DAL will pack and send a
4820 HAL BT AMP event request message to the lower RIVA
4821 sub-system if DAL is in state STARTED.
4822
4823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004825
Jeff Johnsone7245742012-09-05 17:12:55 -07004826
4827 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004829
Jeff Johnson295189b2012-06-20 16:38:30 -07004830 wdiBtAmpEventRspCb: callback for passing back the
4831 response of the BT AMP event operation received from the
4832 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 callback
4836
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 @return Result of the function call
4838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004840WDI_BtAmpEventReq
4841(
4842 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4843 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4844 void* pUserData
4845)
4846{
4847 WDI_EventInfoType wdiEventData;
4848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4849
4850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 ------------------------------------------------------------------------*/
4853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4854 {
4855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4856 "WDI API call before module is initialized - Fail request");
4857
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 }
4860
4861 /*------------------------------------------------------------------------
4862 Fill in Event data and post to the Main FSM
4863 ------------------------------------------------------------------------*/
4864 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004865 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4866 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4867 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 wdiEventData.pUserData = pUserData;
4869
4870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4871
4872}/*WDI_BtAmpEventReq*/
4873
Jeff Johnsone7245742012-09-05 17:12:55 -07004874#ifdef FEATURE_OEM_DATA_SUPPORT
4875/**
4876 @brief WDI_Start Oem Data Req will be called when the upper MAC
4877 wants to notify the lower mac on a oem data Req event.Upon
4878 the call of this API the WLAN DAL will pack and send a
4879 HAL OEM Data Req event request message to the lower RIVA
4880 sub-system if DAL is in state STARTED.
4881
4882 In state BUSY this request will be queued. Request won't
4883 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004884
4885
Jeff Johnsone7245742012-09-05 17:12:55 -07004886
4887 @param pwdiOemDataReqParams: the Oem Data Req as
4888 specified by the Device Interface
4889
4890 wdiStartOemDataRspCb: callback for passing back the
4891 response of the Oem Data Req received from the
4892 device
4893
4894 pUserData: user data will be passed back with the
4895 callback
4896
4897 @return Result of the function call
4898*/
4899WDI_Status
4900WDI_StartOemDataReq
4901(
4902 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4903 WDI_oemDataRspCb wdiOemDataRspCb,
4904 void* pUserData
4905)
4906{
4907 WDI_EventInfoType wdiEventData;
4908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4909
4910 /*------------------------------------------------------------------------
4911 Sanity Check
4912 ------------------------------------------------------------------------*/
4913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4914 {
4915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4916 "WDI API call before module is initialized - Fail request");
4917
4918 return WDI_STATUS_E_NOT_ALLOWED;
4919 }
4920
4921 /*------------------------------------------------------------------------
4922 Fill in Event data and post to the Main FSM
4923 ------------------------------------------------------------------------*/
4924 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4925 wdiEventData.pEventData = pwdiOemDataReqParams;
4926 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4927 wdiEventData.pCBfnc = wdiOemDataRspCb;
4928 wdiEventData.pUserData = pUserData;
4929
4930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4931
4932
4933}
4934
4935#endif
4936
4937
4938/*========================================================================
4939
Jeff Johnson295189b2012-06-20 16:38:30 -07004940 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004941
Jeff Johnson295189b2012-06-20 16:38:30 -07004942==========================================================================*/
4943/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 the WLAN HW to change the current channel of operation.
4946 Upon the call of this API the WLAN DAL will pack and
4947 send a HAL Start request message to the lower RIVA
4948 sub-system if DAL is in state STARTED.
4949
4950 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004951 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004952
4953 WDI_Start must have been called.
4954
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004957
Jeff Johnson295189b2012-06-20 16:38:30 -07004958 wdiSwitchChRspCb: callback for passing back the response
4959 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004960
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 callback
4963
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 @see WDI_Start
4965 @return Result of the function call
4966*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004967WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004968WDI_SwitchChReq
4969(
4970 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4971 WDI_SwitchChRspCb wdiSwitchChRspCb,
4972 void* pUserData
4973)
4974{
4975 WDI_EventInfoType wdiEventData;
4976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4977
4978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 ------------------------------------------------------------------------*/
4981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4982 {
4983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4984 "WDI API call before module is initialized - Fail request");
4985
Jeff Johnsone7245742012-09-05 17:12:55 -07004986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 }
4988
4989 /*------------------------------------------------------------------------
4990 Fill in Event data and post to the Main FSM
4991 ------------------------------------------------------------------------*/
4992 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 wdiEventData.pEventData = pwdiSwitchChReqParams;
4994 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4995 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 wdiEventData.pUserData = pUserData;
4997
4998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4999
5000}/*WDI_SwitchChReq*/
5001
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005002/**
5003 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5004 the WLAN HW to change the current channel of operation.
5005 Upon the call of this API the WLAN DAL will pack and
5006 send a HAL Start request message to the lower RIVA
5007 sub-system if DAL is in state STARTED.
5008 This request message also includes source of channel switch,
5009 like CSA,
5010
5011 In state BUSY this request will be queued. Request won't
5012 be allowed in any other state.
5013
5014 WDI_Start must have been called.
5015
5016 @param wdiSwitchChReqParams: the switch ch parameters as
5017 specified by the Device Interface
5018
5019 wdiSwitchChRspCb: callback for passing back the response
5020 of the switch ch operation received from the device
5021
5022 pUserData: user data will be passed back with the
5023 callback
5024
5025 @see WDI_Start
5026 @return Result of the function call
5027*/
5028WDI_Status
5029WDI_SwitchChReq_V1
5030(
5031 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5032 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5033 void* pUserData
5034)
5035{
5036 WDI_EventInfoType wdiEventData;
5037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5039 "WDI API call WDI_SwitchChReq_V1");
5040 /*------------------------------------------------------------------------
5041 Sanity Check
5042 ------------------------------------------------------------------------*/
5043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5044 {
5045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5046 "WDI API call before module is initialized - Fail request");
5047
5048 return WDI_STATUS_E_NOT_ALLOWED;
5049 }
5050
5051 /*------------------------------------------------------------------------
5052 Fill in Event data and post to the Main FSM
5053 ------------------------------------------------------------------------*/
5054 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5055 wdiEventData.pEventData = pwdiSwitchChReqParams;
5056 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5057 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5058 wdiEventData.pUserData = pUserData;
5059
5060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5061
5062}/*WDI_SwitchChReq_V1*/
5063
Jeff Johnson295189b2012-06-20 16:38:30 -07005064
5065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 wishes to add or update a STA in HW. Upon the call of
5068 this API the WLAN DAL will pack and send a HAL Start
5069 message request message to the lower RIVA sub-system if
5070 DAL is in state STARTED.
5071
5072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005074
5075 WDI_Start must have been called.
5076
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005079
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 wdiConfigSTARspCb: callback for passing back the
5081 response of the config STA operation received from the
5082 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005083
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 callback
5086
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 @see WDI_Start
5088 @return Result of the function call
5089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005091WDI_ConfigSTAReq
5092(
5093 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5094 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5095 void* pUserData
5096)
5097{
5098 WDI_EventInfoType wdiEventData;
5099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5100
5101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 ------------------------------------------------------------------------*/
5104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5105 {
5106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5107 "WDI API call before module is initialized - Fail request");
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 }
5111
5112 /*------------------------------------------------------------------------
5113 Fill in Event data and post to the Main FSM
5114 ------------------------------------------------------------------------*/
5115 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5117 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5118 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005119 wdiEventData.pUserData = pUserData;
5120
5121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5122
5123}/*WDI_ConfigSTAReq*/
5124
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005125 /**
5126 @brief WDI_UpdateChannelReq will be called when the upper MAC
5127 wants to update the channel list on change in country code.
5128
5129 In state BUSY this request will be queued. Request won't
5130 be allowed in any other state.
5131
5132 WDI_UpdateChannelReq must have been called.
5133
5134 @param wdiUpdateChannelReqParams: the updated channel parameters
5135 as specified by the Device Interface
5136
5137 wdiUpdateChannelRspCb: callback for passing back the
5138 response of the update channel operation received from
5139 the device
5140
5141 pUserData: user data will be passed back with the
5142 callback
5143
5144 @return Result of the function call
5145*/
5146WDI_Status
5147WDI_UpdateChannelReq
5148(
5149 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5150 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5151 void* pUserData
5152)
5153{
5154 WDI_EventInfoType wdiEventData = {{0}};
5155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5156
5157 /*------------------------------------------------------------------------
5158 Sanity Check
5159 ------------------------------------------------------------------------*/
5160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5161 {
5162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5163 "WDI API call before module is initialized - Fail request");
5164
5165 return WDI_STATUS_E_NOT_ALLOWED;
5166 }
5167
5168 /*------------------------------------------------------------------------
5169 Fill in Event data and post to the Main FSM
5170 ------------------------------------------------------------------------*/
5171 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5172 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5173 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5174 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5175 wdiEventData.pUserData = pUserData;
5176
5177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5178
5179}/*WDI_UpdateChannelReq*/
5180
Jeff Johnson295189b2012-06-20 16:38:30 -07005181/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 wants to change the state of an ongoing link. Upon the
5184 call of this API the WLAN DAL will pack and send a HAL
5185 Start message request message to the lower RIVA
5186 sub-system if DAL is in state STARTED.
5187
5188 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005190
5191 WDI_JoinStartReq must have been called.
5192
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005195
Jeff Johnson295189b2012-06-20 16:38:30 -07005196 wdiSetLinkStateRspCb: callback for passing back the
5197 response of the set link state operation received from
5198 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005199
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 callback
5202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 @see WDI_JoinStartReq
5204 @return Result of the function call
5205*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005206WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005207WDI_SetLinkStateReq
5208(
5209 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5210 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5211 void* pUserData
5212)
5213{
5214 WDI_EventInfoType wdiEventData;
5215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5216
5217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 ------------------------------------------------------------------------*/
5220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5221 {
5222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5223 "WDI API call before module is initialized - Fail request");
5224
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 }
5227
5228 /*------------------------------------------------------------------------
5229 Fill in Event data and post to the Main FSM
5230 ------------------------------------------------------------------------*/
5231 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5233 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5234 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 wdiEventData.pUserData = pUserData;
5236
5237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5238
5239}/*WDI_SetLinkStateReq*/
5240
5241
5242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005243 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005244 to get statistics (MIB counters) from the device. Upon
5245 the call of this API the WLAN DAL will pack and send a
5246 HAL Start request message to the lower RIVA sub-system
5247 if DAL is in state STARTED.
5248
5249 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005251
5252 WDI_Start must have been called.
5253
Jeff Johnsone7245742012-09-05 17:12:55 -07005254 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005255 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005256
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 wdiGetStatsRspCb: callback for passing back the response
5258 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005259
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005261 callback
5262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 @see WDI_Start
5264 @return Result of the function call
5265*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005266WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005267WDI_GetStatsReq
5268(
5269 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5270 WDI_GetStatsRspCb wdiGetStatsRspCb,
5271 void* pUserData
5272)
5273{
5274 WDI_EventInfoType wdiEventData;
5275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5276
5277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 ------------------------------------------------------------------------*/
5280 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5281 {
5282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5283 "WDI API call before module is initialized - Fail request");
5284
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 }
5287
5288 /*------------------------------------------------------------------------
5289 Fill in Event data and post to the Main FSM
5290 ------------------------------------------------------------------------*/
5291 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 wdiEventData.pEventData = pwdiGetStatsReqParams;
5293 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5294 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005295 wdiEventData.pUserData = pUserData;
5296
5297 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5298
5299}/*WDI_GetStatsReq*/
5300
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005301#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005302/**
5303 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5304 to get roam rssi from the device. Upon
5305 the call of this API the WLAN DAL will pack and send a
5306 HAL Start request message to the lower RIVA sub-system
5307 if DAL is in state STARTED.
5308
5309 In state BUSY this request will be queued. Request won't
5310 be allowed in any other state.
5311
5312 WDI_Start must have been called.
5313
5314 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5315 specified by the Device Interface
5316
5317 wdiGetRoamRssiRspCb: callback for passing back the response
5318 of the get stats operation received from the device
5319
5320 pUserData: user data will be passed back with the
5321 callback
5322
5323 @see WDI_Start
5324 @return Result of the function call
5325*/
5326WDI_Status
5327WDI_GetRoamRssiReq
5328(
5329 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5330 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5331 void* pUserData
5332)
5333{
5334 WDI_EventInfoType wdiEventData;
5335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5336
5337 /*------------------------------------------------------------------------
5338 Sanity Check
5339 ------------------------------------------------------------------------*/
5340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5341 {
5342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5343 "WDI API call before module is initialized - Fail request");
5344
5345 return WDI_STATUS_E_NOT_ALLOWED;
5346 }
5347 /*------------------------------------------------------------------------
5348 Fill in Event data and post to the Main FSM
5349 ------------------------------------------------------------------------*/
5350 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5351 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5352 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5353 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5354 wdiEventData.pUserData = pUserData;
5355
5356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5357
5358}/*WDI_GetRoamRssiReq*/
5359#endif
5360
Jeff Johnson295189b2012-06-20 16:38:30 -07005361
5362/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 it wishes to change the configuration of the WLAN
5365 Device. Upon the call of this API the WLAN DAL will pack
5366 and send a HAL Update CFG request message to the lower
5367 RIVA sub-system if DAL is in state STARTED.
5368
5369 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005371
5372 WDI_Start must have been called.
5373
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005376
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 wdiUpdateCfgsRspCb: callback for passing back the
5378 response of the update cfg operation received from the
5379 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 callback
5383
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 @see WDI_Start
5385 @return Result of the function call
5386*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005387WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005388WDI_UpdateCfgReq
5389(
5390 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5391 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5392 void* pUserData
5393)
5394{
5395 WDI_EventInfoType wdiEventData;
5396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5397
5398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005400 ------------------------------------------------------------------------*/
5401 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5402 {
5403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5404 "WDI API call before module is initialized - Fail request");
5405
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005407 }
5408
5409 /*------------------------------------------------------------------------
5410 Fill in Event data and post to the Main FSM
5411 ------------------------------------------------------------------------*/
5412 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005413 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5414 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5415 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005416 wdiEventData.pUserData = pUserData;
5417
5418 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5419
5420}/*WDI_UpdateCfgReq*/
5421
5422
5423
5424/**
5425 @brief WDI_AddBAReq will be called when the upper MAC has setup
5426 successfully a BA session and needs to notify the HW for
5427 the appropriate settings to take place. Upon the call of
5428 this API the WLAN DAL will pack and send a HAL Add BA
5429 request message to the lower RIVA sub-system if DAL is
5430 in state STARTED.
5431
5432 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005434
5435 WDI_PostAssocReq must have been called.
5436
5437 @param wdiAddBAReqParams: the add BA parameters as specified by
5438 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 wdiAddBARspCb: callback for passing back the response of
5441 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005442
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 callback
5445
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 @see WDI_PostAssocReq
5447 @return Result of the function call
5448*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005449WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005450WDI_AddBAReq
5451(
5452 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5453 WDI_AddBARspCb wdiAddBARspCb,
5454 void* pUserData
5455)
5456{
5457 WDI_EventInfoType wdiEventData;
5458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5459
5460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 ------------------------------------------------------------------------*/
5463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5464 {
5465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5466 "WDI API call before module is initialized - Fail request");
5467
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005469 }
5470
5471 /*------------------------------------------------------------------------
5472 Fill in Event data and post to the Main FSM
5473 ------------------------------------------------------------------------*/
5474 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 wdiEventData.pEventData = pwdiAddBAReqParams;
5476 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5477 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 wdiEventData.pUserData = pUserData;
5479
5480 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5481
5482}/*WDI_AddBAReq*/
5483
5484
5485/**
5486 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5487 successfully a BA session and needs to notify the HW for
5488 the appropriate settings to take place. Upon the call of
5489 this API the WLAN DAL will pack and send a HAL Add BA
5490 request message to the lower RIVA sub-system if DAL is
5491 in state STARTED.
5492
5493 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005495
5496 WDI_PostAssocReq must have been called.
5497
5498 @param wdiAddBAReqParams: the add BA parameters as specified by
5499 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005500
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 wdiAddBARspCb: callback for passing back the response of
5502 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 callback
5506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 @see WDI_PostAssocReq
5508 @return Result of the function call
5509*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005510WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005511WDI_TriggerBAReq
5512(
5513 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5514 WDI_TriggerBARspCb wdiTriggerBARspCb,
5515 void* pUserData
5516)
5517{
5518 WDI_EventInfoType wdiEventData;
5519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5520
5521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 ------------------------------------------------------------------------*/
5524 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5525 {
5526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5527 "WDI API call before module is initialized - Fail request");
5528
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 }
5531
5532 /*------------------------------------------------------------------------
5533 Fill in Event data and post to the Main FSM
5534 ------------------------------------------------------------------------*/
5535 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5537 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5538 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 wdiEventData.pUserData = pUserData;
5540
5541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5542
5543}/*WDI_AddBAReq*/
5544
5545/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005546 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 wishes to update any of the Beacon parameters used by HW.
5548 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5549 message to the lower RIVA sub-system if DAL is in state
5550 STARTED.
5551
5552 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005554
5555 WDI_PostAssocReq must have been called.
5556
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005558 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005559
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 wdiUpdateBeaconParamsRspCb: callback for passing back the
5561 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005562
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 callback
5565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 @see WDI_PostAssocReq
5567 @return Result of the function call
5568*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005569WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005570WDI_UpdateBeaconParamsReq
5571(
5572 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5573 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5574 void* pUserData
5575)
5576{
5577 WDI_EventInfoType wdiEventData;
5578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5579
5580 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005581 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 ------------------------------------------------------------------------*/
5583 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5584 {
5585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5586 "WDI API call before module is initialized - Fail request");
5587
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005589 }
5590
5591 /*------------------------------------------------------------------------
5592 Fill in Event data and post to the Main FSM
5593 ------------------------------------------------------------------------*/
5594 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005595 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5596 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5597 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 wdiEventData.pUserData = pUserData;
5599
5600 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5601
5602}/*WDI_UpdateBeaconParamsReq*/
5603
5604/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 wishes to update the Beacon template used by HW.
5607 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5608 message to the lower RIVA sub-system if DAL is in state
5609 STARTED.
5610
5611 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005613
5614 WDI_PostAssocReq must have been called.
5615
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005618
Jeff Johnson295189b2012-06-20 16:38:30 -07005619 wdiSendBeaconParamsRspCb: callback for passing back the
5620 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005621
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005623 callback
5624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 @see WDI_PostAssocReq
5626 @return Result of the function call
5627*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005629WDI_SendBeaconParamsReq
5630(
5631 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5632 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5633 void* pUserData
5634)
5635{
5636 WDI_EventInfoType wdiEventData;
5637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5638
5639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 ------------------------------------------------------------------------*/
5642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5643 {
5644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5645 "WDI API call before module is initialized - Fail request");
5646
Jeff Johnsone7245742012-09-05 17:12:55 -07005647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005648 }
5649
5650 /*------------------------------------------------------------------------
5651 Fill in Event data and post to the Main FSM
5652 ------------------------------------------------------------------------*/
5653 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 wdiEventData.pEventData = pwdiSendBeaconParams;
5655 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5656 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 wdiEventData.pUserData = pUserData;
5658
5659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5660
5661}/*WDI_SendBeaconParamsReq*/
5662
5663/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005664 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005665 upper MAC wants to update the probe response template to
5666 be transmitted as Soft AP
5667 Upon the call of this API the WLAN DAL will
5668 pack and send the probe rsp template message to the
5669 lower RIVA sub-system if DAL is in state STARTED.
5670
5671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005673
5674
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005677
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 wdiSendBeaconParamsRspCb: callback for passing back the
5679 response of the Send Beacon Params operation received
5680 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005683 callback
5684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 @see WDI_AddBAReq
5686 @return Result of the function call
5687*/
5688
Jeff Johnsone7245742012-09-05 17:12:55 -07005689WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005690WDI_UpdateProbeRspTemplateReq
5691(
5692 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5693 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5694 void* pUserData
5695)
5696{
5697 WDI_EventInfoType wdiEventData;
5698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5699
5700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005701 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 ------------------------------------------------------------------------*/
5703 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5704 {
5705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5706 "WDI API call before module is initialized - Fail request");
5707
Jeff Johnsone7245742012-09-05 17:12:55 -07005708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 }
5710
5711 /*------------------------------------------------------------------------
5712 Fill in Event data and post to the Main FSM
5713 ------------------------------------------------------------------------*/
5714 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005715 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5716 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5717 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 wdiEventData.pUserData = pUserData;
5719
5720 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5721
5722}/*WDI_UpdateProbeRspTemplateReq*/
5723
5724/**
5725 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5726 to the NV memory.
5727
5728
5729 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5730 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005731
Jeff Johnson295189b2012-06-20 16:38:30 -07005732 wdiNvDownloadRspCb: callback for passing back the response of
5733 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005734
Jeff Johnson295189b2012-06-20 16:38:30 -07005735 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 callback
5737
Jeff Johnson295189b2012-06-20 16:38:30 -07005738 @see WDI_PostAssocReq
5739 @return Result of the function call
5740*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005741WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005742WDI_NvDownloadReq
5743(
5744 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5745 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5746 void* pUserData
5747)
5748{
5749 WDI_EventInfoType wdiEventData;
5750
5751 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005752 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005753 ------------------------------------------------------------------------*/
5754 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5755 {
5756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5757 "WDI API call before module is initialized - Fail request");
5758
Jeff Johnsone7245742012-09-05 17:12:55 -07005759 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005760 }
5761
5762 /*------------------------------------------------------------------------
5763 Fill in Event data and post to the Main FSM
5764 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5766 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5767 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5768 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 wdiEventData.pUserData = pUserData;
5770
5771 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5772
5773}/*WDI_NVDownloadReq*/
5774
Jeff Johnson295189b2012-06-20 16:38:30 -07005775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 upper MAC wants to send Notice of Absence
5778 Upon the call of this API the WLAN DAL will
5779 pack and send the probe rsp template message to the
5780 lower RIVA sub-system if DAL is in state STARTED.
5781
5782 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005784
5785
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005788
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 wdiSendBeaconParamsRspCb: callback for passing back the
5790 response of the Send Beacon Params operation received
5791 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 callback
5795
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 @see WDI_AddBAReq
5797 @return Result of the function call
5798*/
5799WDI_Status
5800WDI_SetP2PGONOAReq
5801(
5802 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5803 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5804 void* pUserData
5805)
5806{
5807 WDI_EventInfoType wdiEventData;
5808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5809
5810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 ------------------------------------------------------------------------*/
5813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5814 {
5815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5816 "WDI API call before module is initialized - Fail request");
5817
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 }
5820
5821 /*------------------------------------------------------------------------
5822 Fill in Event data and post to the Main FSM
5823 ------------------------------------------------------------------------*/
5824 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5826 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5827 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005828 wdiEventData.pUserData = pUserData;
5829
5830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5831
5832}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005833
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305834#ifdef FEATURE_WLAN_TDLS
5835/**
5836 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5837 upper MAC wants to send TDLS Link Establish Request Parameters
5838 Upon the call of this API the WLAN DAL will
5839 pack and send the TDLS Link Establish Request message to the
5840 lower RIVA sub-system if DAL is in state STARTED.
5841
5842 In state BUSY this request will be queued. Request won't
5843 be allowed in any other state.
5844
5845
5846 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5847 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5848
5849 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5850 response of the TDLS Link Establish request received
5851 from the device
5852
5853 pUserData: user data will be passed back with the
5854 callback
5855
5856 @see
5857 @return Result of the function call
5858*/
5859WDI_Status
5860WDI_SetTDLSLinkEstablishReq
5861(
5862 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5863 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5864 void* pUserData
5865)
5866{
5867 WDI_EventInfoType wdiEventData;
5868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5869
5870 /*------------------------------------------------------------------------
5871 Sanity Check
5872 ------------------------------------------------------------------------*/
5873 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5874 {
5875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5876 "WDI API call before module is initialized - Fail request");
5877
5878 return WDI_STATUS_E_NOT_ALLOWED;
5879 }
5880
5881 /*------------------------------------------------------------------------
5882 Fill in Event data and post to the Main FSM
5883 ------------------------------------------------------------------------*/
5884 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5885 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5886 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5887 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5888 wdiEventData.pUserData = pUserData;
5889
5890 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5891
5892}/*WDI_SetTDLSLinkEstablishReq*/
5893#endif
5894
Jeff Johnson295189b2012-06-20 16:38:30 -07005895/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 UMAC wanted to add STA self while opening any new session
5898 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005900
5901
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 callback
5907
5908 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 @return Result of the function call
5910*/
5911WDI_Status
5912WDI_AddSTASelfReq
5913(
5914 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5915 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5916 void* pUserData
5917)
5918{
5919 WDI_EventInfoType wdiEventData;
5920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5921
5922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005924 ------------------------------------------------------------------------*/
5925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5926 {
5927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5928 "WDI API call before module is initialized - Fail request");
5929
Jeff Johnsone7245742012-09-05 17:12:55 -07005930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005931 }
5932
5933 /*------------------------------------------------------------------------
5934 Fill in Event data and post to the Main FSM
5935 ------------------------------------------------------------------------*/
5936 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005937 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5938 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5939 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 wdiEventData.pUserData = pUserData;
5941
5942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5943
5944}/*WDI_AddSTASelfReq*/
5945
5946
Jeff Johnsone7245742012-09-05 17:12:55 -07005947#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005948/**
5949 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5950 the device of a successful add TSpec negotiation. HW
5951 needs to receive the TSpec Info from the UMAC in order
5952 to configure properly the QoS data traffic. Upon the
5953 call of this API the WLAN DAL will pack and send a HAL
5954 Add TS request message to the lower RIVA sub-system if
5955 DAL is in state STARTED.
5956
5957 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005959
5960 WDI_PostAssocReq must have been called.
5961
5962 @param wdiAddTsReqParams: the add TS parameters as specified by
5963 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005964
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 wdiAddTsRspCb: callback for passing back the response of
5966 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005967
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005969 callback
5970
Jeff Johnson295189b2012-06-20 16:38:30 -07005971 @see WDI_PostAssocReq
5972 @return Result of the function call
5973*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005974WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005975WDI_AggrAddTSReq
5976(
5977 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5978 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5979 void* pUserData
5980)
5981{
5982 WDI_EventInfoType wdiEventData;
5983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5984
5985 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 ------------------------------------------------------------------------*/
5988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5989 {
5990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5991 "WDI API call before module is initialized - Fail request");
5992
Jeff Johnsone7245742012-09-05 17:12:55 -07005993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 }
5995
5996 /*------------------------------------------------------------------------
5997 Fill in Event data and post to the Main FSM
5998 ------------------------------------------------------------------------*/
5999 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006000 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6001 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6002 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 wdiEventData.pUserData = pUserData;
6004
6005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6006
6007}/*WDI_AggrAddTSReq*/
6008
6009#endif /* WLAN_FEATURE_VOWIFI_11R */
6010
Jeff Johnson295189b2012-06-20 16:38:30 -07006011/**
6012 @brief WDI_FTMCommandReq
6013 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006014
6015 @param ftmCommandReq: FTM Command Body
6016 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006018
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 @see
6020 @return Result of the function call
6021*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006023WDI_FTMCommandReq
6024(
6025 WDI_FTMCommandReqType *ftmCommandReq,
6026 WDI_FTMCommandRspCb ftmCommandRspCb,
6027 void *pUserData
6028)
6029{
6030 WDI_EventInfoType wdiEventData;
6031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6032
6033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006035 ------------------------------------------------------------------------*/
6036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6037 {
6038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6039 "WDI API call before module is initialized - Fail request");
6040
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006042 }
6043
6044 /*------------------------------------------------------------------------
6045 Fill in Event data and post to the Main FSM
6046 ------------------------------------------------------------------------*/
6047 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6048 wdiEventData.pEventData = (void *)ftmCommandReq;
6049 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6050 wdiEventData.pCBfnc = ftmCommandRspCb;
6051 wdiEventData.pUserData = pUserData;
6052
6053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6054}
Jeff Johnson295189b2012-06-20 16:38:30 -07006055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006057
6058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006060
6061
6062 @param pwdiResumeReqParams: as specified by
6063 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006064
Jeff Johnson295189b2012-06-20 16:38:30 -07006065 wdiResumeReqRspCb: callback for passing back the response of
6066 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006067
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006069 callback
6070
6071 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006072 @return Result of the function call
6073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006075WDI_HostResumeReq
6076(
6077 WDI_ResumeParamsType* pwdiResumeReqParams,
6078 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6079 void* pUserData
6080)
6081{
6082 WDI_EventInfoType wdiEventData;
6083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6084
6085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006087 ------------------------------------------------------------------------*/
6088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6089 {
6090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6091 "WDI API call before module is initialized - Fail request");
6092
Jeff Johnsone7245742012-09-05 17:12:55 -07006093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 }
6095
6096 /*------------------------------------------------------------------------
6097 Fill in Event data and post to the Main FSM
6098 ------------------------------------------------------------------------*/
6099 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006100 wdiEventData.pEventData = pwdiResumeReqParams;
6101 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6102 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 wdiEventData.pUserData = pUserData;
6104
6105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6106
6107}/*WDI_HostResumeReq*/
6108
6109/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006110 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006111
6112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006114
6115
6116 @param pwdiDelStaSelfReqParams: as specified by
6117 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006118
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 wdiDelStaSelfRspCb: callback for passing back the response of
6120 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006121
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006123 callback
6124
Jeff Johnson295189b2012-06-20 16:38:30 -07006125 @see WDI_PostAssocReq
6126 @return Result of the function call
6127*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006129WDI_DelSTASelfReq
6130(
6131 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6132 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6133 void* pUserData
6134)
6135{
6136 WDI_EventInfoType wdiEventData;
6137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6138
6139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006140 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 ------------------------------------------------------------------------*/
6142 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6143 {
6144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6145 "WDI API call before module is initialized - Fail request");
6146
Jeff Johnsone7245742012-09-05 17:12:55 -07006147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006148 }
6149
6150 /*------------------------------------------------------------------------
6151 Fill in Event data and post to the Main FSM
6152 ------------------------------------------------------------------------*/
6153 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006154 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6155 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6156 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006157 wdiEventData.pUserData = pUserData;
6158
6159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6160
6161}/*WDI_AggrAddTSReq*/
6162
6163/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6165 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 Upon the call of this API the WLAN DAL will pack
6167 and send a HAL Set Tx Per Tracking request message to the
6168 lower RIVA sub-system if DAL is in state STARTED.
6169
6170 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006172
Jeff Johnsone7245742012-09-05 17:12:55 -07006173 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006175
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 pwdiSetTxPerTrackingRspCb: callback for passing back the
6177 response of the set Tx PER Tracking configurations operation received
6178 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006179
Jeff Johnson295189b2012-06-20 16:38:30 -07006180 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 callback
6182
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 @return Result of the function call
6184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006186WDI_SetTxPerTrackingReq
6187(
6188 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6189 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6190 void* pUserData
6191)
6192{
6193 WDI_EventInfoType wdiEventData;
6194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6195
6196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006198 ------------------------------------------------------------------------*/
6199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6200 {
6201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6202 "WDI API call before module is initialized - Fail request");
6203
Jeff Johnsone7245742012-09-05 17:12:55 -07006204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006205 }
6206
6207 /*------------------------------------------------------------------------
6208 Fill in Event data and post to the Main FSM
6209 ------------------------------------------------------------------------*/
6210 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006211 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006213 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006214 wdiEventData.pUserData = pUserData;
6215
6216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6217
6218}/*WDI_SetTxPerTrackingReq*/
6219
6220/**
6221 @brief WDI_SetTmLevelReq
6222 If HW Thermal condition changed, driver should react based on new
6223 HW thermal condition.
6224
6225 @param pwdiSetTmLevelReq: New thermal condition information
6226
6227 pwdiSetTmLevelRspCb: callback
6228
6229 usrData: user data will be passed back with the
6230 callback
6231
6232 @return Result of the function call
6233*/
6234WDI_Status
6235WDI_SetTmLevelReq
6236(
6237 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6238 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6239 void *usrData
6240)
6241{
6242 WDI_EventInfoType wdiEventData;
6243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6244
6245 /*------------------------------------------------------------------------
6246 Sanity Check
6247 ------------------------------------------------------------------------*/
6248 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6249 {
6250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6251 "WDI API call before module is initialized - Fail request");
6252
6253 return WDI_STATUS_E_NOT_ALLOWED;
6254 }
6255
6256 /*------------------------------------------------------------------------
6257 Fill in Event data and post to the Main FSM
6258 ------------------------------------------------------------------------*/
6259 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6260 wdiEventData.pEventData = pwdiSetTmLevelReq;
6261 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6262 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6263 wdiEventData.pUserData = usrData;
6264
6265 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6266}
6267
6268/**
6269 @brief WDI_HostSuspendInd
6270
6271 Suspend Indication from the upper layer will be sent
6272 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006273
Jeff Johnson295189b2012-06-20 16:38:30 -07006274 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006275
6276 @see
6277
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 @return Status of the request
6279*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006280WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006281WDI_HostSuspendInd
6282(
6283 WDI_SuspendParamsType* pwdiSuspendIndParams
6284)
6285{
6286
6287 WDI_EventInfoType wdiEventData;
6288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6289
6290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 ------------------------------------------------------------------------*/
6293 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6294 {
6295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6296 "WDI API call before module is initialized - Fail request");
6297
Jeff Johnsone7245742012-09-05 17:12:55 -07006298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006299 }
6300
6301 /*------------------------------------------------------------------------
6302 Fill in Event data and post to the Main FSM
6303 ------------------------------------------------------------------------*/
6304 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 wdiEventData.pEventData = pwdiSuspendIndParams;
6306 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6307 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 wdiEventData.pUserData = NULL;
6309
6310 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6311
6312}/*WDI_HostSuspendInd*/
6313
6314/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006315 @brief WDI_TrafficStatsInd
6316 Traffic Stats from the upper layer will be sent
6317 down to HAL
6318
6319 @param WDI_TrafficStatsIndType
6320
6321 @see
6322
6323 @return Status of the request
6324*/
6325WDI_Status
6326WDI_TrafficStatsInd
6327(
6328 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6329)
6330{
6331
6332 WDI_EventInfoType wdiEventData;
6333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6334
6335 /*------------------------------------------------------------------------
6336 Sanity Check
6337 ------------------------------------------------------------------------*/
6338 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6339 {
6340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6341 "WDI API call before module is initialized - Fail request");
6342
6343 return WDI_STATUS_E_NOT_ALLOWED;
6344 }
6345
6346 /*------------------------------------------------------------------------
6347 Fill in Event data and post to the Main FSM
6348 ------------------------------------------------------------------------*/
6349 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6350 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6351 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6352 wdiEventData.pCBfnc = NULL;
6353 wdiEventData.pUserData = NULL;
6354
6355 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6356
6357}/*WDI_TrafficStatsInd*/
6358
Chet Lanctot186b5732013-03-18 10:26:30 -07006359#ifdef WLAN_FEATURE_11W
6360/**
6361 @brief WDI_ExcludeUnencryptedInd
6362 Register with HAL to receive/drop unencrypted frames
6363
6364 @param WDI_ExcludeUnencryptIndType
6365
6366 @see
6367
6368 @return Status of the request
6369*/
6370WDI_Status
6371WDI_ExcludeUnencryptedInd
6372(
6373 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6374)
6375{
6376
6377 WDI_EventInfoType wdiEventData;
6378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6379
6380 /*------------------------------------------------------------------------
6381 Sanity Check
6382 ------------------------------------------------------------------------*/
6383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6384 {
6385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6386 "WDI API call before module is initialized - Fail request");
6387
6388 return WDI_STATUS_E_NOT_ALLOWED;
6389 }
6390
6391 /*------------------------------------------------------------------------
6392 Fill in Event data and post to the Main FSM
6393 ------------------------------------------------------------------------*/
6394 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6395 wdiEventData.pEventData = pWdiExcUnencParams;
6396 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6397 wdiEventData.pCBfnc = NULL;
6398 wdiEventData.pUserData = NULL;
6399
6400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6401
6402}/*WDI_TrafficStatsInd*/
6403#endif
6404
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006405/**
Yue Mab9c86f42013-08-14 15:59:08 -07006406 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6407
6408 @param addPeriodicTxPtrnParams: Add Pattern parameters
6409
6410 @see
6411
6412 @return Status of the request
6413*/
6414WDI_Status
6415WDI_AddPeriodicTxPtrnInd
6416(
6417 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6418)
6419{
6420 WDI_EventInfoType wdiEventData;
6421
6422 /*-------------------------------------------------------------------------
6423 Sanity Check
6424 ------------------------------------------------------------------------*/
6425 if (eWLAN_PAL_FALSE == gWDIInitialized)
6426 {
6427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6428 "WDI API call before module is initialized - Fail request!");
6429
6430 return WDI_STATUS_E_NOT_ALLOWED;
6431 }
6432
6433 /*-------------------------------------------------------------------------
6434 Fill in Event data and post to the Main FSM
6435 ------------------------------------------------------------------------*/
6436 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6437 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6438 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6439 wdiEventData.pCBfnc = NULL;
6440 wdiEventData.pUserData = NULL;
6441
6442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6443}
6444
6445/**
6446 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6447
6448 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6449
6450 @see
6451
6452 @return Status of the request
6453*/
6454WDI_Status
6455WDI_DelPeriodicTxPtrnInd
6456(
6457 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6458)
6459{
6460 WDI_EventInfoType wdiEventData;
6461
6462 /*-------------------------------------------------------------------------
6463 Sanity Check
6464 ------------------------------------------------------------------------*/
6465 if (eWLAN_PAL_FALSE == gWDIInitialized)
6466 {
6467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6468 "WDI API call before module is initialized - Fail request!");
6469
6470 return WDI_STATUS_E_NOT_ALLOWED;
6471 }
6472
6473 /*-------------------------------------------------------------------------
6474 Fill in Event data and post to the Main FSM
6475 ------------------------------------------------------------------------*/
6476 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6477 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6478 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6479 wdiEventData.pCBfnc = NULL;
6480 wdiEventData.pUserData = NULL;
6481
6482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6483}
6484
6485/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006486 @brief WDI_HALDumpCmdReq
6487 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006488
6489 @param halDumpCmdReqParams: Hal Dump Command Body
6490 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006492
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 @see
6494 @return Result of the function call
6495*/
6496WDI_Status WDI_HALDumpCmdReq
6497(
6498 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6499 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6500 void *pUserData
6501)
6502{
6503 WDI_EventInfoType wdiEventData;
6504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6505
6506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 ------------------------------------------------------------------------*/
6509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6510 {
6511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6512 "WDI API call before module is initialized - Fail request");
6513
Jeff Johnsone7245742012-09-05 17:12:55 -07006514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 }
6516
6517 /*------------------------------------------------------------------------
6518 Fill in Event data and post to the Main FSM
6519 ------------------------------------------------------------------------*/
6520 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6521 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6522 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6523 wdiEventData.pCBfnc = halDumpCmdRspCb;
6524 wdiEventData.pUserData = pUserData;
6525
6526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6527}
6528
Jeff Johnsone7245742012-09-05 17:12:55 -07006529/*============================================================================
6530
Jeff Johnson295189b2012-06-20 16:38:30 -07006531 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006532
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 ============================================================================*/
6534
6535/**
6536 @brief Main FSM Start function for all states except BUSY
6537
Jeff Johnsone7245742012-09-05 17:12:55 -07006538
6539 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 wdiEV: event posted to the main DAL FSM
6541 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006542 structure
6543
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 @see
6545 @return Result of the function call
6546*/
6547WDI_Status
6548WDI_PostMainEvent
6549(
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 WDI_ControlBlockType* pWDICtx,
6551 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006553)
6554{
Jeff Johnsone7245742012-09-05 17:12:55 -07006555 WDI_Status wdiStatus;
6556 WDI_MainFuncType pfnWDIMainEvHdlr;
6557 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6559
6560 /*-------------------------------------------------------------------------
6561 Sanity check
6562 -------------------------------------------------------------------------*/
6563 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6564 ( wdiEV >= WDI_MAX_EVENT ))
6565 {
6566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6567 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6568 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 }
6571
6572 /*Access to the global state must be locked */
6573 wpalMutexAcquire(&pWDICtx->wptMutex);
6574
6575 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006577
6578 wdiOldState = pWDICtx->uGlobalState;
6579
6580 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006581 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6582 response comes from CCPU for the request sent by host:
6583 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 -07006584 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 -07006585 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 CCPU:
6587 don't change the state */
6588 if ( WDI_RESPONSE_EVENT != wdiEV)
6589 {
6590 /*Transition to BUSY State - the request is now being processed by the FSM,
6591 if the request fails we shall transition back to the old state, if not
6592 the request will manage its own state transition*/
6593 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6594 }
6595 /* If the state function associated with the EV is NULL it means that this
6596 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006597 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006598 {
6599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006600 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006603 }
6604 else
6605 {
6606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006607 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006608 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006609 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006610 }
6611
6612 /* If a request handles itself well it will end up in a success or in a
6613 pending
6614 Success - means that the request was processed and the proper state
6615 transition already occurred or will occur when the resp is received
6616 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006617
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 Pending - means the request could not be processed at this moment in time
6619 because the FSM was already busy so no state transition or dequeueing
6620 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006621
Jeff Johnson295189b2012-06-20 16:38:30 -07006622 Success for synchronous case means that the transition may occur and
6623 processing of pending requests may continue - so it should go through
6624 and restores the state and continue processing queued requests*/
6625 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6626 ( WDI_STATUS_PENDING != wdiStatus ))
6627 {
6628 if ( WDI_RESPONSE_EVENT != wdiEV)
6629 {
6630 /*The request has failed or could not be processed - transition back to
6631 the old state - check to see if anything was queued and try to execute
6632 The dequeue logic should post a message to a thread and return - no
6633 actual processing can occur */
6634 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6635 }
6636 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006637
Jeff Johnson295189b2012-06-20 16:38:30 -07006638 }
6639
6640 /* we have completed processing the event */
6641 wpalMutexRelease(&pWDICtx->wptMutex);
6642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006644
6645}/*WDI_PostMainEvent*/
6646
6647
6648/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006649 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006650--------------------------------------------------------------------------*/
6651/**
6652 @brief Main FSM Start function for all states except BUSY
6653
Jeff Johnsone7245742012-09-05 17:12:55 -07006654
6655 @param pWDICtx: pointer to the WLAN DAL context
6656 pEventData: pointer to the event information structure
6657
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 @see
6659 @return Result of the function call
6660*/
6661WDI_Status
6662WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006663(
Jeff Johnson295189b2012-06-20 16:38:30 -07006664 WDI_ControlBlockType* pWDICtx,
6665 WDI_EventInfoType* pEventData
6666)
6667{
6668
6669 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 ----------------------------------------------------------------------*/
6672 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6673 {
6674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006675 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 pWDICtx, pEventData);
6677 return WDI_STATUS_E_FAILURE;
6678 }
6679
6680 wpalMutexAcquire(&pWDICtx->wptMutex);
6681
6682 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 ----------------------------------------------------------------------*/
6685 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6686 {
6687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6688 "Control Transport not yet Open - queueing the request");
6689
6690 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006691 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006692
6693 wpalMutexRelease(&pWDICtx->wptMutex);
6694 return WDI_STATUS_PENDING;
6695 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006696
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 wpalMutexRelease(&pWDICtx->wptMutex);
6698
6699 /*Return Success*/
6700 return WDI_ProcessRequest( pWDICtx, pEventData );
6701
6702}/*WDI_MainStart*/
6703
6704/**
6705 @brief Main FSM Response function for state INIT
6706
Jeff Johnsone7245742012-09-05 17:12:55 -07006707
6708 @param pWDICtx: pointer to the WLAN DAL context
6709 pEventData: pointer to the event information structure
6710
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 @see
6712 @return Result of the function call
6713*/
6714WDI_Status
6715WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006716(
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 WDI_ControlBlockType* pWDICtx,
6718 WDI_EventInfoType* pEventData
6719)
6720{
6721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006724 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006725
6726 /*Return Success*/
6727 return WDI_STATUS_E_NOT_ALLOWED;
6728}/* WDI_MainRspInit */
6729
6730/**
6731 @brief Main FSM Close function for all states except BUSY
6732
Jeff Johnsone7245742012-09-05 17:12:55 -07006733
6734 @param pWDICtx: pointer to the WLAN DAL context
6735 pEventData: pointer to the event information structure
6736
Jeff Johnson295189b2012-06-20 16:38:30 -07006737 @see
6738 @return Result of the function call
6739*/
6740WDI_Status
6741WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006742(
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 WDI_ControlBlockType* pWDICtx,
6744 WDI_EventInfoType* pEventData
6745)
6746{
6747
6748 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006749 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 ----------------------------------------------------------------------*/
6751 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6752 {
6753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006754 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006755 pWDICtx, pEventData);
6756 return WDI_STATUS_E_FAILURE;
6757 }
6758
6759 /*Return Success*/
6760 return WDI_ProcessRequest( pWDICtx, pEventData );
6761
6762}/*WDI_MainClose*/
6763/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006764 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006765--------------------------------------------------------------------------*/
6766/**
6767 @brief Main FSM Start function for state STARTED
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769
6770 @param pWDICtx: pointer to the WLAN DAL context
6771 pEventData: pointer to the event information structure
6772
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 @see
6774 @return Result of the function call
6775*/
6776WDI_Status
6777WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006778(
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 WDI_ControlBlockType* pWDICtx,
6780 WDI_EventInfoType* pEventData
6781)
6782{
6783 WDI_StartRspCb wdiStartRspCb = NULL;
6784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6785
6786 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 ----------------------------------------------------------------------*/
6789 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6790 {
6791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006792 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 pWDICtx, pEventData);
6794 return WDI_STATUS_E_FAILURE;
6795 }
6796
6797 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 ----------------------------------------------------------------------*/
6800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006802
6803 wpalMutexAcquire(&pWDICtx->wptMutex);
6804
6805 /*Transition back to started because the post function transitioned us to
6806 busy*/
6807 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6808
6809 /*Check to see if any request is pending*/
6810 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006811
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 wpalMutexRelease(&pWDICtx->wptMutex);
6813
6814 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6816
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 /*Notify UMAC*/
6818 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6819
6820 /*Return Success*/
6821 return WDI_STATUS_SUCCESS;
6822
6823}/*WDI_MainStartStarted*/
6824
6825/**
6826 @brief Main FSM Stop function for state STARTED
6827
Jeff Johnsone7245742012-09-05 17:12:55 -07006828
6829 @param pWDICtx: pointer to the WLAN DAL context
6830 pEventData: pointer to the event information structure
6831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 @see
6833 @return Result of the function call
6834*/
6835WDI_Status
6836WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006837(
Jeff Johnson295189b2012-06-20 16:38:30 -07006838 WDI_ControlBlockType* pWDICtx,
6839 WDI_EventInfoType* pEventData
6840)
6841{
6842 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006844 ----------------------------------------------------------------------*/
6845 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6846 {
6847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006848 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 pWDICtx, pEventData);
6850 return WDI_STATUS_E_FAILURE;
6851 }
6852
6853 /*State at this point is BUSY - because we enter this state before posting
6854 an event to the FSM in order to prevent potential race conditions*/
6855
6856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6857 "Processing stop request in FSM");
6858
6859 /*Return Success*/
6860 return WDI_ProcessRequest( pWDICtx, pEventData );
6861
6862}/*WDI_MainStopStarted*/
6863/**
6864 @brief Main FSM Request function for state started
6865
Jeff Johnsone7245742012-09-05 17:12:55 -07006866
6867 @param pWDICtx: pointer to the WLAN DAL context
6868 pEventData: pointer to the event information structure
6869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 @see
6871 @return Result of the function call
6872*/
6873WDI_Status
6874WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006875(
Jeff Johnson295189b2012-06-20 16:38:30 -07006876 WDI_ControlBlockType* pWDICtx,
6877 WDI_EventInfoType* pEventData
6878)
6879{
6880
6881 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 ----------------------------------------------------------------------*/
6884 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6885 {
6886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006887 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 pWDICtx, pEventData);
6889 return WDI_STATUS_E_FAILURE;
6890 }
6891
6892 /*State at this point is BUSY - because we enter this state before posting
6893 an event to the FSM in order to prevent potential race conditions*/
6894
6895 /*Return Success*/
6896 return WDI_ProcessRequest( pWDICtx, pEventData );
6897
6898}/*WDI_MainReqStarted*/
6899
6900/**
6901 @brief Main FSM Response function for all states except INIT
6902
Jeff Johnsone7245742012-09-05 17:12:55 -07006903
6904 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006906
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 @see
6908 @return Result of the function call
6909*/
6910WDI_Status
6911WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006912(
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 WDI_ControlBlockType* pWDICtx,
6914 WDI_EventInfoType* pEventData
6915)
6916{
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 wpt_boolean expectedResponse;
6919
6920 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 ----------------------------------------------------------------------*/
6923 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6924 {
6925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006926 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006927 pWDICtx, pEventData);
6928 return WDI_STATUS_E_FAILURE;
6929 }
6930
6931 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6932 {
6933 /* we received an expected response */
6934 expectedResponse = eWLAN_PAL_TRUE;
6935
6936 /*We expect that we will transition to started after this processing*/
6937 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6938
6939 /* we are no longer expecting a response */
6940 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6941 }
6942 else
6943 {
6944 /* we received an indication or unexpected response */
6945 expectedResponse = eWLAN_PAL_FALSE;
6946 /* for indications no need to update state from what it is right
6947 now, unless it explicitly does it in the indication handler (say
6948 for device failure ind) */
6949 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6950 }
6951
6952 /*Process the response and indication */
6953 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6954
6955 /*Lock the CB as we are about to do a state transition*/
6956 wpalMutexAcquire(&pWDICtx->wptMutex);
6957
6958 /*Transition to the expected state after the response processing
6959 - this should always be started state with the following exceptions:
6960 1. processing of a failed start response
6961 2. device failure detected while processing response
6962 3. stop response received*/
6963 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006964
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 /*Dequeue request that may have been queued while we were waiting for the
6966 response */
6967 if ( expectedResponse )
6968 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006969 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 }
6971
6972 wpalMutexRelease(&pWDICtx->wptMutex);
6973
6974 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006976
6977}/*WDI_MainRsp*/
6978
6979/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006981--------------------------------------------------------------------------*/
6982/**
6983 @brief Main FSM Stop function for state STOPPED
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985
6986 @param pWDICtx: pointer to the WLAN DAL context
6987 pEventData: pointer to the event information structure
6988
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 @see
6990 @return Result of the function call
6991*/
6992WDI_Status
6993WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006994(
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 WDI_ControlBlockType* pWDICtx,
6996 WDI_EventInfoType* pEventData
6997)
6998{
6999 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 ----------------------------------------------------------------------*/
7002 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7003 {
7004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007005 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 pWDICtx, pEventData);
7007 return WDI_STATUS_E_FAILURE;
7008 }
7009
7010 /*We should normally not get a STOP request if we are already stopped
7011 since we should normally be stopped by the UMAC. However in some
7012 error situations we put ourselves in the stopped state without the
7013 UMAC knowing, so when we get a STOP request in this state we still
7014 process it since we need to clean up the underlying state */
7015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7016 "Processing stop request while stopped in FSM");
7017
7018 /*Return Success*/
7019 return WDI_ProcessRequest( pWDICtx, pEventData );
7020
7021}/*WDI_MainStopStopped*/
7022
7023/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007024 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007025--------------------------------------------------------------------------*/
7026/**
7027 @brief Main FSM Start function for state BUSY
7028
Jeff Johnsone7245742012-09-05 17:12:55 -07007029
7030 @param pWDICtx: pointer to the WLAN DAL context
7031 pEventData: pointer to the event information structure
7032
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 @see
7034 @return Result of the function call
7035*/
7036WDI_Status
7037WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007038(
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 WDI_ControlBlockType* pWDICtx,
7040 WDI_EventInfoType* pEventData
7041)
7042{
7043 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 ----------------------------------------------------------------------*/
7046 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7047 {
7048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007049 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 pWDICtx, pEventData);
7051 return WDI_STATUS_E_FAILURE;
7052 }
7053
7054 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007056 ----------------------------------------------------------------------*/
7057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7058 "WDI Busy state - queue start request");
7059
7060 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007062
7063 /*Return Success*/
7064 return WDI_STATUS_PENDING;
7065}/*WDI_MainStartBusy*/
7066
7067/**
7068 @brief Main FSM Stop function for state BUSY
7069
Jeff Johnsone7245742012-09-05 17:12:55 -07007070
7071 @param pWDICtx: pointer to the WLAN DAL context
7072 pEventData: pointer to the event information structure
7073
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 @see
7075 @return Result of the function call
7076*/
7077WDI_Status
7078WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007079(
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 WDI_ControlBlockType* pWDICtx,
7081 WDI_EventInfoType* pEventData
7082)
7083{
7084 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 ----------------------------------------------------------------------*/
7087 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7088 {
7089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007090 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 pWDICtx, pEventData);
7092 return WDI_STATUS_E_FAILURE;
7093 }
7094
7095 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 ----------------------------------------------------------------------*/
7098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7099 "WDI Busy state - queue stop request");
7100
Jeff Johnsone7245742012-09-05 17:12:55 -07007101 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007102 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007103
Jeff Johnson295189b2012-06-20 16:38:30 -07007104}/*WDI_MainStopBusy*/
7105
7106/**
7107 @brief Main FSM Request function for state BUSY
7108
Jeff Johnsone7245742012-09-05 17:12:55 -07007109
7110 @param pWDICtx: pointer to the WLAN DAL context
7111 pEventData: pointer to the event information structure
7112
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 @see
7114 @return Result of the function call
7115*/
7116WDI_Status
7117WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007118(
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 WDI_ControlBlockType* pWDICtx,
7120 WDI_EventInfoType* pEventData
7121)
7122{
7123 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 ----------------------------------------------------------------------*/
7126 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7127 {
7128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007129 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 pWDICtx, pEventData);
7131 return WDI_STATUS_E_FAILURE;
7132 }
7133
7134 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 ----------------------------------------------------------------------*/
7137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7138 "WDI Busy state - queue request %d because waiting for response %d",
7139 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7140
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007143
Jeff Johnson295189b2012-06-20 16:38:30 -07007144}/*WDI_MainReqBusy*/
7145/**
7146 @brief Main FSM Close function for state BUSY
7147
Jeff Johnsone7245742012-09-05 17:12:55 -07007148
7149 @param pWDICtx: pointer to the WLAN DAL context
7150 pEventData: pointer to the event information structure
7151
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 @see
7153 @return Result of the function call
7154*/
7155WDI_Status
7156WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007157(
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 WDI_ControlBlockType* pWDICtx,
7159 WDI_EventInfoType* pEventData
7160)
7161{
7162 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 ----------------------------------------------------------------------*/
7165 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7166 {
7167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007168 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 pWDICtx, pEventData);
7170 return WDI_STATUS_E_FAILURE;
7171 }
7172
7173 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007174 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 ----------------------------------------------------------------------*/
7176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7177 "WDI Busy state - queue close request");
7178
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182}/*WDI_MainCloseBusy*/
7183
7184/**
7185 @brief Main FSM Shutdown function for INIT & STARTED states
7186
7187
7188 @param pWDICtx: pointer to the WLAN DAL context
7189 pEventData: pointer to the event information structure
7190
7191 @see
7192 @return Result of the function call
7193*/
7194WDI_Status
7195WDI_MainShutdown
7196(
7197 WDI_ControlBlockType* pWDICtx,
7198 WDI_EventInfoType* pEventData
7199)
7200{
7201 /*--------------------------------------------------------------------
7202 Sanity Check
7203 ----------------------------------------------------------------------*/
7204 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7205 {
7206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007207 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 pWDICtx, pEventData);
7209 return WDI_STATUS_E_FAILURE;
7210 }
7211
7212 /*State at this point is BUSY - because we enter this state before posting
7213 an event to the FSM in order to prevent potential race conditions*/
7214
7215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7216 "Processing shutdown request in FSM");
7217
7218 /*Return Success*/
7219 return WDI_ProcessRequest( pWDICtx, pEventData );
7220
7221}/*WDI_MainShutdown*/
7222
7223/**
7224 @brief Main FSM Shutdown function for BUSY state
7225
7226
7227 @param pWDICtx: pointer to the WLAN DAL context
7228 pEventData: pointer to the event information structure
7229
7230 @see
7231 @return Result of the function call
7232*/
7233WDI_Status
7234WDI_MainShutdownBusy
7235(
7236 WDI_ControlBlockType* pWDICtx,
7237 WDI_EventInfoType* pEventData
7238)
7239{
7240 /*--------------------------------------------------------------------
7241 Sanity Check
7242 ----------------------------------------------------------------------*/
7243 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7244 {
7245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007246 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 pWDICtx, pEventData);
7248 return WDI_STATUS_E_FAILURE;
7249 }
7250
7251 /* If you are waiting for a HAL response at this stage, you are not
7252 * going to get it. Riva is already shutdown/crashed.
7253 */
7254 wpalTimerStop(&gWDICb.wptResponseTimer);
7255
7256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7257 "Processing shutdown request in FSM: Busy state ");
7258
7259 return WDI_ProcessRequest( pWDICtx, pEventData );
7260
7261}/*WDI_MainShutdownBusy*/
7262
7263
Jeff Johnsone7245742012-09-05 17:12:55 -07007264/*=======================================================================
7265
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007267
Jeff Johnson295189b2012-06-20 16:38:30 -07007268*=======================================================================*/
7269
7270/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007271 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007272========================================================================*/
7273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007276
7277 @param pWDICtx: pointer to the WLAN DAL context
7278 pEventData: pointer to the event information structure
7279
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 @see
7281 @return Result of the function call
7282*/
7283WDI_Status
7284WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007285(
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 WDI_ControlBlockType* pWDICtx,
7287 WDI_EventInfoType* pEventData
7288)
7289{
7290 WDI_StartReqParamsType* pwdiStartParams = NULL;
7291 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007292 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007293 wpt_uint16 usDataOffset = 0;
7294 wpt_uint16 usSendSize = 0;
7295
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 tHalMacStartReqMsg halStartReq;
7297 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7299
7300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 -------------------------------------------------------------------------*/
7303 if (( NULL == pEventData ) ||
7304 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7305 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7306 {
7307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 }
7312
7313 /*-----------------------------------------------------------------------
7314 Get message buffer
7315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 pwdiStartParams->usConfigBufferLen;
7318
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 usLen,
7321 &pSendBuffer, &usDataOffset, &usSendSize))||
7322 ( usSendSize < (usDataOffset + usLen )))
7323 {
7324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007325 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 pEventData, pwdiStartParams, wdiStartRspCb);
7327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 }
7330
7331 /*-----------------------------------------------------------------------
7332 Fill in the message
7333 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 halStartReq.startReqParams.driverType =
7335 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007336
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 halStartReq.startReqParams.uConfigBufferLen =
7338 pwdiStartParams->usConfigBufferLen;
7339 wpalMemoryCopy( pSendBuffer+usDataOffset,
7340 &halStartReq.startReqParams,
7341 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007342
Jeff Johnsone7245742012-09-05 17:12:55 -07007343 usDataOffset += sizeof(halStartReq.startReqParams);
7344 wpalMemoryCopy( pSendBuffer+usDataOffset,
7345 pwdiStartParams->pConfigBuffer,
7346 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007347
7348 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007350
7351 /*Save Low Level Ind CB and associated user data - it will be used further
7352 on when an indication is coming from the lower MAC*/
7353 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007355
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7362
Jeff Johnsone7245742012-09-05 17:12:55 -07007363
Jeff Johnson295189b2012-06-20 16:38:30 -07007364}/*WDI_ProcessStartReq*/
7365
7366/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007369
7370 @param pWDICtx: pointer to the WLAN DAL context
7371 pEventData: pointer to the event information structure
7372
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 @see
7374 @return Result of the function call
7375*/
7376WDI_Status
7377WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007378(
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 WDI_ControlBlockType* pWDICtx,
7380 WDI_EventInfoType* pEventData
7381)
7382{
7383 WDI_StopReqParamsType* pwdiStopParams = NULL;
7384 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007385 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 wpt_uint16 usDataOffset = 0;
7387 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007388 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7391
7392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 -------------------------------------------------------------------------*/
7395 if (( NULL == pEventData ) ||
7396 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7397 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7398 {
7399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007402 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 }
7404
7405 /*-----------------------------------------------------------------------
7406 Get message buffer
7407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 sizeof(halStopReq.stopReqParams),
7410 &pSendBuffer, &usDataOffset, &usSendSize))||
7411 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7412 {
7413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007414 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 pEventData, pwdiStopParams, wdiStopRspCb);
7416 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007417 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 }
7419
7420 /*-----------------------------------------------------------------------
7421 Fill in the message
7422 -----------------------------------------------------------------------*/
7423 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7424 pwdiStopParams->wdiStopReason);
7425
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 wpalMemoryCopy( pSendBuffer+usDataOffset,
7427 &halStopReq.stopReqParams,
7428 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007429
7430 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433 /*! TO DO: stop the data services */
7434 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7435 {
7436 /*Stop the STA Table !UT- check this logic again
7437 It is safer to do it here than on the response - because a stop is imminent*/
7438 WDI_STATableStop(pWDICtx);
7439
7440 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007441 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7442 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 {
7444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7445 "WDI Init failed to reset power state event");
7446
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007448 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 }
7450 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007451 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7452 if( eWLAN_PAL_STATUS_SUCCESS != status )
7453 {
7454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007455 "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 -08007456 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007457 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007458 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007462 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7463 WDI_SET_POWER_STATE_TIMEOUT);
7464 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 {
7466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7467 "WDI Init failed to wait on an event");
7468
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007470 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 }
7472 }
7473
7474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007475 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7479
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007480fail:
7481 // Release the message buffer so we don't leak
7482 wpalMemoryFree(pSendBuffer);
7483
7484failRequest:
7485 //WDA should have failure check to avoid the memory leak
7486 return WDI_STATUS_E_FAILURE;
7487
Jeff Johnson295189b2012-06-20 16:38:30 -07007488}/*WDI_ProcessStopReq*/
7489
7490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007493
7494 @param pWDICtx: pointer to the WLAN DAL context
7495 pEventData: pointer to the event information structure
7496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 @see
7498 @return Result of the function call
7499*/
7500WDI_Status
7501WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007502(
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 WDI_ControlBlockType* pWDICtx,
7504 WDI_EventInfoType* pEventData
7505)
7506{
Jeff Johnsone7245742012-09-05 17:12:55 -07007507 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7509
7510 /*Lock control block for cleanup*/
7511 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 /*Clear all pending request*/
7514 WDI_ClearPendingRequests(pWDICtx);
7515
7516 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007518
7519 /* Close Data transport*/
7520 /* FTM mode does not open Data Path */
7521 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7522 {
7523 WDTS_Close(pWDICtx);
7524 }
7525
7526 /*Close the STA Table !UT- check this logic again*/
7527 WDI_STATableClose(pWDICtx);
7528
7529 /*close the PAL */
7530 wptStatus = wpalClose(pWDICtx->pPALContext);
7531 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7532 {
7533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7534 "Failed to wpal Close %d", wptStatus);
7535 WDI_ASSERT(0);
7536 }
7537
7538 /*Transition back to init state*/
7539 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7540
7541 wpalMutexRelease(&pWDICtx->wptMutex);
7542
7543 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007545
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007547}/*WDI_ProcessCloseReq*/
7548
7549
7550/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007552===========================================================================*/
7553
7554/**
7555 @brief Process Init Scan Request function (called when Main FSM
7556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_EventInfoType* pEventData
7569)
7570{
7571 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7572 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 wpt_uint16 usDataOffset = 0;
7575 wpt_uint16 usSendSize = 0;
7576 wpt_uint8 i = 0;
7577
7578 tHalInitScanReqMsg halInitScanReqMsg;
7579
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 * It shold be removed once host and riva changes are in sync*/
7582 tHalInitScanConReqMsg halInitScanConReqMsg;
7583
7584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7585
7586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 -------------------------------------------------------------------------*/
7589 if (( NULL == pEventData ) ||
7590 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7591 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7592 {
7593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 }
7598
7599#if 0
7600 wpalMutexAcquire(&pWDICtx->wptMutex);
7601 /*-----------------------------------------------------------------------
7602 Check to see if SCAN is already in progress - if so reject the req
7603 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007604 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007605 -----------------------------------------------------------------------*/
7606 if ( pWDICtx->bScanInProgress )
7607 {
7608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7609 "Scan is already in progress - subsequent scan is not allowed"
7610 " until the first scan completes");
7611
7612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 }
7615
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7617 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007618
7619 wpalMutexRelease(&pWDICtx->wptMutex);
7620#endif
Viral Modid86bde22012-12-10 13:09:21 -08007621 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007624 * It shold be removed once host and riva changes are in sync*/
7625 /*-----------------------------------------------------------------------
7626 Get message buffer
7627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 sizeof(halInitScanConReqMsg.initScanParams),
7630 &pSendBuffer, &usDataOffset, &usSendSize))||
7631 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7632 {
7633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007634 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 }
7639
7640
7641 /*-----------------------------------------------------------------------
7642 Fill in the message
7643 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7646
7647 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7648 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7649
Jeff Johnsone7245742012-09-05 17:12:55 -07007650 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7656
7657 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7658 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7659
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7661 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007662
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7665
7666 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7667 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7670 }
7671
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 wpalMemoryCopy( pSendBuffer+usDataOffset,
7673 &halInitScanConReqMsg.initScanParams,
7674 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 }
7676 else
7677 {
7678 /*-----------------------------------------------------------------------
7679 Get message buffer
7680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 sizeof(halInitScanReqMsg.initScanParams),
7683 &pSendBuffer, &usDataOffset, &usSendSize))||
7684 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7685 {
7686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007687 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 }
7692
7693
7694 /*-----------------------------------------------------------------------
7695 Fill in the message
7696 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7699
7700 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7701 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7709
7710 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7711 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7712
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7715
7716 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7717 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7720 }
7721
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 wpalMemoryCopy( pSendBuffer+usDataOffset,
7723 &halInitScanReqMsg.initScanParams,
7724 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 }
7726
7727 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007729
7730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007731 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007733 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007734 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7735
7736}/*WDI_ProcessInitScanReq*/
7737
7738/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007740 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007741
7742 @param pWDICtx: pointer to the WLAN DAL context
7743 pEventData: pointer to the event information structure
7744
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 @see
7746 @return Result of the function call
7747*/
7748WDI_Status
7749WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007750(
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 WDI_ControlBlockType* pWDICtx,
7752 WDI_EventInfoType* pEventData
7753)
7754{
7755 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7756 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007757 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007758 wpt_uint16 usDataOffset = 0;
7759 wpt_uint16 usSendSize = 0;
7760
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7763
7764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 -------------------------------------------------------------------------*/
7767 if (( NULL == pEventData ) ||
7768 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7769 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7770 {
7771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 }
7776
7777#if 0
7778 wpalMutexAcquire(&pWDICtx->wptMutex);
7779 /*-----------------------------------------------------------------------
7780 Check to see if SCAN is already in progress - start scan is only
7781 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7786 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7787 {
7788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7789 "Scan start not allowed in this state %d %d",
7790 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007791
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 }
7795
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797
7798 wpalMutexRelease(&pWDICtx->wptMutex);
7799#endif
7800
7801 /*-----------------------------------------------------------------------
7802 Get message buffer
7803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 sizeof(halStartScanReqMsg.startScanParams),
7806 &pSendBuffer, &usDataOffset, &usSendSize))||
7807 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7808 {
7809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007810 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 }
7815
Jeff Johnsone7245742012-09-05 17:12:55 -07007816 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007817 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 wpalMemoryCopy( pSendBuffer+usDataOffset,
7819 &halStartScanReqMsg.startScanParams,
7820 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007821
7822 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007824
7825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007826 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7830}/*WDI_ProcessStartScanReq*/
7831
7832
7833/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007836
7837 @param pWDICtx: pointer to the WLAN DAL context
7838 pEventData: pointer to the event information structure
7839
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 @see
7841 @return Result of the function call
7842*/
7843WDI_Status
7844WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007845(
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 WDI_ControlBlockType* pWDICtx,
7847 WDI_EventInfoType* pEventData
7848)
7849{
7850 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7851 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 wpt_uint16 usDataOffset = 0;
7854 wpt_uint16 usSendSize = 0;
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7858
7859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 -------------------------------------------------------------------------*/
7862 if (( NULL == pEventData ) ||
7863 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7864 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7865 {
7866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 }
7871
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7873 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 * forwarded to HAL and result in hang*/
7875#if 0
7876 wpalMutexAcquire(&pWDICtx->wptMutex);
7877 /*-----------------------------------------------------------------------
7878 Check to see if SCAN is already in progress - end scan is only
7879 allowed when a scan is ongoing and the state of the scan procedure
7880 is started
7881 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7884 {
7885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7886 "End start not allowed in this state %d %d",
7887 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007888
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 }
7892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007894
7895 wpalMutexRelease(&pWDICtx->wptMutex);
7896#endif
7897
7898 /*-----------------------------------------------------------------------
7899 Get message buffer
7900 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007901 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007902 sizeof(halEndScanReqMsg.endScanParams),
7903 &pSendBuffer, &usDataOffset, &usSendSize))||
7904 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7905 {
7906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007907 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 }
7912
7913 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7914
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 wpalMemoryCopy( pSendBuffer+usDataOffset,
7916 &halEndScanReqMsg.endScanParams,
7917 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007918
7919 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7927}/*WDI_ProcessEndScanReq*/
7928
7929
7930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007933
7934 @param pWDICtx: pointer to the WLAN DAL context
7935 pEventData: pointer to the event information structure
7936
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 @see
7938 @return Result of the function call
7939*/
7940WDI_Status
7941WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007942(
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WDI_ControlBlockType* pWDICtx,
7944 WDI_EventInfoType* pEventData
7945)
7946{
7947 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7948 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 wpt_uint16 usDataOffset = 0;
7951 wpt_uint16 usSendSize = 0;
7952 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007953 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7956
7957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 -------------------------------------------------------------------------*/
7960 if (( NULL == pEventData ) ||
7961 ( NULL == pEventData->pEventData) ||
7962 ( NULL == pEventData->pCBfnc))
7963 {
7964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 }
7969
7970 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7971 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7973 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 * forwarded to HAL and result in hang*/
7975#if 0
7976 wpalMutexAcquire(&pWDICtx->wptMutex);
7977 /*-----------------------------------------------------------------------
7978 Check to see if SCAN is already in progress
7979 Finish scan gets invoked any scan states. ie. abort scan
7980 It should be allowed in any states.
7981 -----------------------------------------------------------------------*/
7982 if ( !pWDICtx->bScanInProgress )
7983 {
7984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7985 "Finish start not allowed in this state %d",
7986 pWDICtx->bScanInProgress );
7987
7988 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 }
7991
7992 /*-----------------------------------------------------------------------
7993 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7997 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 wpalMutexRelease(&pWDICtx->wptMutex);
7999#endif
8000
8001 if ( pWDICtx->bInBmps )
8002 {
8003 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008004 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8005 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8006 {
8007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008008 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008009 WDI_ASSERT(0);
8010 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 }
8012
8013 /*-----------------------------------------------------------------------
8014 Get message buffer
8015 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 sizeof(halFinishScanReqMsg.finishScanParams),
8018 &pSendBuffer, &usDataOffset, &usSendSize))||
8019 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8020 {
8021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008022 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 }
8027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8030
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8033
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8036
8037 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8038 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8039
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8046
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8049
8050 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8051 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8054 }
8055
8056 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8057 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8058
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 wpalMemoryCopy( pSendBuffer+usDataOffset,
8060 &halFinishScanReqMsg.finishScanParams,
8061 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008062
8063 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008065
8066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8071}/*WDI_ProcessFinishScanReq*/
8072
8073
8074/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008076==========================================================================*/
8077/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 @brief Process BSS Join for a given Session
8079
8080 @param pWDICtx: pointer to the WLAN DAL context
8081 pEventData: pointer to the event information structure
8082
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 @see
8084 @return Result of the function call
8085*/
8086WDI_Status
8087WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008088(
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_ControlBlockType* pWDICtx,
8090 WDI_JoinReqParamsType* pwdiJoinParams,
8091 WDI_JoinRspCb wdiJoinRspCb,
8092 void* pUserData
8093)
8094{
8095 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 wpt_uint16 usDataOffset = 0;
8098 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008100
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8103
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008104 wpalMutexAcquire(&pWDICtx->wptMutex);
8105
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 /*------------------------------------------------------------------------
8107 Check to see if we have any session with this BSSID already stored, we
8108 should not
8109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8111 pwdiJoinParams->wdiReqInfo.macBSSID,
8112 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008113
8114 if ( NULL != pBSSSes )
8115 {
8116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008117 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8118 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008119
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008120 /*reset the bAssociationInProgress otherwise the next
8121 *join request will be queued*/
8122 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8123 wpalMutexRelease(&pWDICtx->wptMutex);
8124 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125 }
8126
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 if ( NULL == pBSSSes )
8132 {
8133
8134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8135 "DAL has no free sessions - cannot run another join");
8136
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008137 /*reset the bAssociationInProgress otherwise the next
8138 *join request will be queued*/
8139 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 }
8143
8144 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8146 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 WDI_MAC_ADDR_LEN);
8148
8149 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008152
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 wpalMutexRelease(&pWDICtx->wptMutex);
8154
8155 /*-----------------------------------------------------------------------
8156 Get message buffer
8157 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 sizeof(halJoinReqMsg.joinReqParams),
8160 &pSendBuffer, &usDataOffset, &usSendSize))||
8161 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8162 {
8163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008164 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 pUserData, pwdiJoinParams, wdiJoinRspCb);
8166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 }
8169
8170 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008172
8173 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 pwdiJoinParams->wdiReqInfo.macSTASelf,
8175 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008176
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8179
8180 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8181
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008182#ifdef WLAN_FEATURE_VOWIFI
8183 halJoinReqMsg.joinReqParams.maxTxPower =
8184 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8185#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8188#endif
8189
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8192 wdiSecondaryChannelOffset);
8193
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpalMemoryCopy( pSendBuffer+usDataOffset,
8195 &halJoinReqMsg.joinReqParams,
8196 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008197
8198 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200
8201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8205 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
8207}/*WDI_ProcessBSSSessionJoinReq*/
8208
8209/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008212
8213 @param pWDICtx: pointer to the WLAN DAL context
8214 pEventData: pointer to the event information structure
8215
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 @see
8217 @return Result of the function call
8218*/
8219WDI_Status
8220WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008221(
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 WDI_ControlBlockType* pWDICtx,
8223 WDI_EventInfoType* pEventData
8224)
8225{
8226 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8227 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8228 WDI_JoinRspCb wdiJoinRspCb = NULL;
8229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8230
8231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 -------------------------------------------------------------------------*/
8234 if (( NULL == pEventData ) ||
8235 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8236 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8237 {
8238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008243
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 /*-------------------------------------------------------------------------
8245 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 -------------------------------------------------------------------------*/
8248 wpalMutexAcquire(&pWDICtx->wptMutex);
8249
8250 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8251 {
8252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8253 "Association is currently in progress, queueing new join req");
8254
8255 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 pwdiJoinParams->wdiReqInfo.macBSSID);
8258
8259 wpalMutexRelease(&pWDICtx->wptMutex);
8260
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264 /*Starting a new association */
8265 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8266 wpalMutexRelease(&pWDICtx->wptMutex);
8267
8268 /*Process the Join Request*/
8269 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8270 wdiJoinRspCb,pEventData->pUserData);
8271
8272}/*WDI_ProcessJoinReq*/
8273
8274
8275/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008278
8279 @param pWDICtx: pointer to the WLAN DAL context
8280 pEventData: pointer to the event information structure
8281
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 @see
8283 @return Result of the function call
8284*/
8285WDI_Status
8286WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008287(
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_ControlBlockType* pWDICtx,
8289 WDI_EventInfoType* pEventData
8290)
8291{
8292 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8293 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 wpt_uint16 uMsgSize = 0;
8297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 wpt_uint16 usDataOffset = 0;
8299 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008301
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8304
8305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 -------------------------------------------------------------------------*/
8308 if (( NULL == pEventData ) ||
8309 ( NULL == pEventData->pEventData ) ||
8310 ( NULL == pEventData->pCBfnc ))
8311 {
8312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 }
8317
8318 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8319 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8320 /*-------------------------------------------------------------------------
8321 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 -------------------------------------------------------------------------*/
8324 wpalMutexAcquire(&pWDICtx->wptMutex);
8325
8326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8330 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8331 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 {
8335#ifdef WLAN_FEATURE_VOWIFI_11R
8336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 if ( NULL == pBSSSes )
8341 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8344 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008345
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008349
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8352 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008354
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8358#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 * Request in case of IBSS*/
8361 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8362 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8363 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8364 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8365 {
8366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 if ( NULL == pBSSSes )
8371 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008372
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8374 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008375
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008377 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008379
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8382 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008384
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8388 }
8389 else
8390 {
8391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8393 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8394 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8395
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 /* for IBSS testing */
8397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 }
8400#endif
8401 }
8402
8403 /*------------------------------------------------------------------------
8404 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 ------------------------------------------------------------------------*/
8407 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8408 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8410 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8411 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8412 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008415
8416 wpalMutexRelease(&pWDICtx->wptMutex);
8417
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 }
8420
8421 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8423 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 sizeof(pWDICtx->wdiCachedConfigBssReq));
8425
8426 wpalMutexRelease(&pWDICtx->wptMutex);
8427
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8429#ifdef WLAN_FEATURE_11AC
8430 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008431 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 else
8433#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008434 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008435
8436 /*-----------------------------------------------------------------------
8437 Get message buffer
8438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8441 ( usSendSize < (usDataOffset + uMsgSize )))
8442 {
8443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008444 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 }
8449
8450 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008451#ifdef WLAN_FEATURE_11AC
8452 if (WDI_getFwWlanFeatCaps(DOT11AC))
8453 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8454 &pwdiConfigBSSParams->wdiReqInfo);
8455 else
8456#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 &pwdiConfigBSSParams->wdiReqInfo);
8459
8460 /* Need to fill in the STA Index to invalid, since at this point we have not
8461 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008463
8464 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8466
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008467#ifdef WLAN_FEATURE_11AC
8468 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8469 wpalMemoryCopy( pSendBuffer+usDataOffset,
8470 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8471 uMsgSize);
8472 }else
8473#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008474 {
8475 if ( uMsgSize <= sizeof(tConfigBssParams) )
8476 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008477 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008478 &halConfigBssReqMsg.uBssParams.configBssParams,
8479 uMsgSize);
8480 }
8481 else
8482 {
8483 return WDI_STATUS_E_FAILURE;
8484 }
8485 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008486
8487 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008489
8490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008491 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8494 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 WDI_CONFIG_BSS_RESP);
8496
8497}/*WDI_ProcessConfigBSSReq*/
8498
8499
8500/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008503
8504 @param pWDICtx: pointer to the WLAN DAL context
8505 pEventData: pointer to the event information structure
8506
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 @see
8508 @return Result of the function call
8509*/
8510WDI_Status
8511WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008512(
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 WDI_ControlBlockType* pWDICtx,
8514 WDI_EventInfoType* pEventData
8515)
8516{
8517 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8518 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008521 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 wpt_uint16 usDataOffset = 0;
8523 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8528
8529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 -------------------------------------------------------------------------*/
8532 if (( NULL == pEventData ) ||
8533 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8534 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8535 {
8536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 }
8541
8542 /*-------------------------------------------------------------------------
8543 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 -------------------------------------------------------------------------*/
8546 wpalMutexAcquire(&pWDICtx->wptMutex);
8547
8548 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8552 pwdiDelBSSParams->ucBssIdx,
8553 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008554
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 {
8557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 "%s: BSS does not yet exist. ucBssIdx %d",
8559 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008560
8561 wpalMutexRelease(&pWDICtx->wptMutex);
8562
8563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008565
8566 /*------------------------------------------------------------------------
8567 Check if this BSS is being currently processed or queued,
8568 if queued - queue the new request as well
8569 ------------------------------------------------------------------------*/
8570 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8573 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8574 __func__, pwdiDelBSSParams->ucBssIdx);
8575
8576 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8577
8578 wpalMutexRelease(&pWDICtx->wptMutex);
8579
8580 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008582
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 /*-----------------------------------------------------------------------
8584 If we receive a Del BSS request for an association that is already in
8585 progress, it indicates that the assoc has failed => we no longer have
8586 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 -----------------------------------------------------------------------*/
8589 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8590 {
8591 /*We can switch to false here because even if a subsequent Join comes in
8592 it will only be processed when DAL transitions out of BUSY state which
8593 happens when the Del BSS request comes */
8594 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8595
8596 /*Former association is complete - prepare next pending assoc for
8597 processing */
8598 WDI_DequeueAssocRequest(pWDICtx);
8599 }
8600
8601 wpalMutexRelease(&pWDICtx->wptMutex);
8602 /*-----------------------------------------------------------------------
8603 Get message buffer
8604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 sizeof(halBssReqMsg.deleteBssParams),
8607 &pSendBuffer, &usDataOffset, &usSendSize))||
8608 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8609 {
8610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008611 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 }
8616
8617 /*Fill in the message request structure*/
8618
8619 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008620 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008621
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 wpalMemoryCopy( pSendBuffer+usDataOffset,
8623 &halBssReqMsg.deleteBssParams,
8624 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008625
8626 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008628
Jeff Johnsone7245742012-09-05 17:12:55 -07008629
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8635
Jeff Johnsone7245742012-09-05 17:12:55 -07008636
Jeff Johnson295189b2012-06-20 16:38:30 -07008637}/*WDI_ProcessDelBSSReq*/
8638
8639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008642
8643 @param pWDICtx: pointer to the WLAN DAL context
8644 pEventData: pointer to the event information structure
8645
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 @see
8647 @return Result of the function call
8648*/
8649WDI_Status
8650WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008651(
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 WDI_ControlBlockType* pWDICtx,
8653 WDI_EventInfoType* pEventData
8654)
8655{
8656 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8657 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 wpt_uint16 usDataOffset = 0;
8662 wpt_uint16 usSendSize = 0;
8663 wpt_uint16 uMsgSize = 0;
8664 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8669
8670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 -------------------------------------------------------------------------*/
8673 if (( NULL == pEventData ) ||
8674 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8675 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8676 {
8677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 }
8682
8683 /*-------------------------------------------------------------------------
8684 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 -------------------------------------------------------------------------*/
8687 wpalMutexAcquire(&pWDICtx->wptMutex);
8688
8689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8693 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8694 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008695
8696 if ( NULL == pBSSSes )
8697 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8699 "%s: Association sequence for this BSS does not yet exist - "
8700 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8701 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008702
8703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
8707 /*------------------------------------------------------------------------
8708 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 ------------------------------------------------------------------------*/
8711 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8712 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8714 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8715 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008718
8719 wpalMutexRelease(&pWDICtx->wptMutex);
8720
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 }
8723
8724 /*-----------------------------------------------------------------------
8725 If Post Assoc was not yet received - the current association must
8726 be in progress
8727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8730 {
8731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8732 "Association sequence for this BSS association no longer in "
8733 "progress - not allowed");
8734
8735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 }
8738
8739 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 -----------------------------------------------------------------------*/
8742 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8743 {
8744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8745 "Post Assoc not allowed before JOIN - failing request");
8746
8747 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 }
8750
8751 wpalMutexRelease(&pWDICtx->wptMutex);
8752
8753 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8754 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8755 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8760 ( usSendSize < (usDataOffset + uMsgSize )))
8761 {
8762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008763 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 }
8768
8769 /*Copy the STA parameters */
8770 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8771 &pwdiPostAssocParams->wdiSTAParams );
8772
8773 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 WDI_STATableFindStaidByAddr(pWDICtx,
8776 pwdiPostAssocParams->wdiSTAParams.macSTA,
8777 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8778 {
8779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008780 MAC_ADDRESS_STR
8781 ": This station does not exist in the WDI Station Table",
8782 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008783 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008784 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 }
8787
8788 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 pBSSSes->ucBSSIdx;
8791
8792 /*Copy the BSS parameters */
8793 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8794 &pwdiPostAssocParams->wdiBSSParams);
8795
8796 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 WDI_STATableFindStaidByAddr(pWDICtx,
8799 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 {
8802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008803 MAC_ADDRESS_STR
8804 ": This station does not exist in the WDI Station Table",
8805 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008807 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 }
8810
8811 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 pBSSSes->ucBSSIdx;
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815
8816 wpalMemoryCopy( pSendBuffer+usDataOffset,
8817 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8818 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008819
8820 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8823 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8824 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008825
Jeff Johnsone7245742012-09-05 17:12:55 -07008826
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
Jeff Johnsone7245742012-09-05 17:12:55 -07008830
8831 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008834
8835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8840
Jeff Johnsone7245742012-09-05 17:12:55 -07008841
Jeff Johnson295189b2012-06-20 16:38:30 -07008842}/*WDI_ProcessPostAssocReq*/
8843
8844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008847
8848 @param pWDICtx: pointer to the WLAN DAL context
8849 pEventData: pointer to the event information structure
8850
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 @see
8852 @return Result of the function call
8853*/
8854WDI_Status
8855WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008856(
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 WDI_ControlBlockType* pWDICtx,
8858 WDI_EventInfoType* pEventData
8859)
8860{
8861 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8862 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 wpt_uint16 usDataOffset = 0;
8867 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8870
Jeff Johnsone7245742012-09-05 17:12:55 -07008871 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8873
8874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 -------------------------------------------------------------------------*/
8877 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8878 ( NULL == pEventData->pCBfnc ))
8879 {
8880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 }
8885
8886 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8887 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8888 /*-------------------------------------------------------------------------
8889 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008891 -------------------------------------------------------------------------*/
8892 wpalMutexAcquire(&pWDICtx->wptMutex);
8893
8894 /*------------------------------------------------------------------------
8895 Find the BSS for which the request is made and identify WDI session
8896 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8898 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 &macBSSID))
8900 {
8901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008902 "This station does not exist in the WDI Station Table %d",
8903 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 }
8907
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8909 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8912 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8913 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008914
8915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 }
8918
8919 /*------------------------------------------------------------------------
8920 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 ------------------------------------------------------------------------*/
8923 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8926 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008928
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 }
8933
8934 wpalMutexRelease(&pWDICtx->wptMutex);
8935 /*-----------------------------------------------------------------------
8936 Get message buffer
8937 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 sizeof(halDelStaReqMsg.delStaParams),
8940 &pSendBuffer, &usDataOffset, &usSendSize))||
8941 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8942 {
8943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008944 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8951 wpalMemoryCopy( pSendBuffer+usDataOffset,
8952 &halDelStaReqMsg.delStaParams,
8953 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008954
8955 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008957
8958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8963
8964}/*WDI_ProcessDelSTAReq*/
8965
8966
8967/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008969==========================================================================*/
8970/**
8971 @brief Process Set BSS Key Request function (called when Main FSM
8972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008973
8974 @param pWDICtx: pointer to the WLAN DAL context
8975 pEventData: pointer to the event information structure
8976
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 @see
8978 @return Result of the function call
8979*/
8980WDI_Status
8981WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008982(
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 WDI_ControlBlockType* pWDICtx,
8984 WDI_EventInfoType* pEventData
8985)
8986{
8987 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8988 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 wpt_uint16 usDataOffset = 0;
8993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8996 wpt_uint8 keyIndex = 0;
8997
8998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8999
9000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 -------------------------------------------------------------------------*/
9003 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9004 ( NULL == pEventData->pCBfnc ))
9005 {
9006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 }
9011
9012 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9013 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9014 /*-------------------------------------------------------------------------
9015 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 -------------------------------------------------------------------------*/
9018 wpalMutexAcquire(&pWDICtx->wptMutex);
9019
9020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9024 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9025 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009026
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 {
9029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9031 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009032
9033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037 /*------------------------------------------------------------------------
9038 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 ------------------------------------------------------------------------*/
9041 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9042 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9044 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9045 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009046
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 }
9051
9052
9053 wpalMutexRelease(&pWDICtx->wptMutex);
9054 /*-----------------------------------------------------------------------
9055 Get message buffer
9056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9059 &pSendBuffer, &usDataOffset, &usSendSize))||
9060 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9061 {
9062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009063 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 }
9068
9069 /*-----------------------------------------------------------------------
9070 Copy the Key parameters into the HAL message
9071 -----------------------------------------------------------------------*/
9072
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9077
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9080
9081 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9082 keyIndex++)
9083 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9086 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9087 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9088 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9089 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
9090 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
9097 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 WDI_MAX_KEY_LENGTH);
9100 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009101
9102 wpalMemoryCopy( pSendBuffer+usDataOffset,
9103 &halSetBssKeyReqMsg.setBssKeyParams,
9104 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
9106 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009108
9109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9113 wdiSetBSSKeyRspCb, pEventData->pUserData,
9114 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009115
9116}/*WDI_ProcessSetBssKeyReq*/
9117
9118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009121
9122 @param pWDICtx: pointer to the WLAN DAL context
9123 pEventData: pointer to the event information structure
9124
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 @see
9126 @return Result of the function call
9127*/
9128WDI_Status
9129WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009130(
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 WDI_ControlBlockType* pWDICtx,
9132 WDI_EventInfoType* pEventData
9133)
9134{
9135 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9136 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 wpt_uint16 usDataOffset = 0;
9141 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9145
9146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 -------------------------------------------------------------------------*/
9149 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9150 ( NULL == pEventData->pCBfnc ))
9151 {
9152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 }
9157
9158 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9159 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9160 /*-------------------------------------------------------------------------
9161 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 -------------------------------------------------------------------------*/
9164 wpalMutexAcquire(&pWDICtx->wptMutex);
9165
9166 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9170 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9171 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 {
9175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9177 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009178
9179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
9183 /*------------------------------------------------------------------------
9184 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 ------------------------------------------------------------------------*/
9187 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9188 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9190 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9191 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009192
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 }
9197
9198
9199 wpalMutexRelease(&pWDICtx->wptMutex);
9200
9201 /*-----------------------------------------------------------------------
9202 Get message buffer
9203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9206 &pSendBuffer, &usDataOffset, &usSendSize))||
9207 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9208 {
9209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009210 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 }
9215 /*-----------------------------------------------------------------------
9216 Copy the Key parameters into the HAL message
9217 -----------------------------------------------------------------------*/
9218 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9219
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9222
9223 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9227
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 wpalMemoryCopy( pSendBuffer+usDataOffset,
9229 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9230 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
9232 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234
9235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009241}/*WDI_ProcessRemoveBssKeyReq*/
9242
9243/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009246
9247 @param pWDICtx: pointer to the WLAN DAL context
9248 pEventData: pointer to the event information structure
9249
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 @see
9251 @return Result of the function call
9252*/
9253WDI_Status
9254WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009255(
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 WDI_ControlBlockType* pWDICtx,
9257 WDI_EventInfoType* pEventData
9258)
9259{
9260 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9261 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9262 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 wpt_uint16 usDataOffset = 0;
9265 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9270 wpt_uint8 keyIndex = 0;
9271
9272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9273
9274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 -------------------------------------------------------------------------*/
9277 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9278 ( NULL == pEventData->pCBfnc ))
9279 {
9280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 }
9285
9286 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9287 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9288 /*-------------------------------------------------------------------------
9289 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 -------------------------------------------------------------------------*/
9292 wpalMutexAcquire(&pWDICtx->wptMutex);
9293
9294 /*------------------------------------------------------------------------
9295 Find the BSS for which the request is made and identify WDI session
9296 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9298 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 &macBSSID))
9300 {
9301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009302 "This station does not exist in the WDI Station Table %d",
9303 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 }
9307
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9309 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9312 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9313 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009314
9315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009318
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 /*------------------------------------------------------------------------
9320 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 ------------------------------------------------------------------------*/
9323 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9324 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9326 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9327 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009328
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 }
9333
9334
9335 wpalMutexRelease(&pWDICtx->wptMutex);
9336 /*-----------------------------------------------------------------------
9337 Get message buffer
9338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9341 &pSendBuffer, &usDataOffset, &usSendSize))||
9342 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9343 {
9344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009345 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 }
9350 /*-----------------------------------------------------------------------
9351 Copy the STA Key parameters into the HAL message
9352 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009353 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9355
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9358
9359 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9360
9361 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9362
9363 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9364
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9366 keyIndex++)
9367 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9370 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9371 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9372 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9373 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9374 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9381 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 WDI_MAX_KEY_LENGTH);
9384 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 wpalMemoryCopy( pSendBuffer+usDataOffset,
9387 &halSetStaKeyReqMsg.setStaKeyParams,
9388 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
9390 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009392
9393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9397 wdiSetSTAKeyRspCb, pEventData->pUserData,
9398 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009399
9400}/*WDI_ProcessSetSTAKeyReq*/
9401
9402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009405
9406 @param pWDICtx: pointer to the WLAN DAL context
9407 pEventData: pointer to the event information structure
9408
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 @see
9410 @return Result of the function call
9411*/
9412WDI_Status
9413WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009414(
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 WDI_ControlBlockType* pWDICtx,
9416 WDI_EventInfoType* pEventData
9417)
9418{
9419 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9420 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9421 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 wpt_uint16 usDataOffset = 0;
9424 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 wpt_macAddr macBSSID;
9427 wpt_uint8 ucCurrentBSSSesIdx;
9428 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9430
9431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 -------------------------------------------------------------------------*/
9434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9435 ( NULL == pEventData->pCBfnc ))
9436 {
9437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 }
9442
9443 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9444 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9445 /*-------------------------------------------------------------------------
9446 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 -------------------------------------------------------------------------*/
9449 wpalMutexAcquire(&pWDICtx->wptMutex);
9450
9451 /*------------------------------------------------------------------------
9452 Find the BSS for which the request is made and identify WDI session
9453 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9455 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 &macBSSID))
9457 {
9458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009459 "This station does not exist in the WDI Station Table %d",
9460 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 }
9464
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9466 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9469 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9470 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009471
9472 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009475
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 /*------------------------------------------------------------------------
9477 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 ------------------------------------------------------------------------*/
9480 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9481 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9483 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9484 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009485
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 }
9490
9491
9492
9493 wpalMutexRelease(&pWDICtx->wptMutex);
9494 /*-----------------------------------------------------------------------
9495 Get message buffer
9496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9499 &pSendBuffer, &usDataOffset, &usSendSize))||
9500 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9501 {
9502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009503 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 }
9508
9509 /*-----------------------------------------------------------------------
9510 Copy the Key parameters into the HAL message
9511 -----------------------------------------------------------------------*/
9512
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9515
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9518
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9521
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9524
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 wpalMemoryCopy( pSendBuffer+usDataOffset,
9526 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9527 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009528
9529 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009531
9532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009538
9539}/*WDI_ProcessRemoveSTAKeyReq*/
9540
9541/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009544
9545 @param pWDICtx: pointer to the WLAN DAL context
9546 pEventData: pointer to the event information structure
9547
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 @see
9549 @return Result of the function call
9550*/
9551WDI_Status
9552WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009553(
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 WDI_ControlBlockType* pWDICtx,
9555 WDI_EventInfoType* pEventData
9556)
9557{
9558 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9559 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9560 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 wpt_uint16 usDataOffset = 0;
9563 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9568 wpt_uint8 keyIndex = 0;
9569
9570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9571
9572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 -------------------------------------------------------------------------*/
9575 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9576 ( NULL == pEventData->pCBfnc ))
9577 {
9578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583
9584 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9585 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9586 /*-------------------------------------------------------------------------
9587 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 -------------------------------------------------------------------------*/
9590 wpalMutexAcquire(&pWDICtx->wptMutex);
9591
9592 /*------------------------------------------------------------------------
9593 Find the BSS for which the request is made and identify WDI session
9594 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9596 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 &macBSSID))
9598 {
9599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009600 "This station does not exist in the WDI Station Table %d",
9601 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 }
9605
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9607 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 {
9609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009610 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009612
9613 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009616
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 /*------------------------------------------------------------------------
9618 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 ------------------------------------------------------------------------*/
9621 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9624 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009626
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 }
9631
9632
9633 wpalMutexRelease(&pWDICtx->wptMutex);
9634 /*-----------------------------------------------------------------------
9635 Get message buffer
9636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9639 &pSendBuffer, &usDataOffset, &usSendSize))||
9640 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9641 {
9642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 }
9648 /*-----------------------------------------------------------------------
9649 Copy the STA Key parameters into the HAL message
9650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9653
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9656
9657 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9658
9659 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9660
9661 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9662
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9664 keyIndex++)
9665 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9668 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9669 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9670 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9671 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9672 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9679 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 WDI_MAX_KEY_LENGTH);
9682 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009683
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 wpalMemoryCopy( pSendBuffer+usDataOffset,
9685 &halSetStaKeyReqMsg.setStaKeyParams,
9686 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009687
9688 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009690
9691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9695 wdiSetSTAKeyRspCb, pEventData->pUserData,
9696 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009697
9698}/*WDI_ProcessSetSTABcastKeyReq*/
9699
9700/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009703
9704 @param pWDICtx: pointer to the WLAN DAL context
9705 pEventData: pointer to the event information structure
9706
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 @see
9708 @return Result of the function call
9709*/
9710WDI_Status
9711WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009712(
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 WDI_ControlBlockType* pWDICtx,
9714 WDI_EventInfoType* pEventData
9715)
9716{
9717 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9718 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9719 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 wpt_uint16 usDataOffset = 0;
9722 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 wpt_macAddr macBSSID;
9725 wpt_uint8 ucCurrentBSSSesIdx;
9726 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9728
9729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009731 -------------------------------------------------------------------------*/
9732 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9733 ( NULL == pEventData->pCBfnc ))
9734 {
9735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 }
9740
9741 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9742 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9743 /*-------------------------------------------------------------------------
9744 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 -------------------------------------------------------------------------*/
9747 wpalMutexAcquire(&pWDICtx->wptMutex);
9748
9749 /*------------------------------------------------------------------------
9750 Find the BSS for which the request is made and identify WDI session
9751 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9753 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 &macBSSID))
9755 {
9756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009757 "This station does not exist in the WDI Station Table %d",
9758 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 }
9762
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9764 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9767 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9768 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009769
9770 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009773
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 /*------------------------------------------------------------------------
9775 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 ------------------------------------------------------------------------*/
9778 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9779 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9781 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9782 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009783
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 }
9788
9789
9790
9791 wpalMutexRelease(&pWDICtx->wptMutex);
9792 /*-----------------------------------------------------------------------
9793 Get message buffer
9794 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9797 &pSendBuffer, &usDataOffset, &usSendSize))||
9798 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9799 {
9800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009801 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 }
9806
9807 /*-----------------------------------------------------------------------
9808 Copy the Key parameters into the HAL message
9809 -----------------------------------------------------------------------*/
9810
Jeff Johnsone7245742012-09-05 17:12:55 -07009811 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009812 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9813
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9816
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9819
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9822
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 wpalMemoryCopy( pSendBuffer+usDataOffset,
9824 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9825 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009826
9827 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009836
9837}/*WDI_ProcessRemoveSTABcastKeyReq*/
9838
9839/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009841==========================================================================*/
9842/**
9843 @brief Process Add TSpec Request function (called when Main FSM
9844 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009845
9846 @param pWDICtx: pointer to the WLAN DAL context
9847 pEventData: pointer to the event information structure
9848
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 @see
9850 @return Result of the function call
9851*/
9852WDI_Status
9853WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009854(
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 WDI_ControlBlockType* pWDICtx,
9856 WDI_EventInfoType* pEventData
9857)
9858{
9859 WDI_AddTSReqParamsType* pwdiAddTSParams;
9860 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 wpt_uint16 usDataOffset = 0;
9865 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 wpt_macAddr macBSSID;
9868 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009869
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9871
9872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 -------------------------------------------------------------------------*/
9875 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9876 ( NULL == pEventData->pCBfnc ))
9877 {
9878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 }
9883
9884 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9885 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9886 /*-------------------------------------------------------------------------
9887 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 -------------------------------------------------------------------------*/
9890 wpalMutexAcquire(&pWDICtx->wptMutex);
9891
9892 /*------------------------------------------------------------------------
9893 Find the BSS for which the request is made and identify WDI session
9894 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9896 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 &macBSSID))
9898 {
9899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009900 "This station does not exist in the WDI Station Table %d",
9901 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 }
9905
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9907 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9910 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9911 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009912
9913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009916
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 /*------------------------------------------------------------------------
9918 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 ------------------------------------------------------------------------*/
9921 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9922 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9924 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9925 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009926
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 }
9931
9932 wpalMutexRelease(&pWDICtx->wptMutex);
9933 /*-----------------------------------------------------------------------
9934 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9938 sizeof(halAddTsParams),
9939 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 &usSendSize))||
9941 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9942 {
9943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009944 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 }
9949
9950 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9951 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9952
9953 //TSPEC IE
9954 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9955 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9986
9987 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10002
10003 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010006 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010007 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10008
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 wpalMemoryCopy( pSendBuffer+usDataOffset,
10010 &halAddTsParams,
10011 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010012
10013 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010015
10016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010022}/*WDI_ProcessAddTSpecReq*/
10023
10024
10025/**
10026 @brief Process Del TSpec Request function (called when Main FSM
10027 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010028
10029 @param pWDICtx: pointer to the WLAN DAL context
10030 pEventData: pointer to the event information structure
10031
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 @see
10033 @return Result of the function call
10034*/
10035WDI_Status
10036WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010037(
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 WDI_ControlBlockType* pWDICtx,
10039 WDI_EventInfoType* pEventData
10040)
10041{
10042 WDI_DelTSReqParamsType* pwdiDelTSParams;
10043 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 wpt_uint16 usDataOffset = 0;
10048 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10051
10052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010054 -------------------------------------------------------------------------*/
10055 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10056 ( NULL == pEventData->pCBfnc ))
10057 {
10058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 }
10063
10064 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10065 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10066
10067 /*-------------------------------------------------------------------------
10068 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 -------------------------------------------------------------------------*/
10071 wpalMutexAcquire(&pWDICtx->wptMutex);
10072
10073 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10077 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10078 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010079
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10083 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10084 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10085
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 }
10089
10090 /*------------------------------------------------------------------------
10091 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 ------------------------------------------------------------------------*/
10094 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10095 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10097 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10098 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010099
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 }
10104
10105
10106 wpalMutexRelease(&pWDICtx->wptMutex);
10107 /*-----------------------------------------------------------------------
10108 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10113 &pSendBuffer, &usDataOffset, &usSendSize))||
10114 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10115 {
10116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010117 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 }
10122
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 wpalMemoryCopy( pSendBuffer+usDataOffset,
10124 &pwdiDelTSParams->wdiDelTSInfo,
10125 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010126
10127 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010129
10130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010131 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10134 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010135}/*WDI_ProcessDelTSpecReq*/
10136
10137/**
10138 @brief Process Update EDCA Params Request function (called when
10139 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010140
10141 @param pWDICtx: pointer to the WLAN DAL context
10142 pEventData: pointer to the event information structure
10143
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 @see
10145 @return Result of the function call
10146*/
10147WDI_Status
10148WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010149(
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 WDI_ControlBlockType* pWDICtx,
10151 WDI_EventInfoType* pEventData
10152)
10153{
10154 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10155 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 wpt_uint16 usDataOffset = 0;
10160 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10163
10164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 -------------------------------------------------------------------------*/
10167 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10168 ( NULL == pEventData->pCBfnc ))
10169 {
10170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 }
10175
10176 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10177 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10178 /*-------------------------------------------------------------------------
10179 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 -------------------------------------------------------------------------*/
10182 wpalMutexAcquire(&pWDICtx->wptMutex);
10183
10184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10188 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10189 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010190
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 {
10193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10195 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010196
10197 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 }
10200
10201 /*------------------------------------------------------------------------
10202 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 ------------------------------------------------------------------------*/
10205 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10206 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10208 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10209 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010210
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 }
10215
10216
10217 wpalMutexRelease(&pWDICtx->wptMutex);
10218 /*-----------------------------------------------------------------------
10219 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10224 &pSendBuffer, &usDataOffset, &usSendSize))||
10225 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10226 {
10227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010228 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 }
10233
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 wpalMemoryCopy( pSendBuffer+usDataOffset,
10235 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10236 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010237
10238 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240
10241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10245 wdiUpdateEDCARspCb, pEventData->pUserData,
10246 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010247}/*WDI_ProcessUpdateEDCAParamsReq*/
10248
10249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010252
10253 @param pWDICtx: pointer to the WLAN DAL context
10254 pEventData: pointer to the event information structure
10255
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 @see
10257 @return Result of the function call
10258*/
10259WDI_Status
10260WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010261(
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 WDI_ControlBlockType* pWDICtx,
10263 WDI_EventInfoType* pEventData
10264)
10265{
10266 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10267 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 wpt_uint16 usDataOffset = 0;
10272 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 wpt_macAddr macBSSID;
10275
10276 tAddBASessionReqMsg halAddBASessionReq;
10277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10278
10279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 -------------------------------------------------------------------------*/
10282 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10283 ( NULL == pEventData->pCBfnc ))
10284 {
10285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 }
10290
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10295 /*-------------------------------------------------------------------------
10296 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 -------------------------------------------------------------------------*/
10299 wpalMutexAcquire(&pWDICtx->wptMutex);
10300
10301 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10305 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 &macBSSID))
10307 {
10308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010309 "This station does not exist in the WDI Station Table %d",
10310 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 }
10314
10315
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10321 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10322 __func__, MAC_ADDR_ARRAY(macBSSID));
10323
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 }
10327
10328 /*------------------------------------------------------------------------
10329 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 ------------------------------------------------------------------------*/
10332 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10333 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10335 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10336 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010337
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010340 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 }
10342
10343
10344 wpalMutexRelease(&pWDICtx->wptMutex);
10345 /*-----------------------------------------------------------------------
10346 Get message buffer
10347 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10349 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 sizeof(halAddBASessionReq.addBASessionParams),
10351 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10354 {
10355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010356 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 }
10361
10362 halAddBASessionReq.addBASessionParams.staIdx =
10363 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10364 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10365 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10366 WDI_MAC_ADDR_LEN);
10367 halAddBASessionReq.addBASessionParams.baTID =
10368 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10369 halAddBASessionReq.addBASessionParams.baPolicy =
10370 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10371 halAddBASessionReq.addBASessionParams.baBufferSize =
10372 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10373 halAddBASessionReq.addBASessionParams.baTimeout =
10374 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10375 halAddBASessionReq.addBASessionParams.baSSN =
10376 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10377 halAddBASessionReq.addBASessionParams.baDirection =
10378 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10379
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 wpalMemoryCopy( pSendBuffer+usDataOffset,
10381 &halAddBASessionReq.addBASessionParams,
10382 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010383
10384 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10391 wdiAddBASessionRspCb, pEventData->pUserData,
10392 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010393}/*WDI_ProcessAddBASessionReq*/
10394
10395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010398
10399 @param pWDICtx: pointer to the WLAN DAL context
10400 pEventData: pointer to the event information structure
10401
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 @see
10403 @return Result of the function call
10404*/
10405WDI_Status
10406WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010407(
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 WDI_ControlBlockType* pWDICtx,
10409 WDI_EventInfoType* pEventData
10410)
10411{
10412 WDI_DelBAReqParamsType* pwdiDelBAParams;
10413 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010417 wpt_uint16 usDataOffset = 0;
10418 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 wpt_macAddr macBSSID;
10421 tDelBAParams halDelBAparam;
10422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10423
10424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
10427 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10428 ( NULL == pEventData->pCBfnc ))
10429 {
10430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 }
10435
10436 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10437 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10438 /*-------------------------------------------------------------------------
10439 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 -------------------------------------------------------------------------*/
10442 wpalMutexAcquire(&pWDICtx->wptMutex);
10443
10444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10448 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 &macBSSID))
10450 {
10451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010452 "This station does not exist in the WDI Station Table %d",
10453 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 }
10457
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010459
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10463 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10464 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010465
10466 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 }
10469
10470 /*------------------------------------------------------------------------
10471 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 ------------------------------------------------------------------------*/
10474 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10475 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10477 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10478 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010479
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 }
10484
10485 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 sizeof(halDelBAparam),
10488 &pSendBuffer, &usDataOffset, &usSendSize))||
10489 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10490 {
10491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010492 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 }
10497
10498 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10499 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10500 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10501
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 wpalMemoryCopy( pSendBuffer+usDataOffset,
10503 &halDelBAparam,
10504 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010505
10506 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010507 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010508
10509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10513 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010514}/*WDI_ProcessDelBAReq*/
10515
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010516#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010517
10518WDI_Status
10519WDI_ProcessTSMStatsReq
10520(
10521 WDI_ControlBlockType* pWDICtx,
10522 WDI_EventInfoType* pEventData
10523)
10524{
10525 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10526 WDI_TsmRspCb wdiTSMRspCb;
10527 wpt_uint8 ucCurrentBSSSesIdx = 0;
10528 WDI_BSSSessionType* pBSSSes = NULL;
10529 wpt_uint8* pSendBuffer = NULL;
10530 wpt_uint16 usDataOffset = 0;
10531 wpt_uint16 usSendSize = 0;
10532 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10533 tTsmStatsParams halTsmStatsReqParams = {0};
10534
10535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10536
10537 /*-------------------------------------------------------------------------
10538 Sanity check
10539 -------------------------------------------------------------------------*/
10540 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10541 ( NULL == pEventData->pCBfnc ))
10542 {
10543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010545 WDI_ASSERT(0);
10546 return WDI_STATUS_E_FAILURE;
10547 }
10548
10549 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10550 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10551 /*-------------------------------------------------------------------------
10552 Check to see if we are in the middle of an association, if so queue, if
10553 not it means it is free to process request
10554 -------------------------------------------------------------------------*/
10555 wpalMutexAcquire(&pWDICtx->wptMutex);
10556
10557 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10558 if ( NULL == pBSSSes )
10559 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10561 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10562 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010563
10564 wpalMutexRelease(&pWDICtx->wptMutex);
10565 return WDI_STATUS_E_NOT_ALLOWED;
10566 }
10567
10568 /*------------------------------------------------------------------------
10569 Check if this BSS is being currently processed or queued,
10570 if queued - queue the new request as well
10571 ------------------------------------------------------------------------*/
10572 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10573 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010575 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010577
10578 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10579 wpalMutexRelease(&pWDICtx->wptMutex);
10580 return wdiStatus;
10581 }
10582
10583 wpalMutexRelease(&pWDICtx->wptMutex);
10584 /*-----------------------------------------------------------------------
10585 Get message buffer
10586 ! TO DO : proper conversion into the HAL Message Request Format
10587 -----------------------------------------------------------------------*/
10588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10589 sizeof(halTsmStatsReqParams),
10590 &pSendBuffer, &usDataOffset, &usSendSize))||
10591 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10592 {
10593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010594 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 pEventData, pwdiTSMParams, wdiTSMRspCb);
10596 WDI_ASSERT(0);
10597 return WDI_STATUS_E_FAILURE;
10598 }
10599
10600 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10601 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10602 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10603 WDI_MAC_ADDR_LEN);
10604 wpalMemoryCopy( pSendBuffer+usDataOffset,
10605 &halTsmStatsReqParams,
10606 sizeof(halTsmStatsReqParams));
10607
10608 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10609 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10610
10611 /*-------------------------------------------------------------------------
10612 Send TSM Stats Request to HAL
10613 -------------------------------------------------------------------------*/
10614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10615 wdiTSMRspCb, pEventData->pUserData,
10616 WDI_TSM_STATS_RESP);
10617}/*WDI_ProcessTSMStatsReq*/
10618
10619#endif
10620
10621
10622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010625
10626 @param pWDICtx: pointer to the WLAN DAL context
10627 pEventData: pointer to the event information structure
10628
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 @see
10630 @return Result of the function call
10631*/
10632WDI_Status
10633WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010634(
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 WDI_ControlBlockType* pWDICtx,
10636 WDI_EventInfoType* pEventData
10637)
10638{
10639 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10640 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 wpt_uint16 usDataOffset = 0;
10643 wpt_uint16 usSendSize = 0;
10644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10645
10646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 -------------------------------------------------------------------------*/
10649 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10650 ( NULL == pEventData->pCBfnc ))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
10658 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10659 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10660 /*-----------------------------------------------------------------------
10661 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10666 &pSendBuffer, &usDataOffset, &usSendSize))||
10667 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10668 {
10669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010670 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 }
10675
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 wpalMemoryCopy( pSendBuffer+usDataOffset,
10677 &pwdiFlushAcParams->wdiFlushAcInfo,
10678 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010679
10680 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010682
10683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10687 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010688}/*WDI_ProcessFlushAcReq*/
10689
10690/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010693
10694 @param pWDICtx: pointer to the WLAN DAL context
10695 pEventData: pointer to the event information structure
10696
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 @see
10698 @return Result of the function call
10699*/
10700WDI_Status
10701WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010702(
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 WDI_ControlBlockType* pWDICtx,
10704 WDI_EventInfoType* pEventData
10705)
10706{
10707 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10708 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 wpt_uint16 usDataOffset = 0;
10711 wpt_uint16 usSendSize = 0;
10712
10713 tBtAmpEventMsg haltBtAmpEventMsg;
10714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10715
10716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 -------------------------------------------------------------------------*/
10719 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10720 ( NULL == pEventData->pCBfnc ))
10721 {
10722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 }
10727
10728 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10729 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10730 /*-----------------------------------------------------------------------
10731 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10736 &pSendBuffer, &usDataOffset, &usSendSize))||
10737 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10738 {
10739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010740 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 }
10745
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpalMemoryCopy( pSendBuffer+usDataOffset,
10749 &haltBtAmpEventMsg.btAmpEventParams,
10750 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010751
10752 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754
10755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10759 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010760}/*WDI_ProcessBtAmpEventReq*/
10761
10762/**
10763 @brief Process Add STA self Request function (called when Main FSM
10764 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010765
10766 @param pWDICtx: pointer to the WLAN DAL context
10767 pEventData: pointer to the event information structure
10768
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 @see
10770 @return Result of the function call
10771*/
10772WDI_Status
10773WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010774(
Jeff Johnson295189b2012-06-20 16:38:30 -070010775 WDI_ControlBlockType* pWDICtx,
10776 WDI_EventInfoType* pEventData
10777)
10778{
10779 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10780 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 wpt_uint16 usDataOffset = 0;
10783 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010784 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10786
10787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 -------------------------------------------------------------------------*/
10790 if (( NULL == pEventData ) ||
10791 ( NULL == pEventData->pEventData) ||
10792 ( NULL == pEventData->pCBfnc))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 }
10799
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010803 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10804 /*-----------------------------------------------------------------------
10805 Get message buffer
10806 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10808 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010809 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010811 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 {
10813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010814 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 }
10819
10820 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10823
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010825 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10826 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10827 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10828 {
10829 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10830 }
10831 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10832 VOS_P2P_CLIENT_MODE) ||
10833 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10834 VOS_P2P_DEVICE))
10835 {
10836 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10837 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010839 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010840
10841 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843
10844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10848 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10849 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010850}/*WDI_ProcessAddSTASelfReq*/
10851
10852
10853
10854/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010857
10858 @param pWDICtx: pointer to the WLAN DAL context
10859 pEventData: pointer to the event information structure
10860
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 @see
10862 @return Result of the function call
10863*/
10864WDI_Status
10865WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010866(
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 WDI_ControlBlockType* pWDICtx,
10868 WDI_EventInfoType* pEventData
10869)
10870{
10871 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10872 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 wpt_uint16 usDataOffset = 0;
10875 wpt_uint16 usSendSize = 0;
10876 tDelStaSelfParams halSetDelSelfSTAParams;
10877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10878
10879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
10882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10883 ( NULL == pEventData->pCBfnc ))
10884 {
10885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 }
10890
Jeff Johnsone7245742012-09-05 17:12:55 -070010891 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010892 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10893 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10894
10895 /*-----------------------------------------------------------------------
10896 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10901 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10904 {
10905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010906 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 }
10911
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10914
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10916 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010917
10918 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010920
10921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10925 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 WDI_DEL_STA_SELF_RESP);
10927
10928}
10929
Jeff Johnsone7245742012-09-05 17:12:55 -070010930#ifdef FEATURE_OEM_DATA_SUPPORT
10931/**
10932 @brief Process Start Oem Data Request function (called when Main
10933 FSM allows it)
10934
10935 @param pWDICtx: pointer to the WLAN DAL context
10936 pEventData: pointer to the event information structure
10937
10938 @see
10939 @return Result of the function call
10940*/
10941WDI_Status
10942WDI_ProcessStartOemDataReq
10943(
10944 WDI_ControlBlockType* pWDICtx,
10945 WDI_EventInfoType* pEventData
10946)
10947{
10948 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10949 WDI_oemDataRspCb wdiOemDataRspCb;
10950 wpt_uint8* pSendBuffer = NULL;
10951 wpt_uint16 usDataOffset = 0;
10952 wpt_uint16 usSendSize = 0;
10953 wpt_uint16 reqLen;
10954 tStartOemDataReqParams* halStartOemDataReqParams;
10955
10956 /*-------------------------------------------------------------------------
10957 Sanity check
10958 -------------------------------------------------------------------------*/
10959 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10960 ( NULL == pEventData->pCBfnc ))
10961 {
10962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010963 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 WDI_ASSERT(0);
10965 return WDI_STATUS_E_FAILURE;
10966 }
10967
10968 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10969 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10970
10971 /*-----------------------------------------------------------------------
10972 Get message buffer
10973 -----------------------------------------------------------------------*/
10974
10975 reqLen = sizeof(tStartOemDataReqParams);
10976
10977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10978 WDI_START_OEM_DATA_REQ, reqLen,
10979 &pSendBuffer, &usDataOffset, &usSendSize))||
10980 (usSendSize < (usDataOffset + reqLen)))
10981 {
10982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010983 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10985 WDI_ASSERT(0);
10986 return WDI_STATUS_E_FAILURE;
10987 }
10988
10989 //copying WDI OEM DATA REQ PARAMS to shared memory
10990 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10991
10992 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10993 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10994
10995 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10996 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10997
10998 /*-------------------------------------------------------------------------
10999 Send Start Request to HAL
11000 -------------------------------------------------------------------------*/
11001 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11002 wdiOemDataRspCb, pEventData->pUserData,
11003 WDI_START_OEM_DATA_RESP);
11004}/*WDI_ProcessStartOemDataReq*/
11005#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011006
11007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011010
11011 @param pWDICtx: pointer to the WLAN DAL context
11012 pEventData: pointer to the event information structure
11013
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 @see
11015 @return Result of the function call
11016*/
11017WDI_Status
11018WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011019(
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 WDI_ControlBlockType* pWDICtx,
11021 WDI_EventInfoType* pEventData
11022)
11023{
11024 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11025 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 wpt_uint16 usDataOffset = 0;
11028 wpt_uint16 usSendSize = 0;
11029 tHalWlanHostResumeReqParam halResumeReqParams;
11030
11031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11032
11033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 -------------------------------------------------------------------------*/
11036 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11037 ( NULL == pEventData->pCBfnc ))
11038 {
11039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011040 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 }
11044
11045 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11046 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11047
11048 /*-----------------------------------------------------------------------
11049 Get message buffer
11050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11053 &pSendBuffer, &usDataOffset, &usSendSize))||
11054 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11055 {
11056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011057 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 }
11062
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011065
11066 wpalMemoryCopy( pSendBuffer+usDataOffset,
11067 &halResumeReqParams,
11068 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011069
11070 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011072
11073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11077 wdiHostResumeRspCb, pEventData->pUserData,
11078 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011079}/*WDI_ProcessHostResumeReq*/
11080
11081/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011084
11085 @param pWDICtx: pointer to the WLAN DAL context
11086 pEventData: pointer to the event information structure
11087
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 @see
11089 @return Result of the function call
11090*/
11091WDI_Status
11092WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011093(
Jeff Johnson295189b2012-06-20 16:38:30 -070011094 WDI_ControlBlockType* pWDICtx,
11095 WDI_EventInfoType* pEventData
11096)
11097{
11098 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11099 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 wpt_uint16 usDataOffset = 0;
11102 wpt_uint16 usSendSize = 0;
11103 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11105
11106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 -------------------------------------------------------------------------*/
11109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11110 ( NULL == pEventData->pCBfnc ))
11111 {
11112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011113 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011116 }
11117
11118 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11119 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 /*-----------------------------------------------------------------------
11122 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 sizeof(halTxPerTrackingReqParam),
11127 &pSendBuffer, &usDataOffset, &usSendSize))||
11128 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11129 {
11130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011131 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011136
Jeff Johnson295189b2012-06-20 16:38:30 -070011137 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11138 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11139 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11140 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011141
11142 wpalMemoryCopy( pSendBuffer+usDataOffset,
11143 &halTxPerTrackingReqParam,
11144 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011145
11146 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011148
11149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11153 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011154}/*WDI_ProcessSetTxPerTrackingReq*/
11155
11156/*=========================================================================
11157 Indications
11158=========================================================================*/
11159
11160/**
11161 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011162
11163 @param pWDICtx: pointer to the WLAN DAL context
11164 pEventData: pointer to the event information structure
11165
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 @see
11167 @return Result of the function call
11168*/
11169WDI_Status
11170WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011171(
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 WDI_ControlBlockType* pWDICtx,
11173 WDI_EventInfoType* pEventData
11174)
11175{
11176 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 wpt_uint16 usDataOffset = 0;
11179 wpt_uint16 usSendSize = 0;
11180 WDI_Status wdiStatus;
11181 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11183
11184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 -------------------------------------------------------------------------*/
11187 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11188 {
11189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011190 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 }
11194
11195 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11196
11197 /*-----------------------------------------------------------------------
11198 Get message buffer
11199 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11201 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 sizeof(halWlanSuspendIndparams),
11203 &pSendBuffer, &usDataOffset, &usSendSize))||
11204 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11207 "Unable to get send buffer in Suspend Ind ");
11208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
11212 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11213 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11214
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011216 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011217
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11219 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011220
11221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011223 -------------------------------------------------------------------------*/
11224 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011226
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11229}/*WDI_ProcessHostSuspendInd*/
11230
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011231
11232
11233/**
11234 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11235
11236 @param pWDICtx: pointer to the WLAN DAL context
11237 pEventData: pointer to the event information structure
11238
11239 @see
11240 @return Result of the function call
11241*/
11242WDI_Status
11243WDI_ProcessTrafficStatsInd
11244(
11245 WDI_ControlBlockType* pWDICtx,
11246 WDI_EventInfoType* pEventData
11247)
11248{
11249 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11250 wpt_uint8* pSendBuffer = NULL;
11251 wpt_uint16 usDataOffset = 0;
11252 wpt_uint16 usSendSize = 0;
11253 WDI_Status wdiStatus;
11254 tStatsClassBIndParams* pStatsClassBIndParams;
11255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11256
11257 /*-------------------------------------------------------------------------
11258 Sanity check
11259 -------------------------------------------------------------------------*/
11260 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11261 {
11262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11263 "%s: Invalid parameters in Traffic Stats ind",__func__);
11264 WDI_ASSERT(0);
11265 return WDI_STATUS_E_FAILURE;
11266 }
11267
11268 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11269
11270 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11271 {
11272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11273 "%s: Invalid parameters in Traffic Stats ind",__func__);
11274 WDI_ASSERT(0);
11275 return WDI_STATUS_E_FAILURE;
11276 }
11277
11278 /*-----------------------------------------------------------------------
11279 Get message buffer
11280 -----------------------------------------------------------------------*/
11281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11282 WDI_TRAFFIC_STATS_IND,
11283 sizeof(tStatsClassBIndParams),
11284 &pSendBuffer, &usDataOffset, &usSendSize))||
11285 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11286 {
11287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11288 "Unable to get send buffer in Traffic Stats Ind ");
11289 WDI_ASSERT(0);
11290 return WDI_STATUS_E_FAILURE;
11291 }
11292
11293 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11294
11295 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11296
11297 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11298 pTrafficStatsIndParams->pTrafficStats,
11299 pTrafficStatsIndParams->length);
11300
11301 /*-------------------------------------------------------------------------
11302 Send Suspend Request to HAL
11303 -------------------------------------------------------------------------*/
11304 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11305 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11306
11307 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11308 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11309}/*WDI_ProcessTrafficStatsInd*/
11310
Chet Lanctot186b5732013-03-18 10:26:30 -070011311#ifdef WLAN_FEATURE_11W
11312/**
11313 @brief Process Exclude Unencrypted Indications function (called
11314 when Main FSM allows it)
11315
11316 @param pWDICtx: pointer to the WLAN DAL context
11317 pEventData: pointer to the event information structure
11318
11319 @see
11320 @return Result of the function call
11321*/
11322WDI_Status
11323WDI_ProcessExcludeUnencryptInd
11324(
11325 WDI_ControlBlockType* pWDICtx,
11326 WDI_EventInfoType* pEventData
11327)
11328{
11329 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11330 wpt_uint8* pSendBuffer = NULL;
11331 wpt_uint16 usDataOffset = 0;
11332 wpt_uint16 usSendSize = 0;
11333 WDI_Status wdiStatus;
11334 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11336
11337 /*-------------------------------------------------------------------------
11338 Sanity check
11339 -------------------------------------------------------------------------*/
11340 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11341 {
11342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11343 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11344 WDI_ASSERT(0);
11345 return WDI_STATUS_E_FAILURE;
11346 }
11347
11348 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11349
11350 /*-----------------------------------------------------------------------
11351 Get message buffer
11352 -----------------------------------------------------------------------*/
11353 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11354 WDI_EXCLUDE_UNENCRYPTED_IND,
11355 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11356 &pSendBuffer, &usDataOffset, &usSendSize))||
11357 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11358 {
11359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11360 "Unable to get send buffer in Exclude Unencrypted Ind ");
11361 WDI_ASSERT(0);
11362 return WDI_STATUS_E_FAILURE;
11363 }
11364
11365 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11366
11367 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11368
11369 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11370 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11371
11372 /*-------------------------------------------------------------------------
11373 Send Suspend Request to HAL
11374 -------------------------------------------------------------------------*/
11375 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11376 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11377
11378 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11379 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11380}/*WDI_ProcessExcludeUnencryptInd*/
11381#endif
11382
Yue Mab9c86f42013-08-14 15:59:08 -070011383/**
11384 @brief Process Add Periodic Tx Pattern Indication function (called when
11385 Main FSM allows it)
11386
11387 @param pWDICtx: pointer to the WLAN DAL context
11388 pEventData: pointer to the event information structure
11389
11390 @see
11391 @return Result of the function call
11392*/
11393WDI_Status
11394WDI_ProcessAddPeriodicTxPtrnInd
11395(
11396 WDI_ControlBlockType* pWDICtx,
11397 WDI_EventInfoType* pEventData
11398)
11399{
11400 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11401 wpt_uint8* pSendBuffer = NULL;
11402 wpt_uint16 usDataOffset = 0;
11403 wpt_uint16 usSendSize = 0;
11404 WDI_Status wdiStatus;
11405 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11406 wpt_uint8 selfStaIdx = 0;
11407
11408 /*-------------------------------------------------------------------------
11409 Sanity check
11410 -------------------------------------------------------------------------*/
11411 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11412 {
11413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11414 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11415 WDI_ASSERT(0);
11416 return WDI_STATUS_E_FAILURE;
11417 }
11418
11419 pAddPeriodicTxPtrnParams =
11420 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11421
11422 /*------------------------------------------------------------------------
11423 Get message buffer
11424 ------------------------------------------------------------------------*/
11425 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11426 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11427 &pSendBuffer, &usDataOffset, &usSendSize))||
11428 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11429 {
11430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11431 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11432 __func__);
11433 WDI_ASSERT(0);
11434 return WDI_STATUS_E_FAILURE;
11435 }
11436
11437 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11438
11439 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11440 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11441 &selfStaIdx))
11442 {
11443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11444 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011445 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011446
11447 return WDI_STATUS_E_FAILURE;
11448 }
11449
11450 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11451 halAddPeriodicTxPtrn->ucPtrnId =
11452 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11453 halAddPeriodicTxPtrn->usPtrnSize =
11454 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11455 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11456 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11457
11458 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11459 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11460 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11461
11462 /*-------------------------------------------------------------------------
11463 Send Indication to HAL
11464 -------------------------------------------------------------------------*/
11465 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11466 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11467
11468 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11469
11470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11471 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11472
11473 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11474} /* WDI_ProcessAddPeriodicTxPtrnInd */
11475
11476/**
11477 @brief Process Delete Periodic Tx Pattern Indication function (called when
11478 Main FSM allows it)
11479
11480 @param pWDICtx: pointer to the WLAN DAL context
11481 pEventData: pointer to the event information structure
11482
11483 @see
11484 @return Result of the function call
11485*/
11486WDI_Status
11487WDI_ProcessDelPeriodicTxPtrnInd
11488(
11489 WDI_ControlBlockType* pWDICtx,
11490 WDI_EventInfoType* pEventData
11491)
11492{
11493 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11494 wpt_uint8* pSendBuffer = NULL;
11495 wpt_uint16 usDataOffset = 0;
11496 wpt_uint16 usSendSize = 0;
11497 WDI_Status wdiStatus;
11498 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11499 wpt_uint8 selfStaIdx = 0;
11500
11501 /*-------------------------------------------------------------------------
11502 Sanity check
11503 -------------------------------------------------------------------------*/
11504 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11505 {
11506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11507 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11508 WDI_ASSERT(0);
11509 return WDI_STATUS_E_FAILURE;
11510 }
11511
11512 pDelPeriodicTxPtrnParams =
11513 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11514
11515 /*------------------------------------------------------------------------
11516 Get message buffer
11517 ------------------------------------------------------------------------*/
11518 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11519 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11520 &pSendBuffer, &usDataOffset, &usSendSize))||
11521 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11522 {
11523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11524 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11525 __func__);
11526 WDI_ASSERT(0);
11527 return WDI_STATUS_E_FAILURE;
11528 }
11529
11530 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11531
11532 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11533 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11534 &selfStaIdx))
11535 {
11536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11537 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011538 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011539
11540 return WDI_STATUS_E_FAILURE;
11541 }
11542
11543 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11544 halDelPeriodicTxPtrn->uPatternIdBitmap =
11545 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11546
11547 /*-------------------------------------------------------------------------
11548 Send Indication to HAL
11549 -------------------------------------------------------------------------*/
11550 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11551 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11552
11553 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11554
11555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11556 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11557
11558 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11559} /* WDI_ProcessDelPeriodicTxPtrnInd */
11560
Jeff Johnson295189b2012-06-20 16:38:30 -070011561/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011563==========================================================================*/
11564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011567
11568 @param pWDICtx: pointer to the WLAN DAL context
11569 pEventData: pointer to the event information structure
11570
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 @see
11572 @return Result of the function call
11573*/
11574WDI_Status
11575WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011576(
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 WDI_ControlBlockType* pWDICtx,
11578 WDI_EventInfoType* pEventData
11579)
11580{
11581 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11582 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 wpt_uint16 usDataOffset = 0;
11585 wpt_uint16 usSendSize = 0;
11586 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11588
11589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011591 -------------------------------------------------------------------------*/
11592 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11593 ( NULL == pEventData->pCBfnc ))
11594 {
11595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 }
11600
11601 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11602 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11603 /*-----------------------------------------------------------------------
11604 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 sizeof(halSwitchChannelReq.switchChannelParams),
11609 &pSendBuffer, &usDataOffset, &usSendSize))||
11610 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11611 {
11612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011613 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011614 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 }
11618
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011621#ifndef WLAN_FEATURE_VOWIFI
11622 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11624#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11627
11628#ifdef WLAN_FEATURE_VOWIFI
11629 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11632 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11633 WDI_MAC_ADDR_LEN);
11634 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11635 pwdiSwitchChParams->wdiChInfo.macBSSId,
11636 WDI_MAC_ADDR_LEN);
11637#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 wpalMemoryCopy( pSendBuffer+usDataOffset,
11639 &halSwitchChannelReq.switchChannelParams,
11640 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011641
11642 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011644
11645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11649 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011650}/*WDI_ProcessChannelSwitchReq*/
11651
11652/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011653 @brief Process Channel Switch Request function (called when
11654 Main FSM allows it)
11655
11656 @param pWDICtx: pointer to the WLAN DAL context
11657 pEventData: pointer to the event information structure
11658
11659 @see
11660 @return Result of the function call
11661*/
11662WDI_Status WDI_ProcessChannelSwitchReq_V1
11663(
11664 WDI_ControlBlockType* pWDICtx,
11665 WDI_EventInfoType* pEventData
11666)
11667{
11668 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11669 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11670 wpt_uint8* pSendBuffer = NULL;
11671 wpt_uint16 usDataOffset = 0;
11672 wpt_uint16 usSendSize = 0;
11673 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11675
11676 /*-------------------------------------------------------------------------
11677 Sanity check
11678 -------------------------------------------------------------------------*/
11679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11680 ( NULL == pEventData->pCBfnc ))
11681 {
11682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11683 "%s: Invalid parameters", __func__);
11684 WDI_ASSERT(0);
11685 return WDI_STATUS_E_FAILURE;
11686 }
11687
11688 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11689 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11690 /*-----------------------------------------------------------------------
11691 Get message buffer
11692 ! TO DO : proper conversion into the HAL Message Request Format
11693 -----------------------------------------------------------------------*/
11694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11695 WDI_CH_SWITCH_REQ_V1,
11696 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11697 &pSendBuffer, &usDataOffset, &usSendSize))||
11698 ( usSendSize < (usDataOffset +
11699 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11700 {
11701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11702 "Unable to get send buffer in channel switch req %p %p %p",
11703 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11704 WDI_ASSERT(0);
11705 return WDI_STATUS_E_FAILURE;
11706 }
11707
11708 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11709 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11710
11711 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11712 pwdiSwitchChParams->wdiChInfo.ucChannel;
11713#ifndef WLAN_FEATURE_VOWIFI
11714 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11715 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11716#endif
11717 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11718 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11719
11720#ifdef WLAN_FEATURE_VOWIFI
11721 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11722 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11723 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11724 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11725 WDI_MAC_ADDR_LEN);
11726 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11727 pwdiSwitchChParams->wdiChInfo.macBSSId,
11728 WDI_MAC_ADDR_LEN);
11729#endif
11730 wpalMemoryCopy( pSendBuffer+usDataOffset,
11731 &halSwitchChannelReq.switchChannelParams_V1,
11732 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11733
11734 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11735 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11736
11737 /*-------------------------------------------------------------------------
11738 Send Switch Channel Request to HAL
11739 -------------------------------------------------------------------------*/
11740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11741 wdiSwitchChRspCb, pEventData->pUserData,
11742 WDI_CH_SWITCH_RESP_V1);
11743}/*WDI_ProcessChannelSwitchReq_V1*/
11744
11745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011746 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011747 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011748
11749 @param pWDICtx: pointer to the WLAN DAL context
11750 pEventData: pointer to the event information structure
11751
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 @see
11753 @return Result of the function call
11754*/
11755WDI_Status
11756WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011757(
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_ControlBlockType* pWDICtx,
11759 WDI_EventInfoType* pEventData
11760)
11761{
11762 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11763 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 wpt_uint16 usDataOffset = 0;
11768 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011770
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 tConfigStaReqMsg halConfigStaReqMsg;
11772 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11774
11775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 -------------------------------------------------------------------------*/
11778 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11779 ( NULL == pEventData->pCBfnc ))
11780 {
11781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 }
11786
11787 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11788 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11789 /*-------------------------------------------------------------------------
11790 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 -------------------------------------------------------------------------*/
11793 wpalMutexAcquire(&pWDICtx->wptMutex);
11794
11795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11799 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11800 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011801
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11805 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11806 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011807
11808 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 }
11811
11812 /*------------------------------------------------------------------------
11813 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 ------------------------------------------------------------------------*/
11816 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11817 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11819 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11820 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011821
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 }
11826
11827 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011828
11829 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11830#ifdef WLAN_FEATURE_11AC
11831 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011832 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 else
11834#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011835 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011836
Jeff Johnson295189b2012-06-20 16:38:30 -070011837 /*-----------------------------------------------------------------------
11838 Get message buffer
11839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11841 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011843 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011844 {
11845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011846 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 }
11851
11852 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 &pwdiConfigSTAParams->wdiReqInfo);
11855
11856 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11857 {
11858 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 WDI_STATableFindStaidByAddr(pWDICtx,
11861 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 {
11864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011865 MAC_ADDRESS_STR
11866 ": This station does not exist in the WDI Station Table",
11867 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011869 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 }
11872 }
11873 else
11874 {
11875 /* Need to fill in the STA Index to invalid, since at this point we have not
11876 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011877 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 }
11879
11880 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011882
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 wpalMemoryCopy( pSendBuffer+usDataOffset,
11884 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011885 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011886
11887 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011889
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11891 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 sizeof(pWDICtx->wdiCachedConfigStaReq));
11893
11894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11898 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011899}/*WDI_ProcessConfigStaReq*/
11900
11901
11902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011903 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011905
11906 @param pWDICtx: pointer to the WLAN DAL context
11907 pEventData: pointer to the event information structure
11908
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 @see
11910 @return Result of the function call
11911*/
11912WDI_Status
11913WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011914(
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 WDI_ControlBlockType* pWDICtx,
11916 WDI_EventInfoType* pEventData
11917)
11918{
11919 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11920 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011922 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 wpt_uint16 usDataOffset = 0;
11925 wpt_uint16 usSendSize = 0;
11926 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11929
11930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 -------------------------------------------------------------------------*/
11933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11934 ( NULL == pEventData->pCBfnc ))
11935 {
11936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 }
11941
11942 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11943 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11944 /*-------------------------------------------------------------------------
11945 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 -------------------------------------------------------------------------*/
11948 wpalMutexAcquire(&pWDICtx->wptMutex);
11949
11950 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11954 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11955 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011956
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11961 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 }
11963 else
11964 {
11965 /*------------------------------------------------------------------------
11966 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 ------------------------------------------------------------------------*/
11969 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11972 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11973 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11974
11975 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 }
11979 }
11980 /* If the link is set to enter IDLE - the Session allocated for this BSS
11981 will be deleted on the Set Link State response coming from HAL
11982 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11985
11986 wpalMutexRelease(&pWDICtx->wptMutex);
11987 /*-----------------------------------------------------------------------
11988 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011991
11992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 sizeof(halLinkStateReqMsg),
11994 &pSendBuffer, &usDataOffset, &usSendSize))||
11995 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11996 {
11997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011998 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 }
12003
12004 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12005 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12006
12007 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12008 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12009
Jeff Johnsone7245742012-09-05 17:12:55 -070012010 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12012
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 wpalMemoryCopy( pSendBuffer+usDataOffset,
12014 &halLinkStateReqMsg,
12015 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012016
12017 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012019
12020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12024 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012025}/*WDI_ProcessSetLinkStateReq*/
12026
12027
12028/**
12029 @brief Process Get Stats Request function (called when Main FSM
12030 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012031
12032 @param pWDICtx: pointer to the WLAN DAL context
12033 pEventData: pointer to the event information structure
12034
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 @see
12036 @return Result of the function call
12037*/
12038WDI_Status
12039WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012040(
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 WDI_ControlBlockType* pWDICtx,
12042 WDI_EventInfoType* pEventData
12043)
12044{
12045 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12046 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 wpt_uint16 usDataOffset = 0;
12049 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 WDI_BSSSessionType* pBSSSes = NULL;
12052 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 tHalStatsReqMsg halStatsReqMsg;
12055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12056
12057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 -------------------------------------------------------------------------*/
12060 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12061 ( NULL == pEventData->pCBfnc ) )
12062 {
12063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 }
12068
12069 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12070 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12071
12072 /*-------------------------------------------------------------------------
12073 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 -------------------------------------------------------------------------*/
12076 wpalMutexAcquire(&pWDICtx->wptMutex);
12077
12078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12082 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 &macBSSID))
12084 {
12085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012086 "This station does not exist in the WDI Station Table %d",
12087 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 }
12091
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12093 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12096 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12097 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012098
12099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 }
12102
12103 /*------------------------------------------------------------------------
12104 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 ------------------------------------------------------------------------*/
12107 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12108 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12110 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12111 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012112
Jeff Johnsone7245742012-09-05 17:12:55 -070012113 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012115 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 }
12117
12118
12119 wpalMutexRelease(&pWDICtx->wptMutex);
12120
12121 /*-----------------------------------------------------------------------
12122 Get message buffer
12123 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 sizeof(halStatsReqMsg.statsReqParams),
12126 &pSendBuffer, &usDataOffset, &usSendSize))||
12127 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12128 {
12129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012130 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 }
12135
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 wpalMemoryCopy( pSendBuffer+usDataOffset,
12141 &halStatsReqMsg.statsReqParams,
12142 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012143
12144 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012146
12147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12151 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012152}/*WDI_ProcessGetStatsReq*/
12153
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012154#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012155/**
12156 @brief Process Get Roam Rssi Request function (called when Main FSM
12157 allows it)
12158
12159 @param pWDICtx: pointer to the WLAN DAL context
12160 pEventData: pointer to the event information structure
12161
12162 @see
12163 @return Result of the function call
12164*/
12165WDI_Status
12166WDI_ProcessGetRoamRssiReq
12167(
12168 WDI_ControlBlockType* pWDICtx,
12169 WDI_EventInfoType* pEventData
12170)
12171{
12172 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12173 WDI_GetStatsRspCb wdiGetStatsRspCb;
12174 wpt_uint8* pSendBuffer = NULL;
12175 wpt_uint16 usDataOffset = 0;
12176 wpt_uint16 usSendSize = 0;
12177 wpt_uint8 ucCurrentBSSSesIdx = 0;
12178 WDI_BSSSessionType* pBSSSes = NULL;
12179 wpt_macAddr macBSSID;
12180 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12181 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12183 /*-------------------------------------------------------------------------
12184 Sanity check
12185 -------------------------------------------------------------------------*/
12186 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12187 ( NULL == pEventData->pCBfnc ) )
12188 {
12189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12190 "%s: Invalid parameters", __func__);
12191 WDI_ASSERT(0);
12192 return WDI_STATUS_E_FAILURE;
12193 }
12194
12195 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12196 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12197
12198 /*-------------------------------------------------------------------------
12199 Check to see if we are in the middle of an association, if so queue, if
12200 not it means it is free to process request
12201 -------------------------------------------------------------------------*/
12202 wpalMutexAcquire(&pWDICtx->wptMutex);
12203
12204 /*------------------------------------------------------------------------
12205 Find the BSS for which the request is made
12206 ------------------------------------------------------------------------*/
12207 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12208 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12209 &macBSSID))
12210 {
12211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012212 "This station does not exist in the WDI Station Table %d",
12213 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012214 wpalMutexRelease(&pWDICtx->wptMutex);
12215 return WDI_STATUS_E_FAILURE;
12216 }
12217
12218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12219 if ( NULL == pBSSSes )
12220 {
12221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12222 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12223 __func__, MAC_ADDR_ARRAY(macBSSID));
12224
12225 wpalMutexRelease(&pWDICtx->wptMutex);
12226 return WDI_STATUS_E_NOT_ALLOWED;
12227 }
12228
12229 /*------------------------------------------------------------------------
12230 Check if this BSS is being currently processed or queued,
12231 if queued - queue the new request as well
12232 ------------------------------------------------------------------------*/
12233 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12234 {
12235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12236 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12237 __func__, MAC_ADDR_ARRAY(macBSSID));
12238
12239 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12240 wpalMutexRelease(&pWDICtx->wptMutex);
12241 return wdiStatus;
12242 }
12243
12244 wpalMutexRelease(&pWDICtx->wptMutex);
12245
12246 /*-----------------------------------------------------------------------
12247 Get message buffer
12248 -----------------------------------------------------------------------*/
12249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12250 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12251 &pSendBuffer, &usDataOffset, &usSendSize))||
12252 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12253 {
12254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012255 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012256 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12257 WDI_ASSERT(0);
12258 return WDI_STATUS_E_FAILURE;
12259 }
12260
12261 halRssiRoamReqMsg.roamRssiReqParams.staId =
12262 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12263 wpalMemoryCopy( pSendBuffer+usDataOffset,
12264 &halRssiRoamReqMsg.roamRssiReqParams,
12265 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12266
12267 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12268 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12269
12270 /*-------------------------------------------------------------------------
12271 Send Get STA Request to HAL
12272 -------------------------------------------------------------------------*/
12273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12274 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12275}/*WDI_ProcessGetRoamRssiReq*/
12276#endif
12277
Jeff Johnson295189b2012-06-20 16:38:30 -070012278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012281
12282 @param pWDICtx: pointer to the WLAN DAL context
12283 pEventData: pointer to the event information structure
12284
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 @see
12286 @return Result of the function call
12287*/
12288WDI_Status
12289WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012290(
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 WDI_ControlBlockType* pWDICtx,
12292 WDI_EventInfoType* pEventData
12293)
12294{
12295 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12296 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12297
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 wpt_uint16 usDataOffset = 0;
12300 wpt_uint16 usSendSize = 0;
12301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12302
12303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 -------------------------------------------------------------------------*/
12306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12307 ( NULL == pEventData->pCBfnc))
12308 {
12309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 }
12314
12315 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12316 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12317
12318 /*-----------------------------------------------------------------------
12319 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 -----------------------------------------------------------------------*/
12322
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12325 &pSendBuffer, &usDataOffset, &usSendSize))||
12326 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012329 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 wpalMemoryCopy( pSendBuffer+usDataOffset,
12336 &pwdiUpdateCfgParams->uConfigBufferLen,
12337 sizeof(wpt_uint32));
12338 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12339 pwdiUpdateCfgParams->pConfigBuffer,
12340 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012341
12342 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344
12345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 -------------------------------------------------------------------------*/
12348
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12350 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012351
12352}/*WDI_ProcessUpdateCfgReq*/
12353
12354
12355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012358
12359 @param pWDICtx: pointer to the WLAN DAL context
12360 pEventData: pointer to the event information structure
12361
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 @see
12363 @return Result of the function call
12364*/
12365WDI_Status
12366WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012367(
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 WDI_ControlBlockType* pWDICtx,
12369 WDI_EventInfoType* pEventData
12370)
12371{
12372 WDI_AddBAReqParamsType* pwdiAddBAParams;
12373 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012374 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 wpt_uint16 usDataOffset = 0;
12378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 wpt_macAddr macBSSID;
12381
12382 tAddBAReqMsg halAddBAReq;
12383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12384
12385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 -------------------------------------------------------------------------*/
12388 if (( NULL == pEventData ) ||
12389 ( NULL == pEventData->pEventData) ||
12390 ( NULL == pEventData->pCBfnc ))
12391 {
12392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 }
12397
12398 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12399 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12400
12401 /*-------------------------------------------------------------------------
12402 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012403 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012404 -------------------------------------------------------------------------*/
12405 wpalMutexAcquire(&pWDICtx->wptMutex);
12406
12407 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12411 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 &macBSSID))
12413 {
12414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012415 "This station does not exist in the WDI Station Table %d",
12416 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 }
12420
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12422 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12425 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12426 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012427
12428 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012429 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 }
12431
12432 /*------------------------------------------------------------------------
12433 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012435 ------------------------------------------------------------------------*/
12436 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12437 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12439 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12440 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012441
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 }
12446
12447
12448 wpalMutexRelease(&pWDICtx->wptMutex);
12449 /*-----------------------------------------------------------------------
12450 Get message buffer
12451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 sizeof(halAddBAReq.addBAParams),
12454 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12457 {
12458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012459 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 }
12464
Jeff Johnsone7245742012-09-05 17:12:55 -070012465 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012466 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12467 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12468#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12471#endif
12472
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 wpalMemoryCopy( pSendBuffer+usDataOffset,
12474 &halAddBAReq.addBAParams,
12475 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012476
12477 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012479
12480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12484 wdiAddBARspCb, pEventData->pUserData,
12485 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012486}/*WDI_ProcessAddBAReq*/
12487
12488
12489
12490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012491 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012493
12494 @param pWDICtx: pointer to the WLAN DAL context
12495 pEventData: pointer to the event information structure
12496
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 @see
12498 @return Result of the function call
12499*/
12500WDI_Status
12501WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012502(
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 WDI_ControlBlockType* pWDICtx,
12504 WDI_EventInfoType* pEventData
12505)
12506{
12507 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12508 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 wpt_uint16 usDataOffset = 0;
12513 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 wpt_uint16 index;
12516 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012517
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 tTriggerBAReqMsg halTriggerBAReq;
12519 tTriggerBaReqCandidate* halTriggerBACandidate;
12520 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12522
12523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 -------------------------------------------------------------------------*/
12526 if (( NULL == pEventData ) ||
12527 ( NULL == pEventData->pEventData ) ||
12528 ( NULL == pEventData->pCBfnc ))
12529 {
12530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 }
12535
12536 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12537 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12538 /*-------------------------------------------------------------------------
12539 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 -------------------------------------------------------------------------*/
12542 wpalMutexAcquire(&pWDICtx->wptMutex);
12543
12544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12548 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 &macBSSID))
12550 {
12551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012552 "This station does not exist in the WDI Station Table %d",
12553 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 }
12557
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12562 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12563 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012564
12565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 }
12568
12569 /*------------------------------------------------------------------------
12570 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 ------------------------------------------------------------------------*/
12573 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12576 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12577 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012578
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 }
12583
12584
12585 wpalMutexRelease(&pWDICtx->wptMutex);
12586 /*-----------------------------------------------------------------------
12587 Get message buffer
12588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12590 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12594 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 (usDataOffset + 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 {
12600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012601 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 }
12606
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12611
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 wpalMemoryCopy( pSendBuffer+usDataOffset,
12613 &halTriggerBAReq.triggerBAParams,
12614 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012615
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12618 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12619 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012620
12621 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 index++)
12623 {
12624 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12625 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12626 halTriggerBACandidate++;
12627 wdiTriggerBACandidate++;
12628 }
12629
12630 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632
12633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12637 wdiTriggerBARspCb, pEventData->pUserData,
12638 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012639}/*WDI_ProcessTriggerBAReq*/
12640
12641
12642
12643/**
12644 @brief Process Update Beacon Params Request function (called when Main FSM
12645 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012646
12647 @param pWDICtx: pointer to the WLAN DAL context
12648 pEventData: pointer to the event information structure
12649
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 @see
12651 @return Result of the function call
12652*/
12653WDI_Status
12654WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012655(
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 WDI_ControlBlockType* pWDICtx,
12657 WDI_EventInfoType* pEventData
12658)
12659{
12660 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12661 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 wpt_uint16 usDataOffset = 0;
12664 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12667
12668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 -------------------------------------------------------------------------*/
12671 if (( NULL == pEventData ) ||
12672 ( NULL == pEventData->pEventData) ||
12673 ( NULL == pEventData->pCBfnc))
12674 {
12675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 }
12680
12681 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12682 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12683 /*-----------------------------------------------------------------------
12684 Get message buffer
12685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 sizeof(halUpdateBeaconParams),
12688 &pSendBuffer, &usDataOffset, &usSendSize))||
12689 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12690 {
12691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012692 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 }
12697
12698 /*BSS Index of the BSS*/
12699 halUpdateBeaconParams.bssIdx =
12700 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12701 /*shortPreamble mode. HAL should update all the STA rates when it
12702 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12705 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12708 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12711
12712 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012717 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012721 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12725 halUpdateBeaconParams.fRIFSMode =
12726 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12729
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12731 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012732
12733 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012735
12736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12740 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012741}/*WDI_ProcessUpdateBeaconParamsReq*/
12742
12743
12744
12745/**
12746 @brief Process Send Beacon template Request function (called when Main FSM
12747 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012748
12749 @param pWDICtx: pointer to the WLAN DAL context
12750 pEventData: pointer to the event information structure
12751
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 @see
12753 @return Result of the function call
12754*/
12755WDI_Status
12756WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012757(
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 WDI_ControlBlockType* pWDICtx,
12759 WDI_EventInfoType* pEventData
12760)
12761{
12762 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12763 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 wpt_uint16 usDataOffset = 0;
12766 wpt_uint16 usSendSize = 0;
12767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12768
12769 tSendBeaconReqMsg halSendBeaconReq;
12770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 -------------------------------------------------------------------------*/
12773 if (( NULL == pEventData ) ||
12774 ( NULL == pEventData->pEventData ) ||
12775 ( NULL == pEventData->pCBfnc ))
12776 {
12777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 }
12782
12783 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12784 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12785 /*-----------------------------------------------------------------------
12786 Get message buffer
12787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 sizeof(halSendBeaconReq.sendBeaconParam),
12790 &pSendBuffer, &usDataOffset, &usSendSize))||
12791 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12792 {
12793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012794 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 }
12799
12800 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12801 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12802 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12805 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12806 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12807 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012810 /* usP2PIeOffset should be atleast greater than timIeOffset */
12811 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12812 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12813 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12814 {
12815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12816 "Invalid usP2PIeOffset %hu",
12817 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12818 WDI_ASSERT(0);
12819 return WDI_STATUS_E_FAILURE;
12820 }
12821
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 wpalMemoryCopy( pSendBuffer+usDataOffset,
12826 &halSendBeaconReq.sendBeaconParam,
12827 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012828
12829 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12836 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012837}/*WDI_ProcessSendBeaconParamsReq*/
12838
12839/**
12840 @brief Process Update Beacon Params Request function (called when Main FSM
12841 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012842
12843 @param pWDICtx: pointer to the WLAN DAL context
12844 pEventData: pointer to the event information structure
12845
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 @see
12847 @return Result of the function call
12848*/
12849WDI_Status
12850WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012851(
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 WDI_ControlBlockType* pWDICtx,
12853 WDI_EventInfoType* pEventData
12854)
12855{
12856 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12857 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpt_uint16 usDataOffset = 0;
12860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12863
12864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 -------------------------------------------------------------------------*/
12867 if (( NULL == pEventData ) ||
12868 ( NULL == pEventData->pEventData) ||
12869 ( NULL == pEventData->pCBfnc))
12870 {
12871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 }
12876
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12881 /*-----------------------------------------------------------------------
12882 Get message buffer
12883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 sizeof(halUpdateProbeRspTmplParams),
12886 &pSendBuffer, &usDataOffset, &usSendSize))||
12887 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12888 {
12889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012890 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 }
12895
12896 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 WDI_MAC_ADDR_LEN);
12899
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12902
12903 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12904 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012906
12907
12908 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12909 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12910 WDI_PROBE_REQ_BITMAP_IE_LEN);
12911
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 wpalMemoryCopy( pSendBuffer+usDataOffset,
12913 &halUpdateProbeRspTmplParams,
12914 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012915
12916 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012918
12919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12923 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12924 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012925}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12926
12927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012930
12931 @param pWDICtx: pointer to the WLAN DAL context
12932 pEventData: pointer to the event information structure
12933
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 @see
12935 @return Result of the function call
12936*/
12937WDI_Status
12938WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012939(
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 WDI_ControlBlockType* pWDICtx,
12941 WDI_EventInfoType* pEventData
12942)
12943{
12944
12945 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12946 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12947
12948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012953 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12956 {
12957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 }
12962
12963 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012965 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12966
12967 /*cache the wdi nv request message here if the the first fragment
12968 * To issue the request to HAL for the next fragment */
12969 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12972 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012973 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12974
12975 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12976 pWDICtx->pRspCBUserData = pEventData->pUserData;
12977 }
12978
12979 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12980}
12981
12982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012983 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012984 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012985
12986 @param pWDICtx: pointer to the WLAN DAL context
12987 pEventData: pointer to the event information structure
12988
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 @see
12990 @return Result of the function call
12991*/
12992WDI_Status WDI_ProcessSetMaxTxPowerReq
12993(
12994 WDI_ControlBlockType* pWDICtx,
12995 WDI_EventInfoType* pEventData
12996)
12997{
12998 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12999 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 wpt_uint16 usDataOffset = 0;
13002 wpt_uint16 usSendSize = 0;
13003 tSetMaxTxPwrReq halSetMaxTxPower;
13004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13005
13006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 -------------------------------------------------------------------------*/
13009 if (( NULL == pEventData ) ||
13010 ( NULL == pEventData->pEventData ) ||
13011 ( NULL == pEventData->pCBfnc ))
13012 {
13013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13022
13023 /*-----------------------------------------------------------------------
13024 Get message buffer
13025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013026if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13028 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013030)))
13031 {
13032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013033 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 }
13038
13039 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13040 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13041 WDI_MAC_ADDR_LEN);
13042
13043 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13044 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13045 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013048
13049 wpalMemoryCopy( pSendBuffer+usDataOffset,
13050 &halSetMaxTxPower.setMaxTxPwrParams,
13051 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013052
13053 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013055
13056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13060 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13061 WDI_SET_MAX_TX_POWER_RESP);
13062
Jeff Johnson295189b2012-06-20 16:38:30 -070013063}
13064
Arif Hussaina5ebce02013-08-09 15:09:58 -070013065/*
13066 @brief Process Set Max Tx Power Per Band Request function (called when Main
13067 FSM allows it)
13068
13069 @param pWDICtx: pointer to the WLAN DAL context
13070 pEventData: pointer to the event information structure
13071
13072 @see
13073 @return Result of the function call
13074*/
13075WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13076(
13077 WDI_ControlBlockType* pWDICtx,
13078 WDI_EventInfoType* pEventData
13079)
13080{
13081 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13082 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13083 wpt_uint8* pSendBuffer = NULL;
13084 wpt_uint16 usDataOffset = 0;
13085 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013086 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013087 WDI_Status rValue = WDI_STATUS_SUCCESS;
13088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13089
13090 /*-------------------------------------------------------------------------
13091 Sanity check
13092 -------------------------------------------------------------------------*/
13093 if (( NULL == pEventData ) ||
13094 ( NULL == pEventData->pEventData ) ||
13095 ( NULL == pEventData->pCBfnc ))
13096 {
13097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13098 "%s: Invalid parameters", __func__);
13099 WDI_ASSERT(0);
13100 return WDI_STATUS_E_FAILURE;
13101 }
13102 pwdiSetMaxTxPowerPerBandParams = \
13103 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13104
13105 wdiSetMaxTxPowerPerBandRspCb = \
13106 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13107
13108 /*-----------------------------------------------------------------------
13109 Get message buffer
13110 -----------------------------------------------------------------------*/
13111
13112 rValue = WDI_GetMessageBuffer(pWDICtx,
13113 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13114 sizeof(tSetMaxTxPwrPerBandParams),
13115 &pSendBuffer, &usDataOffset, &usSendSize);
13116
13117 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13118 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13119 {
13120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13121 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13122 pEventData, pwdiSetMaxTxPowerPerBandParams,
13123 wdiSetMaxTxPowerPerBandRspCb);
13124 WDI_ASSERT(0);
13125 return WDI_STATUS_E_FAILURE;
13126 }
13127
13128
Arif Hussainf8f080c2014-04-03 09:48:36 -070013129 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13130 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013131 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13132
Arif Hussainf8f080c2014-04-03 09:48:36 -070013133 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013134 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13135
13136 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13137 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13138
13139 /*-------------------------------------------------------------------------
13140 Send Set Max Tx Power Per Band Request to HAL
13141 -------------------------------------------------------------------------*/
13142 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13143 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13144 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13145}
13146
schang86c22c42013-03-13 18:41:24 -070013147/**
13148 @brief Process Set Tx Power Request function (called when Main
13149 FSM allows it)
13150
13151 @param pWDICtx: pointer to the WLAN DAL context
13152 pEventData: pointer to the event information structure
13153
13154 @see
13155 @return Result of the function call
13156*/
13157WDI_Status WDI_ProcessSetTxPowerReq
13158(
13159 WDI_ControlBlockType* pWDICtx,
13160 WDI_EventInfoType* pEventData
13161)
13162{
13163 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13164 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13165 wpt_uint8* pSendBuffer = NULL;
13166 wpt_uint16 usDataOffset = 0;
13167 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013168 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13170
13171 /*-------------------------------------------------------------------------
13172 Sanity check
13173 -------------------------------------------------------------------------*/
13174 if (( NULL == pEventData ) ||
13175 ( NULL == pEventData->pEventData ) ||
13176 ( NULL == pEventData->pCBfnc ))
13177 {
13178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13179 "%s: Invalid parameters", __func__);
13180 WDI_ASSERT(0);
13181 return WDI_STATUS_E_FAILURE;
13182 }
13183
13184 pwdiSetTxPowerParams =
13185 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13186 wdiSetTxPowerRspCb =
13187 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13188
13189 /*-----------------------------------------------------------------------
13190 Get message buffer
13191 -----------------------------------------------------------------------*/
13192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13193 sizeof(tSetTxPwrReqParams),
13194 &pSendBuffer, &usDataOffset, &usSendSize))||
13195 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13196 )))
13197 {
13198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013199 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013200 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13201 WDI_ASSERT(0);
13202 return WDI_STATUS_E_FAILURE;
13203 }
13204
Leo Chang9a43db92013-03-25 17:39:58 -070013205 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13206 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13207 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013208
13209 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13210 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13211
13212 /*-------------------------------------------------------------------------
13213 Send Set Tx Power Request to HAL
13214 -------------------------------------------------------------------------*/
13215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13216 wdiSetTxPowerRspCb, pEventData->pUserData,
13217 WDI_SET_TX_POWER_RESP);
13218}
Jeff Johnson295189b2012-06-20 16:38:30 -070013219
13220/**
13221 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13222 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013223
13224 @param pWDICtx: pointer to the WLAN DAL context
13225 pEventData: pointer to the event information structure
13226
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 @see
13228 @return Result of the function call
13229*/
13230WDI_Status
13231WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013232(
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 WDI_ControlBlockType* pWDICtx,
13234 WDI_EventInfoType* pEventData
13235)
13236{
13237 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13238 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 wpt_uint16 usDataOffset = 0;
13241 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13244
13245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 -------------------------------------------------------------------------*/
13248 if (( NULL == pEventData ) ||
13249 ( NULL == pEventData->pEventData) ||
13250 ( NULL == pEventData->pCBfnc))
13251 {
13252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 }
13257
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13262 /*-----------------------------------------------------------------------
13263 Get message buffer
13264 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13266 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 sizeof(halSetP2PGONOAParams),
13268 &pSendBuffer, &usDataOffset, &usSendSize))||
13269 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13270 {
13271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013272 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 }
13277
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013280 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013281 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13282 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13291
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 wpalMemoryCopy( pSendBuffer+usDataOffset,
13293 &halSetP2PGONOAParams,
13294 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013295
13296 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013298
13299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13303 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13304 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013305}/*WDI_ProcessP2PGONOAReq*/
13306
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013307#ifdef FEATURE_WLAN_TDLS
13308
13309/**
13310 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13311 allows it)
13312
13313 @param pWDICtx: pointer to the WLAN DAL context
13314 pEventData: pointer to the event information structure
13315
13316 @see
13317 @return Result of the function call
13318*/
13319WDI_Status
13320WDI_ProcessTdlsLinkEstablishReq
13321(
13322 WDI_ControlBlockType* pWDICtx,
13323 WDI_EventInfoType* pEventData
13324)
13325{
13326 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13327 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13328 wpt_uint8* pSendBuffer = NULL;
13329 wpt_uint16 usDataOffset = 0;
13330 wpt_uint16 usSendSize = 0;
13331
13332 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13334
13335 /*-------------------------------------------------------------------------
13336 Sanity check
13337 -------------------------------------------------------------------------*/
13338 if (( NULL == pEventData ) ||
13339 ( NULL == pEventData->pEventData) ||
13340 ( NULL == pEventData->pCBfnc))
13341 {
13342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13343 "%s: Invalid parameters", __func__);
13344 WDI_ASSERT(0);
13345 return WDI_STATUS_E_FAILURE;
13346 }
13347 pwdiTDLSLinkEstablishReqParams =
13348 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13349 wdiTDLSLinkEstablishReqRspCb =
13350 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13351
13352
13353 /*-----------------------------------------------------------------------
13354 Get message buffer
13355 -----------------------------------------------------------------------*/
13356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13357 WDI_TDLS_LINK_ESTABLISH_REQ,
13358 sizeof(halSetTDLSLinkEstablishParams),
13359 &pSendBuffer, &usDataOffset, &usSendSize))||
13360 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13361 {
13362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013363 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013364 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13365 WDI_ASSERT(0);
13366 return WDI_STATUS_E_FAILURE;
13367 }
13368
13369 halSetTDLSLinkEstablishParams.staIdx =
13370 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13371 halSetTDLSLinkEstablishParams.bIsResponder =
13372 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13373 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13374 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13375 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13376 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13377 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13378 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13379 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13380 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13381 halSetTDLSLinkEstablishParams.aAck = 0;
13382 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13383 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13384 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013385 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13386 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13387
13388 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13389 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13390 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13391 halSetTDLSLinkEstablishParams.validChannelsLen =
13392 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13393
13394 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13395 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13396 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13397 halSetTDLSLinkEstablishParams.validOperClassesLen =
13398 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013399
13400 wpalMemoryCopy( pSendBuffer+usDataOffset,
13401 &halSetTDLSLinkEstablishParams,
13402 sizeof(halSetTDLSLinkEstablishParams));
13403
13404 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13405 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13406
13407 /*-------------------------------------------------------------------------
13408 Send Update Probe Resp Template Request to HAL
13409 -------------------------------------------------------------------------*/
13410 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13411 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13412 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13413 return 0;
13414}/*WDI_ProcessTdlsLinkEstablishReq*/
13415
13416
13417#endif
13418
Jeff Johnson295189b2012-06-20 16:38:30 -070013419
13420
13421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 @param None
13425
13426 @see
13427 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013428*/
13429void
13430WDI_SetPowerStateCb
13431(
13432 wpt_status status,
13433 unsigned int dxePhyAddr,
13434 void *pContext
13435)
13436{
13437 wpt_status wptStatus;
13438 WDI_ControlBlockType *pCB = NULL;
13439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 /*
13441 * Trigger the event to bring the Enter BMPS req function to come
13442 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013443*/
13444 if( NULL != pContext )
13445 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 }
13448 else
13449 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013450 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 pCB = &gWDICb;
13452 }
Mihir Shetea4306052014-03-25 00:02:54 +053013453
13454 if(eWLAN_PAL_STATUS_SUCCESS == status )
13455 {
13456 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13457 }
13458 else
13459 {
13460 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13461 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 pCB->dxePhyAddr = dxePhyAddr;
13463 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13464 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13465 {
13466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13467 "Failed to set an event");
13468
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 }
13471 return;
13472}
13473
13474
13475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013478
13479 @param pWDICtx: pointer to the WLAN DAL context
13480 pEventData: pointer to the event information structure
13481
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 @see
13483 @return Result of the function call
13484*/
13485WDI_Status
13486WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013487(
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 WDI_ControlBlockType* pWDICtx,
13489 WDI_EventInfoType* pEventData
13490)
13491{
Jeff Johnson43971f52012-07-17 12:26:56 -070013492 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 wpt_uint16 usDataOffset = 0;
13496 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013497 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13499
13500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013503 if ((NULL == pEventData ) ||
13504 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13505 (NULL == (pwdiEnterImpsReqParams =
13506 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 {
13508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013509 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013511 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 }
13513
13514 /*-----------------------------------------------------------------------
13515 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 0,
13520 &pSendBuffer, &usDataOffset, &usSendSize))||
13521 ( usSendSize < (usDataOffset )))
13522 {
13523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013524 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 pEventData, wdiEnterImpsRspCb);
13526 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013527 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 }
13529
13530 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013531 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13532 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 {
13534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13535 "WDI Init failed to reset an event");
13536
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013538 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
13541 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013542 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13543 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013545 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013546 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013547 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013548 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013549
13550 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013553 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13554 WDI_SET_POWER_STATE_TIMEOUT);
13555 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 {
13557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13558 "WDI Init failed to wait on an event");
13559
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013561 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 }
13563
Mihir Shetea4306052014-03-25 00:02:54 +053013564 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13565 {
13566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13567 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13568
13569 goto fail;
13570 }
13571
13572 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13573 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13578 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013579
13580fail:
13581 // Release the message buffer so we don't leak
13582 wpalMemoryFree(pSendBuffer);
13583
13584failRequest:
13585 //WDA should have failure check to avoid the memory leak
13586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013587}/*WDI_ProcessEnterImpsReq*/
13588
13589/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013590 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013592
13593 @param pWDICtx: pointer to the WLAN DAL context
13594 pEventData: pointer to the event information structure
13595
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 @see
13597 @return Result of the function call
13598*/
13599WDI_Status
13600WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013601(
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 WDI_ControlBlockType* pWDICtx,
13603 WDI_EventInfoType* pEventData
13604)
13605{
13606 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 wpt_uint16 usDataOffset = 0;
13609 wpt_uint16 usSendSize = 0;
13610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13611
13612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 -------------------------------------------------------------------------*/
13615 if (( NULL == pEventData ) ||
13616 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13617 {
13618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 }
13623
13624 /*-----------------------------------------------------------------------
13625 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 0,
13630 &pSendBuffer, &usDataOffset, &usSendSize))||
13631 ( usSendSize < (usDataOffset )))
13632 {
13633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013634 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 pEventData, wdiExitImpsRspCb);
13636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 }
13639
13640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13644 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013645}/*WDI_ProcessExitImpsReq*/
13646
13647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013650
13651 @param pWDICtx: pointer to the WLAN DAL context
13652 pEventData: pointer to the event information structure
13653
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 @see
13655 @return Result of the function call
13656*/
13657WDI_Status
13658WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013659(
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 WDI_ControlBlockType* pWDICtx,
13661 WDI_EventInfoType* pEventData
13662)
13663{
13664 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13665 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 wpt_uint16 usDataOffset = 0;
13668 wpt_uint16 usSendSize = 0;
13669 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013670 wpt_status wptStatus;
13671
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13673
13674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013676 -------------------------------------------------------------------------*/
13677 if (( NULL == pEventData ) ||
13678 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13679 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13680 {
13681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013684 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 }
13686
13687 /*-----------------------------------------------------------------------
13688 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 sizeof(enterBmpsReq),
13693 &pSendBuffer, &usDataOffset, &usSendSize))||
13694 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13695 {
13696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013697 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013698 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13699 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013700 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 }
13702
13703 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013704 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13705 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 {
13707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13708 "WDI Init failed to reset an event");
13709
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013711 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 }
13713
13714 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013715 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13716 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13717 {
13718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013719 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013720 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013721 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013722 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013723
13724/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013727 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13728 WDI_SET_POWER_STATE_TIMEOUT);
13729 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 {
13731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13732 "WDI Init failed to wait on an event");
13733
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013735 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 }
13737
13738 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13739
13740 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13741 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13742 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13743 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13744
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013745 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13747 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13748 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13749
13750 wpalMemoryCopy( pSendBuffer+usDataOffset,
13751 &enterBmpsReq,
13752 sizeof(enterBmpsReq));
13753
13754 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756
13757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13761 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013762
13763fail:
13764 // Release the message buffer so we don't leak
13765 wpalMemoryFree(pSendBuffer);
13766
13767failRequest:
13768 //WDA should have failure check to avoid the memory leak
13769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770}/*WDI_ProcessEnterBmpsReq*/
13771
13772/**
13773 @brief Process Exit BMPS Request function (called when Main FSM
13774 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013775
13776 @param pWDICtx: pointer to the WLAN DAL context
13777 pEventData: pointer to the event information structure
13778
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 @see
13780 @return Result of the function call
13781*/
13782WDI_Status
13783WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013784(
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 WDI_ControlBlockType* pWDICtx,
13786 WDI_EventInfoType* pEventData
13787)
13788{
13789 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13790 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 wpt_uint16 usDataOffset = 0;
13793 wpt_uint16 usSendSize = 0;
13794 tHalExitBmpsReqParams exitBmpsReq;
13795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13796
13797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 -------------------------------------------------------------------------*/
13800 if (( NULL == pEventData ) ||
13801 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13802 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13803 {
13804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013808 }
13809
13810 /*-----------------------------------------------------------------------
13811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013815 sizeof(exitBmpsReq),
13816 &pSendBuffer, &usDataOffset, &usSendSize))||
13817 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13818 {
13819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013820 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 }
13825 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13826
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13828
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 wpalMemoryCopy( pSendBuffer+usDataOffset,
13830 &exitBmpsReq,
13831 sizeof(exitBmpsReq));
13832
13833 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013834 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013835
13836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13840 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013841}/*WDI_ProcessExitBmpsReq*/
13842
13843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013846
13847 @param pWDICtx: pointer to the WLAN DAL context
13848 pEventData: pointer to the event information structure
13849
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 @see
13851 @return Result of the function call
13852*/
13853WDI_Status
13854WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013855(
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 WDI_ControlBlockType* pWDICtx,
13857 WDI_EventInfoType* pEventData
13858)
13859{
13860 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13861 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 wpt_uint16 usDataOffset = 0;
13864 wpt_uint16 usSendSize = 0;
13865 tUapsdReqParams enterUapsdReq;
13866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13867
13868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 -------------------------------------------------------------------------*/
13871 if (( NULL == pEventData ) ||
13872 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13873 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13874 {
13875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 }
13880
13881 /*-----------------------------------------------------------------------
13882 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 sizeof(enterUapsdReq),
13887 &pSendBuffer, &usDataOffset, &usSendSize))||
13888 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13889 {
13890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013891 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 }
13896
13897 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13898 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13899 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13900 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13901 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13902 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13903 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13904 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013905 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 wpalMemoryCopy( pSendBuffer+usDataOffset,
13908 &enterUapsdReq,
13909 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013910
13911 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013913
13914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13918 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013919}/*WDI_ProcessEnterUapsdReq*/
13920
13921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013924
13925 @param pWDICtx: pointer to the WLAN DAL context
13926 pEventData: pointer to the event information structure
13927
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 @see
13929 @return Result of the function call
13930*/
13931WDI_Status
13932WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013933(
Jeff Johnson295189b2012-06-20 16:38:30 -070013934 WDI_ControlBlockType* pWDICtx,
13935 WDI_EventInfoType* pEventData
13936)
13937{
13938 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 wpt_uint16 usDataOffset = 0;
13941 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013942 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13943 wpt_uint8 bssIdx = 0;
13944
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13946
13947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013949 -------------------------------------------------------------------------*/
13950 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013951 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13953 {
13954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 }
13959
13960 /*-----------------------------------------------------------------------
13961 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013965 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013967 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 {
13969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013970 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 pEventData, wdiExitUapsdRspCb);
13972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 }
13975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013976 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13977
13978 wpalMemoryCopy( pSendBuffer+usDataOffset,
13979 &bssIdx,
13980 sizeof(wpt_uint8));
13981
13982 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13983 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13984
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13989 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013990}/*WDI_ProcessExitUapsdReq*/
13991
13992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013995
13996 @param pWDICtx: pointer to the WLAN DAL context
13997 pEventData: pointer to the event information structure
13998
Jeff Johnson295189b2012-06-20 16:38:30 -070013999 @see
14000 @return Result of the function call
14001*/
14002WDI_Status
14003WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014004(
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 WDI_ControlBlockType* pWDICtx,
14006 WDI_EventInfoType* pEventData
14007)
14008{
14009 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14010 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 wpt_uint16 usDataOffset = 0;
14013 wpt_uint16 usSendSize = 0;
14014 tUapsdInfo uapsdAcParamsReq;
14015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14016
14017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 -------------------------------------------------------------------------*/
14020 if (( NULL == pEventData ) ||
14021 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14022 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14023 {
14024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 }
14029
14030 /*-----------------------------------------------------------------------
14031 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 sizeof(uapsdAcParamsReq),
14036 &pSendBuffer, &usDataOffset, &usSendSize))||
14037 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14038 {
14039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014040 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14042 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014044 }
14045
14046 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14047 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14048 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14049 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14050 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14051 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14052
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 wpalMemoryCopy( pSendBuffer+usDataOffset,
14054 &uapsdAcParamsReq,
14055 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014056
14057 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014059
14060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014061 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14064 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014065}/*WDI_ProcessSetUapsdAcParamsReq*/
14066
14067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014070
14071 @param pWDICtx: pointer to the WLAN DAL context
14072 pEventData: pointer to the event information structure
14073
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 @see
14075 @return Result of the function call
14076*/
14077WDI_Status
14078WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014079(
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 WDI_ControlBlockType* pWDICtx,
14081 WDI_EventInfoType* pEventData
14082)
14083{
14084 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14085 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 wpt_uint16 usDataOffset = 0;
14088 wpt_uint16 usSendSize = 0;
14089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14090
14091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 -------------------------------------------------------------------------*/
14094 if (( NULL == pEventData ) ||
14095 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14096 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14097 {
14098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103
14104 /*-----------------------------------------------------------------------
14105 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14110 &pSendBuffer, &usDataOffset, &usSendSize))||
14111 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14112 {
14113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014114 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14116 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 }
14119
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 wpalMemoryCopy( pSendBuffer+usDataOffset,
14121 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14122 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014123
14124 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014126
14127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14131 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014132}/*WDI_ProcessUpdateUapsdParamsReq*/
14133
14134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014137
14138 @param pWDICtx: pointer to the WLAN DAL context
14139 pEventData: pointer to the event information structure
14140
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 @see
14142 @return Result of the function call
14143*/
14144WDI_Status
14145WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014146(
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 WDI_ControlBlockType* pWDICtx,
14148 WDI_EventInfoType* pEventData
14149)
14150{
14151 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14152 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 wpt_uint16 usDataOffset = 0;
14155 wpt_uint16 usSendSize = 0;
14156 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14157
14158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14159
14160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 -------------------------------------------------------------------------*/
14163 if (( NULL == pEventData ) ||
14164 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14165 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14166 {
14167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 }
14172
14173 /*-----------------------------------------------------------------------
14174 Get message buffer
14175 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 sizeof(halRxpFilterParams),
14178 &pSendBuffer, &usDataOffset, &usSendSize))||
14179 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14180 {
14181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014182 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014186 }
14187
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014189 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014191 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14192
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 wpalMemoryCopy( pSendBuffer+usDataOffset,
14194 &halRxpFilterParams,
14195 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014196
14197 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199
14200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14204 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014205}/*WDI_ProcessConfigureRxpFilterReq*/
14206
14207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014210
14211 @param pWDICtx: pointer to the WLAN DAL context
14212 pEventData: pointer to the event information structure
14213
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 @see
14215 @return Result of the function call
14216*/
14217WDI_Status
14218WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014219(
Jeff Johnson295189b2012-06-20 16:38:30 -070014220 WDI_ControlBlockType* pWDICtx,
14221 WDI_EventInfoType* pEventData
14222)
14223{
14224 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14225 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 wpt_uint16 usDataOffset = 0;
14228 wpt_uint16 usSendSize = 0;
14229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14230
14231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 -------------------------------------------------------------------------*/
14234 if (( NULL == pEventData ) ||
14235 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14236 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14237 {
14238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 }
14243
14244 /*-----------------------------------------------------------------------
14245 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014246 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014247 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014248 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14250 &pSendBuffer, &usDataOffset, &usSendSize))||
14251 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14252 {
14253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014254 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 }
14259
Jeff Johnsone7245742012-09-05 17:12:55 -070014260 wpalMemoryCopy( pSendBuffer+usDataOffset,
14261 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14262 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14263 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14264 &pwdiBeaconFilterParams->aFilters[0],
14265 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014266
14267 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014268 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014269
14270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14274 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014275}/*WDI_ProcessSetBeaconFilterReq*/
14276
14277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014280
14281 @param pWDICtx: pointer to the WLAN DAL context
14282 pEventData: pointer to the event information structure
14283
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 @see
14285 @return Result of the function call
14286*/
14287WDI_Status
14288WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014289(
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 WDI_ControlBlockType* pWDICtx,
14291 WDI_EventInfoType* pEventData
14292)
14293{
14294 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14295 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 wpt_uint16 usDataOffset = 0;
14298 wpt_uint16 usSendSize = 0;
14299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14300
14301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 -------------------------------------------------------------------------*/
14304 if (( NULL == pEventData ) ||
14305 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14306 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14307 {
14308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313
14314 /*-----------------------------------------------------------------------
14315 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14320 &pSendBuffer, &usDataOffset, &usSendSize))||
14321 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14322 {
14323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014324 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 }
14329
Jeff Johnsone7245742012-09-05 17:12:55 -070014330 wpalMemoryCopy( pSendBuffer+usDataOffset,
14331 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14332 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014333
14334 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014336
14337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014338 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14341 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014342}
14343
14344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014345 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014347
14348 @param pWDICtx: pointer to the WLAN DAL context
14349 pEventData: pointer to the event information structure
14350
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 @see
14352 @return Result of the function call
14353*/
14354WDI_Status
14355WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014356(
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 WDI_ControlBlockType* pWDICtx,
14358 WDI_EventInfoType* pEventData
14359)
14360{
14361 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14362 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 wpt_uint16 usDataOffset = 0;
14365 wpt_uint16 usSendSize = 0;
14366 tHalRSSIThresholds rssiThresholdsReq;
14367 WDI_Status ret_status = 0;
14368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14369
14370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 -------------------------------------------------------------------------*/
14373 if (( NULL == pEventData ) ||
14374 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14375 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14376 {
14377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 }
14382
14383 /*-----------------------------------------------------------------------
14384 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014385 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 sizeof(rssiThresholdsReq),
14389 &pSendBuffer, &usDataOffset, &usSendSize))||
14390 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14391 {
14392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014393 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 }
14398
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014418 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14419
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 wpalMemoryCopy( pSendBuffer+usDataOffset,
14421 &rssiThresholdsReq,
14422 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014423
14424 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014426
14427 /*-------------------------------------------------------------------------
14428 Send Set threshold req to HAL
14429 -------------------------------------------------------------------------*/
14430 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14431 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14432 {
14433 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14434 // req. Then as a result of processing the threshold cross ind, we trigger
14435 // a Set threshold req, then we need to indicate to WDI that it needs to
14436 // go to busy state as a result of the indication as we sent a req in the
14437 // same WDI context.
14438 // Hence expected state transition is to busy.
14439 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14440 }
14441
14442 return ret_status;
14443}
14444
14445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014448
14449 @param pWDICtx: pointer to the WLAN DAL context
14450 pEventData: pointer to the event information structure
14451
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 @see
14453 @return Result of the function call
14454*/
14455WDI_Status
14456WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014457(
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 WDI_ControlBlockType* pWDICtx,
14459 WDI_EventInfoType* pEventData
14460)
14461{
14462 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14463 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 wpt_uint16 usDataOffset = 0;
14466 wpt_uint16 usSendSize = 0;
14467 tHalHostOffloadReq hostOffloadParams;
14468 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014469 wpt_uint8 ucCurrentBSSSesIdx = 0;
14470 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014471
14472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14473
14474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 -------------------------------------------------------------------------*/
14477 if (( NULL == pEventData ) ||
14478 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14479 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14480 {
14481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014484 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 }
14486
14487 /*-----------------------------------------------------------------------
14488 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14493 &pSendBuffer, &usDataOffset, &usSendSize))||
14494 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14495 {
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014497 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14499 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014500 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 }
14502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014503 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14504 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14505 &pBSSSes);
14506 if ( NULL == pBSSSes )
14507 {
14508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014509 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14510 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014511 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014512 }
14513
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14515 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014516
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14518 {
14519 // ARP Offload
14520 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14521 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14522 4);
14523 }
14524 else
14525 {
14526 // NS Offload
14527 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14528 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14529 16);
14530
14531#ifdef WLAN_NS_OFFLOAD
14532 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14533 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14534 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14535 16);
14536 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14537 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14538 16);
14539 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14540 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14541 16);
14542 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14543 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14544 16);
14545 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14546 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14547 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014548 nsOffloadParams.srcIPv6AddrValid =
14549 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14550
14551 nsOffloadParams.targetIPv6Addr1Valid =
14552 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14553
14554 nsOffloadParams.targetIPv6Addr2Valid =
14555 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14556
14557 nsOffloadParams.slotIndex =
14558 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014559
Jeff Johnson295189b2012-06-20 16:38:30 -070014560#endif // WLAN_NS_OFFLOAD
14561 }
14562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014563 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14564
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 // copy hostOffloadParams into pSendBuffer
14566 wpalMemoryCopy( pSendBuffer+usDataOffset,
14567 &hostOffloadParams,
14568 sizeof(hostOffloadParams));
14569
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014570 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014572 // copy nsOffloadParams into pSendBuffer
14573 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 &nsOffloadParams,
14575 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014576 }
14577 else
14578 {
14579#ifdef WLAN_NS_OFFLOAD
14580 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14581 {
14582 // copy nsOffloadParams into pSendBuffer
14583 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14584 &nsOffloadParams,
14585 sizeof(nsOffloadParams));
14586 }
14587#endif
14588 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014589
14590 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592
14593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14597 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014598
14599fail:
14600 // Release the message buffer so we don't leak
14601 wpalMemoryFree(pSendBuffer);
14602
14603failRequest:
14604 //WDA should have failure check to avoid the memory leak
14605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606}/*WDI_ProcessHostOffloadReq*/
14607
14608/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014611
14612 @param pWDICtx: pointer to the WLAN DAL context
14613 pEventData: pointer to the event information structure
14614
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 @see
14616 @return Result of the function call
14617*/
14618WDI_Status
14619WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014620(
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 WDI_ControlBlockType* pWDICtx,
14622 WDI_EventInfoType* pEventData
14623)
14624{
14625 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14626 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014627 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 wpt_uint16 usDataOffset = 0;
14629 wpt_uint16 usSendSize = 0;
14630 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014631 wpt_uint8 ucCurrentBSSSesIdx = 0;
14632 WDI_BSSSessionType* pBSSSes = NULL;
14633
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14635
14636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 -------------------------------------------------------------------------*/
14639 if (( NULL == pEventData ) ||
14640 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14641 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14642 {
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14644 "Invalid parameters in Keep Alive req");
14645 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014646 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 }
14648
14649 /*-----------------------------------------------------------------------
14650 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 sizeof(keepAliveReq),
14655 &pSendBuffer, &usDataOffset, &usSendSize))||
14656 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14657 {
14658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014659 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14661 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014662 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 }
14664
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014665 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14666 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14667 &pBSSSes);
14668 if ( NULL == pBSSSes )
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014671 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014672 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014673 }
14674
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14676 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14677
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014678 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014679
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14681 {
14682 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14683 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14684 HAL_IPV4_ADDR_LEN);
14685 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14686 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 wpalMemoryCopy(keepAliveReq.destMacAddr,
14689 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14690 HAL_MAC_ADDR_LEN);
14691 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014692
14693 wpalMemoryCopy( pSendBuffer+usDataOffset,
14694 &keepAliveReq,
14695 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014696
14697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014698 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014699
14700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014701 "Process keep alive req time period %d",
14702 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014703
14704 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014706
14707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14708 "Sending keep alive req to HAL");
14709
14710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14714 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014715
14716fail:
14717 // Release the message buffer so we don't leak
14718 wpalMemoryFree(pSendBuffer);
14719
14720failRequest:
14721 //WDA should have failure check to avoid the memory leak
14722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014723}/*WDI_ProcessKeepAliveReq*/
14724
14725
14726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014729
14730 @param pWDICtx: pointer to the WLAN DAL context
14731 pEventData: pointer to the event information structure
14732
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 @see
14734 @return Result of the function call
14735*/
14736WDI_Status
14737WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014738(
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 WDI_ControlBlockType* pWDICtx,
14740 WDI_EventInfoType* pEventData
14741)
14742{
14743 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14744 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 wpt_uint16 usDataOffset = 0;
14747 wpt_uint16 usSendSize = 0;
14748 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014749 wpt_uint8 ucCurrentBSSSesIdx = 0;
14750 WDI_BSSSessionType* pBSSSes = NULL;
14751
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14753
14754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 -------------------------------------------------------------------------*/
14757 if (( NULL == pEventData ) ||
14758 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14759 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14760 {
14761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014764 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 }
14766
14767 /*-----------------------------------------------------------------------
14768 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 sizeof(wowlAddBcPtrnReq),
14773 &pSendBuffer, &usDataOffset, &usSendSize))||
14774 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14775 {
14776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014777 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14779 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014780 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 }
14782
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014783 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14784 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14785 &pBSSSes);
14786 if ( NULL == pBSSSes )
14787 {
14788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014789 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014790 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014791 }
14792
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14801
14802 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14803 {
14804 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14805 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14806 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14807 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14808 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14809 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14810 }
14811 else
14812 {
14813 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14814 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14815 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14816 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14817 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14818 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14819
14820 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14821 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14822 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14823 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14824 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14825 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14826 }
14827
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014828 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14829
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 wpalMemoryCopy( pSendBuffer+usDataOffset,
14831 &wowlAddBcPtrnReq,
14832 sizeof(wowlAddBcPtrnReq));
14833
14834 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014836
14837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014838 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14841 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014842fail:
14843 // Release the message buffer so we don't leak
14844 wpalMemoryFree(pSendBuffer);
14845
14846failRequest:
14847 //WDA should have failure check to avoid the memory leak
14848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014849}/*WDI_ProcessWowlAddBcPtrnReq*/
14850
14851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014854
14855 @param pWDICtx: pointer to the WLAN DAL context
14856 pEventData: pointer to the event information structure
14857
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 @see
14859 @return Result of the function call
14860*/
14861WDI_Status
14862WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014863(
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 WDI_ControlBlockType* pWDICtx,
14865 WDI_EventInfoType* pEventData
14866)
14867{
14868 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14869 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014871 wpt_uint16 usDataOffset = 0;
14872 wpt_uint16 usSendSize = 0;
14873 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014874 wpt_uint8 ucCurrentBSSSesIdx = 0;
14875 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14877
14878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 -------------------------------------------------------------------------*/
14881 if (( NULL == pEventData ) ||
14882 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14883 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14884 {
14885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014888 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 }
14890
14891 /*-----------------------------------------------------------------------
14892 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 sizeof(wowlDelBcPtrnReq),
14897 &pSendBuffer, &usDataOffset, &usSendSize))||
14898 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14899 {
14900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014901 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14903 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014904 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 }
14906
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014907 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14908 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14909 &pBSSSes);
14910 if ( NULL == pBSSSes )
14911 {
14912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014913 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014914 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014915 }
14916
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014919
14920 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14921
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 wpalMemoryCopy( pSendBuffer+usDataOffset,
14923 &wowlDelBcPtrnReq,
14924 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014925
14926 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014927 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014928
14929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14933 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014934
14935fail:
14936 // Release the message buffer so we don't leak
14937 wpalMemoryFree(pSendBuffer);
14938
14939failRequest:
14940 //WDA should have failure check to avoid the memory leak
14941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014942}/*WDI_ProcessWowlDelBcPtrnReq*/
14943
14944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014947
14948 @param pWDICtx: pointer to the WLAN DAL context
14949 pEventData: pointer to the event information structure
14950
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 @see
14952 @return Result of the function call
14953*/
14954WDI_Status
14955WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014956(
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 WDI_ControlBlockType* pWDICtx,
14958 WDI_EventInfoType* pEventData
14959)
14960{
14961 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14962 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 wpt_uint16 usDataOffset = 0;
14965 wpt_uint16 usSendSize = 0;
14966 tHalWowlEnterParams wowlEnterReq;
14967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14968
14969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 -------------------------------------------------------------------------*/
14972 if (( NULL == pEventData ) ||
14973 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14974 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14975 {
14976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 }
14981
14982 /*-----------------------------------------------------------------------
14983 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 sizeof(wowlEnterReq),
14988 &pSendBuffer, &usDataOffset, &usSendSize))||
14989 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14990 {
14991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014992 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 }
14997
Kumar Anandaca924e2013-07-22 14:35:34 -070014998 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14999
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015002 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015003 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15016
15017#ifdef WLAN_WAKEUP_EVENTS
15018 wowlEnterReq.ucWoWEAPIDRequestEnable =
15019 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15020
15021 wowlEnterReq.ucWoWEAPOL4WayEnable =
15022 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15023
15024 wowlEnterReq.ucWowNetScanOffloadMatch =
15025 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15026
15027 wowlEnterReq.ucWowGTKRekeyError =
15028 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15029
15030 wowlEnterReq.ucWoWBSSConnLoss =
15031 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15032#endif // WLAN_WAKEUP_EVENTS
15033
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015034 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15035
Jeff Johnson295189b2012-06-20 16:38:30 -070015036 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15037 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15038 sizeof(tSirMacAddr));
15039
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 wpalMemoryCopy( pSendBuffer+usDataOffset,
15041 &wowlEnterReq,
15042 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015043
15044 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015046
15047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15051 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052}/*WDI_ProcessWowlEnterReq*/
15053
15054/**
15055 @brief Process Wowl exit Request function (called when Main FSM
15056 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015057
15058 @param pWDICtx: pointer to the WLAN DAL context
15059 pEventData: pointer to the event information structure
15060
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 @see
15062 @return Result of the function call
15063*/
15064WDI_Status
15065WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015066(
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 WDI_ControlBlockType* pWDICtx,
15068 WDI_EventInfoType* pEventData
15069)
15070{
15071 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015072 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 wpt_uint16 usDataOffset = 0;
15075 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015076 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15078
15079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -------------------------------------------------------------------------*/
15082 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015083 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15085 {
15086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 }
15091
15092 /*-----------------------------------------------------------------------
15093 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015097 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015099 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 {
15101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015102 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 pEventData, wdiWowlExitCb);
15104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 }
15107
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015108 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15109
15110 wpalMemoryCopy( pSendBuffer+usDataOffset,
15111 &wowlExitparams,
15112 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15117 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015118}/*WDI_ProcessWowlExitReq*/
15119
15120/**
15121 @brief Process Configure Apps Cpu Wakeup State Request function
15122 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015123
15124 @param pWDICtx: pointer to the WLAN DAL context
15125 pEventData: pointer to the event information structure
15126
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 @see
15128 @return Result of the function call
15129*/
15130WDI_Status
15131WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015132(
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 WDI_ControlBlockType* pWDICtx,
15134 WDI_EventInfoType* pEventData
15135)
15136{
15137 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15138 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 wpt_uint16 usDataOffset = 0;
15141 wpt_uint16 usSendSize = 0;
15142 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15144
15145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 -------------------------------------------------------------------------*/
15148 if (( NULL == pEventData ) ||
15149 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15150 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15151 {
15152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 }
15157
15158 /*-----------------------------------------------------------------------
15159 Get message buffer
15160 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 sizeof(halCfgAppsCpuWakeupStateReqParams),
15163 &pSendBuffer, &usDataOffset, &usSendSize))||
15164 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15165 {
15166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015167 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 }
15172
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15175
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 wpalMemoryCopy( pSendBuffer+usDataOffset,
15177 &halCfgAppsCpuWakeupStateReqParams,
15178 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015179
15180 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182
15183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15187 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15188 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015189}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15190
15191#ifdef WLAN_FEATURE_VOWIFI_11R
15192/**
15193 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15194 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015195
15196 @param pWDICtx: pointer to the WLAN DAL context
15197 pEventData: pointer to the event information structure
15198
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 @see
15200 @return Result of the function call
15201*/
15202WDI_Status
15203WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015204(
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 WDI_ControlBlockType* pWDICtx,
15206 WDI_EventInfoType* pEventData
15207)
15208{
15209 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15210 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 wpt_uint16 usDataOffset = 0;
15215 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 wpt_macAddr macBSSID;
15218 tAggrAddTsReq halAggrAddTsReq;
15219 int i;
15220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15221
15222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 -------------------------------------------------------------------------*/
15225 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15226 ( NULL == pEventData->pCBfnc ))
15227 {
15228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 }
15233 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15234 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15235 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15236 /*-------------------------------------------------------------------------
15237 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 -------------------------------------------------------------------------*/
15240 wpalMutexAcquire(&pWDICtx->wptMutex);
15241
15242 /*------------------------------------------------------------------------
15243 Find the BSS for which the request is made and identify WDI session
15244 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15246 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 &macBSSID))
15248 {
15249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015250 "This station does not exist in the WDI Station Table %d",
15251 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 }
15255
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15257 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15260 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15261 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015262
15263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015266
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 /*------------------------------------------------------------------------
15268 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 ------------------------------------------------------------------------*/
15271 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15272 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15274 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15275 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015276
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 }
15281
15282 wpalMutexRelease(&pWDICtx->wptMutex);
15283 /*-----------------------------------------------------------------------
15284 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 sizeof(tAggrAddTsParams),
15289 &pSendBuffer, &usDataOffset, &usSendSize))||
15290 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15291 {
15292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015293 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 }
15298
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15303
15304 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15305 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015306 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015307 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15312 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15315 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15318 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015319 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015320 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15321 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15324 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15327 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15330 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15333 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015338
15339
15340 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015350 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15370 }
15371
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 wpalMemoryCopy( pSendBuffer+usDataOffset,
15373 &halAggrAddTsReq,
15374 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015375
15376 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015378
15379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015385}/*WDI_ProcessAggrAddTSpecReq*/
15386#endif /* WLAN_FEATURE_VOWIFI_11R */
15387
15388/**
15389 @brief Process Shutdown Request function (called when Main FSM
15390 allows it)
15391
15392 @param pWDICtx: pointer to the WLAN DAL context
15393 pEventData: pointer to the event information structure
15394
15395 @see
15396 @return Result of the function call
15397*/
15398WDI_Status
15399WDI_ProcessShutdownReq
15400(
15401 WDI_ControlBlockType* pWDICtx,
15402 WDI_EventInfoType* pEventData
15403 )
15404{
15405 wpt_status wptStatus;
15406
15407
15408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15409
15410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 -------------------------------------------------------------------------*/
15413 if ( NULL == pEventData )
15414 {
15415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 WDI_ASSERT(0);
15418 return WDI_STATUS_E_FAILURE;
15419 }
15420
15421 wpalMutexAcquire(&pWDICtx->wptMutex);
15422
15423
15424 gWDIInitialized = eWLAN_PAL_FALSE;
15425 /*! TO DO: stop the data services */
15426 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15427 {
15428 /*Stop the STA Table !UT- check this logic again
15429 It is safer to do it here than on the response - because a stop is imminent*/
15430 WDI_STATableStop(pWDICtx);
15431
15432 /* Stop Transport Driver, DXE */
15433 WDTS_Stop(pWDICtx);
15434 }
15435
15436 /*Clear all pending request*/
15437 WDI_ClearPendingRequests(pWDICtx);
15438 /* Close Data transport*/
15439 /* FTM mode does not open Data Path */
15440 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15441 {
15442 WDTS_Close(pWDICtx);
15443 }
15444 /*Close the STA Table !UT- check this logic again*/
15445 WDI_STATableClose(pWDICtx);
15446 /*close the PAL */
15447 wptStatus = wpalClose(pWDICtx->pPALContext);
15448 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15449 {
15450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15451 "Failed to wpal Close %d", wptStatus);
15452 WDI_ASSERT(0);
15453 }
15454
15455 /*Transition back to init state*/
15456 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15457
15458 wpalMutexRelease(&pWDICtx->wptMutex);
15459
15460 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015462
15463
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015465}/*WDI_ProcessShutdownReq*/
15466
15467/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015469========================================================================*/
15470
15471/**
15472 @brief Process Start Response function (called when a response
15473 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015474
15475 @param pWDICtx: pointer to the WLAN DAL context
15476 pEventData: pointer to the event information structure
15477
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 @see
15479 @return Result of the function call
15480*/
15481WDI_Status
15482WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015483(
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 WDI_ControlBlockType* pWDICtx,
15485 WDI_EventInfoType* pEventData
15486)
15487{
15488 WDI_StartRspParamsType wdiRspParams;
15489 WDI_StartRspCb wdiStartRspCb = NULL;
15490
15491 tHalMacStartRspParams* startRspParams;
15492
15493#ifndef HAL_SELF_STA_PER_BSS
15494 WDI_AddStaParams wdiAddSTAParam = {0};
15495#endif
15496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15497
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 -------------------------------------------------------------------------*/
15502 if (( NULL == pEventData ) ||
15503 ( NULL == pEventData->pEventData) ||
15504 ( NULL == wdiStartRspCb ))
15505 {
15506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 }
15511
15512 /*-------------------------------------------------------------------------
15513 Extract response and send it to UMAC
15514 -------------------------------------------------------------------------*/
15515 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15516 {
15517 // not enough data was received
15518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015519 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 }
15524
15525 /*-------------------------------------------------------------------------
15526 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 -------------------------------------------------------------------------*/
15529 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15530
15531 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15532 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15533 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15534 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15535 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15536 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15537 wdiRspParams.wlanReportedVersion.major =
15538 startRspParams->wcnssWlanVersion.major;
15539 wdiRspParams.wlanReportedVersion.minor =
15540 startRspParams->wcnssWlanVersion.minor;
15541 wdiRspParams.wlanReportedVersion.version =
15542 startRspParams->wcnssWlanVersion.version;
15543 wdiRspParams.wlanReportedVersion.revision =
15544 startRspParams->wcnssWlanVersion.revision;
15545 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15546 startRspParams->wcnssCrmVersionString,
15547 sizeof(wdiRspParams.wcnssSoftwareVersion));
15548 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15549 startRspParams->wcnssWlanVersionString,
15550 sizeof(wdiRspParams.wcnssHardwareVersion));
15551 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15552
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015553 /*Save the HAL Version*/
15554 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15555
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 wpalMutexAcquire(&pWDICtx->wptMutex);
15557 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15558 {
15559 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15560
15561 /*Cache the start response for further use*/
15562 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 sizeof(pWDICtx->wdiCachedStartRspParams));
15565
15566 }
15567 else
15568 {
15569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15570 "Failed to start device with status %s(%d)",
15571 WDI_getHALStatusMsgString(startRspParams->status),
15572 startRspParams->status);
15573
15574 /*Set the expected state transition to stopped - because the start has
15575 failed*/
15576 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15577
15578 wpalMutexRelease(&pWDICtx->wptMutex);
15579
15580 /*Notify UMAC*/
15581 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015582
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015584 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015585
15586 /*Although the response is an error - it was processed by our function
15587 so as far as the caller is concerned this is a succesful reponse processing*/
15588 return WDI_STATUS_SUCCESS;
15589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015590
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 wpalMutexRelease(&pWDICtx->wptMutex);
15592
15593 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15594 {
15595 /* FTM mode does not need to execute below */
15596 /* Notify UMAC */
15597 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15598 return WDI_STATUS_SUCCESS;
15599 }
15600
15601 /* START the Data transport */
15602 WDTS_startTransport(pWDICtx);
15603
15604 /*Start the STA Table !- check this logic again*/
15605 WDI_STATableStart(pWDICtx);
15606
15607#ifndef HAL_SELF_STA_PER_BSS
15608 /* Store the Self STA Index */
15609 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15610
15611 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15612 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15613 WDI_MAC_ADDR_LEN);
15614
15615 /* At this point add the self-STA */
15616
15617 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15618 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15619 /*! TO DO: wdiAddSTAParam.dpuSig */
15620 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15621 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15622 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15623
15624 //all DPU indices are the same for self STA
15625 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15626 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015627 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15629 WDI_MAC_ADDR_LEN);
15630 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15631 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15632
15633 /* Note: Since we don't get an explicit config STA request for self STA, we
15634 add the self STA upon receiving the Start response message. But the
15635 self STA entry in the table is deleted when WDI gets an explicit delete STA
15636 request */
15637 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15638#endif
15639
15640 /*Notify UMAC*/
15641 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15642
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644}/*WDI_ProcessStartRsp*/
15645
15646
15647/**
15648 @brief Process Stop Response function (called when a response
15649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015650
15651 @param pWDICtx: pointer to the WLAN DAL context
15652 pEventData: pointer to the event information structure
15653
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 @see
15655 @return Result of the function call
15656*/
15657WDI_Status
15658WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015659(
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 WDI_ControlBlockType* pWDICtx,
15661 WDI_EventInfoType* pEventData
15662)
15663{
15664 WDI_Status wdiStatus;
15665 WDI_StopRspCb wdiStopRspCb = NULL;
15666
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15669
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 -------------------------------------------------------------------------*/
15674 if (( NULL == pEventData ) ||
15675 ( NULL == pEventData->pEventData) ||
15676 ( NULL == wdiStopRspCb ))
15677 {
15678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 }
15683
15684 /*-------------------------------------------------------------------------
15685 Extract response and send it to UMAC
15686 -------------------------------------------------------------------------*/
15687 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15688 {
15689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015690 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 pEventData->uEventDataSize);
15692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 }
15695
15696 /*-------------------------------------------------------------------------
15697 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015698 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15701 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 sizeof(halMacStopRspMsg.stopRspParams));
15703
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015705
15706 wpalMutexAcquire(&pWDICtx->wptMutex);
15707
15708 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 --------------------------------------------------------------------------*/
15711 if ( WDI_STATUS_SUCCESS != wdiStatus )
15712 {
15713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15714 "Failed to stop the device with status %s (%d)",
15715 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15716 halMacStopRspMsg.stopRspParams.status);
15717
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015719 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015720
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015724
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15726
15727 /*Transition now as WDI may get preempted imediately after it sends
15728 up the Stop Response and it will not get to process the state transition
15729 from Main Rsp function*/
15730 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15731 wpalMutexRelease(&pWDICtx->wptMutex);
15732
15733 /*! TO DO: - STOP the Data transport */
15734
15735 /*Notify UMAC*/
15736 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15737
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015739}/*WDI_ProcessStopRsp*/
15740
15741/**
15742 @brief Process Close Rsp function (called when a response
15743 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015744
15745 @param pWDICtx: pointer to the WLAN DAL context
15746 pEventData: pointer to the event information structure
15747
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 @see
15749 @return Result of the function call
15750*/
15751WDI_Status
15752WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015753(
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 WDI_ControlBlockType* pWDICtx,
15755 WDI_EventInfoType* pEventData
15756)
15757{
15758 /*There is no close response comming from HAL - function just kept for
15759 simmetry */
15760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015762}/*WDI_ProcessCloseRsp*/
15763
15764
15765/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015767============================================================================*/
15768
15769/**
15770 @brief Process Init Scan Rsp function (called when a response
15771 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015772
15773 @param pWDICtx: pointer to the WLAN DAL context
15774 pEventData: pointer to the event information structure
15775
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 @see
15777 @return Result of the function call
15778*/
15779WDI_Status
15780WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015781(
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 WDI_ControlBlockType* pWDICtx,
15783 WDI_EventInfoType* pEventData
15784)
15785{
15786 WDI_Status wdiStatus;
15787 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015789 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15791
15792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 -------------------------------------------------------------------------*/
15795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15796 ( NULL == pEventData->pEventData))
15797 {
15798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 }
15803
15804 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15805 if( NULL == wdiInitScanRspCb)
15806 {
15807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015808 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 }
15812
15813 /*-------------------------------------------------------------------------
15814 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15818 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 sizeof(halInitScanRspMsg.initScanRspParams));
15820
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015822
15823 if ( pWDICtx->bInBmps )
15824 {
15825 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015826 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15827 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015829 "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 -080015830 WDI_ASSERT(0);
15831 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
15833
15834 /*Notify UMAC*/
15835 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15836
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015838}/*WDI_ProcessInitScanRsp*/
15839
15840
15841/**
15842 @brief Process Start Scan Rsp function (called when a response
15843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015844
15845 @param pWDICtx: pointer to the WLAN DAL context
15846 pEventData: pointer to the event information structure
15847
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 @see
15849 @return Result of the function call
15850*/
15851WDI_Status
15852WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015853(
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 WDI_ControlBlockType* pWDICtx,
15855 WDI_EventInfoType* pEventData
15856)
15857{
15858 WDI_StartScanRspParamsType wdiStartScanParams;
15859 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860
15861 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15863
15864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 -------------------------------------------------------------------------*/
15867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15868 ( NULL == pEventData->pEventData))
15869 {
15870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 }
15875
15876 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15877 if( NULL == wdiStartScanRspCb)
15878 {
15879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015880 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015883 }
15884
15885 /*-------------------------------------------------------------------------
15886 Extract response and send it to UMAC
15887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15889 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 sizeof(halStartScanRspMsg.startScanRspParams));
15891
15892 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15893 halStartScanRspMsg.startScanRspParams.status);
15894#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015897 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 halStartScanRspMsg.startScanRspParams.startTSF,
15899 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015900#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015901
15902 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15903 {
15904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15905 "Start scan failed with status %s (%d)",
15906 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15907 halStartScanRspMsg.startScanRspParams.status);
15908 /* send the status to UMAC, don't return from here*/
15909 }
15910
15911 /*Notify UMAC*/
15912 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15913
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015915
15916}/*WDI_ProcessStartScanRsp*/
15917
15918
15919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015920 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015921 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015922
15923 @param pWDICtx: pointer to the WLAN DAL context
15924 pEventData: pointer to the event information structure
15925
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 @see
15927 @return Result of the function call
15928*/
15929WDI_Status
15930WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015931(
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 WDI_ControlBlockType* pWDICtx,
15933 WDI_EventInfoType* pEventData
15934)
15935{
15936 WDI_Status wdiStatus;
15937 tHalEndScanRspMsg halEndScanRspMsg;
15938 WDI_EndScanRspCb wdiEndScanRspCb;
15939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15940
15941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 -------------------------------------------------------------------------*/
15944 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15945 ( NULL == pEventData->pEventData))
15946 {
15947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015948 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 }
15952
15953 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15954
15955 /*-------------------------------------------------------------------------
15956 Extract response and send it to UMAC
15957 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15959 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 sizeof(halEndScanRspMsg.endScanRspParams));
15961
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015963
15964 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15965 {
15966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15967 "End Scan failed with status %s (%d )",
15968 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15969 halEndScanRspMsg.endScanRspParams.status);
15970 /* send the status to UMAC, don't return from here*/
15971 }
15972
15973 /*Notify UMAC*/
15974 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15975
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015977}/*WDI_ProcessEndScanRsp*/
15978
15979
15980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015983
15984 @param pWDICtx: pointer to the WLAN DAL context
15985 pEventData: pointer to the event information structure
15986
Jeff Johnson295189b2012-06-20 16:38:30 -070015987 @see
15988 @return Result of the function call
15989*/
15990WDI_Status
15991WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015992(
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 WDI_ControlBlockType* pWDICtx,
15994 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015995)
Jeff Johnson295189b2012-06-20 16:38:30 -070015996{
15997 WDI_Status wdiStatus;
15998 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015999
16000 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16002
16003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 -------------------------------------------------------------------------*/
16006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16007 ( NULL == pEventData->pEventData))
16008 {
16009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 }
16014
16015 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16016
16017 /*-------------------------------------------------------------------------
16018 Extract response and send it to UMAC
16019 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16021 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16023
Jeff Johnsone7245742012-09-05 17:12:55 -070016024 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016025
16026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 halFinishScanRspMsg.finishScanRspParams.status);
16029
16030 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16031 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16032 {
16033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16034 "Finish Scan failed with status %s (%d)",
16035 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16036 halFinishScanRspMsg.finishScanRspParams.status);
16037 /* send the status to UMAC, don't return from here*/
16038 }
16039
16040 /*Notify UMAC*/
16041 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16042
Jeff Johnsone7245742012-09-05 17:12:55 -070016043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016044}/*WDI_ProcessFinishScanRsp*/
16045
16046/**
16047 @brief Process Join Response function (called when a response
16048 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016049
16050 @param pWDICtx: pointer to the WLAN DAL context
16051 pEventData: pointer to the event information structure
16052
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 @see
16054 @return Result of the function call
16055*/
16056WDI_Status
16057WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016058(
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 WDI_ControlBlockType* pWDICtx,
16060 WDI_EventInfoType* pEventData
16061)
16062{
16063 WDI_Status wdiStatus;
16064 WDI_JoinRspCb wdiJoinRspCb;
16065 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016066
16067 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
16073 if (( NULL == pWDICtx ) ||
16074 ( NULL == pWDICtx->pfncRspCB ) ||
16075 ( NULL == pEventData ) ||
16076 ( NULL == pEventData->pEventData))
16077 {
16078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 }
16083
16084 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16085
16086 /*-------------------------------------------------------------------------
16087 Extract response and send it to UMAC
16088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16090 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 sizeof(halJoinRspMsg.joinRspParams));
16092
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016094
16095 wpalMutexAcquire(&pWDICtx->wptMutex);
16096
16097 /*-----------------------------------------------------------------------
16098 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16103 {
16104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16106 "association no longer in progress %d - mysterious HAL response",
16107 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016108
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 }
16113
16114 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16115
16116 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 -----------------------------------------------------------------------*/
16119 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16120 {
16121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16122 "Join only allowed in Joining state - failure state is %d "
16123 "strange HAL response", pBSSSes->wdiAssocState);
16124
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16126
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 }
16130
16131
16132 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 -----------------------------------------------------------------------*/
16135 if ( WDI_STATUS_SUCCESS != wdiStatus )
16136 {
16137 /*Association was failed by HAL - remove session*/
16138 WDI_DeleteSession(pWDICtx, pBSSSes);
16139
16140 /*Association no longer in progress */
16141 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16142
16143 /*Association no longer in progress - prepare pending assoc for processing*/
16144 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016145
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 }
16147 else
16148 {
16149 /*Transition to state Joining - this may be redundant as we are supposed
16150 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 }
16153
16154 wpalMutexRelease(&pWDICtx->wptMutex);
16155
16156 /*Notify UMAC*/
16157 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16158
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160}/*WDI_ProcessJoinRsp*/
16161
16162
16163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016166
16167 @param pWDICtx: pointer to the WLAN DAL context
16168 pEventData: pointer to the event information structure
16169
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 @see
16171 @return Result of the function call
16172*/
16173WDI_Status
16174WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016175(
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 WDI_ControlBlockType* pWDICtx,
16177 WDI_EventInfoType* pEventData
16178)
16179{
16180 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16181 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 WDI_BSSSessionType* pBSSSes = NULL;
16184
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16187 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016188
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16190
16191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 -------------------------------------------------------------------------*/
16194 if (( NULL == pEventData ) ||
16195 ( NULL == pEventData->pEventData))
16196 {
16197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 }
16202
16203 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16204
16205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016208 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16209 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 sizeof(halConfigBssRspMsg.configBssRspParams));
16211
16212 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16213 halConfigBssRspMsg.configBssRspParams.status);
16214 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16215 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16218 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016219
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016221
16222 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016224
16225 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016227
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016229
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16233 #endif
16234 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16235 halConfigBssRspMsg.configBssRspParams.staMac,
16236 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016237
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 wpalMutexAcquire(&pWDICtx->wptMutex);
16239 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16243 wdiConfigBSSParams.macBSSID,
16244 &pBSSSes);
16245
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 /*-----------------------------------------------------------------------
16247 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 -----------------------------------------------------------------------*/
16250 if ( NULL == pBSSSes )
16251 {
16252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16253 "Association sequence for this BSS does not yet exist "
16254 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016255
16256 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16257
Jeff Johnson295189b2012-06-20 16:38:30 -070016258 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016261
Jeff Johnson295189b2012-06-20 16:38:30 -070016262 /*Save data for this BSS*/
16263 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16264 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016269 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016270 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16275 pBSSSes->bcastStaIdx =
16276 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016277
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016279
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 /*-------------------------------------------------------------------------
16281 Add Peer STA
16282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016283 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16285 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016286
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 wdiAddSTAParam.ucHTCapable =
16291 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16292 wdiAddSTAParam.ucStaType =
16293 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16294
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16297 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016299
16300 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16301 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16302 WDI_MAC_ADDR_LEN);
16303
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016317
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16319 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016320
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16322 /*-------------------------------------------------------------------------
16323 Add Broadcast STA only in AP mode
16324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016325 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016326 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 {
16328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16329 "Add BCAST STA to table for index: %d",
16330 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016331
16332 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016334
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16336 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16337 }
16338 wpalMutexRelease(&pWDICtx->wptMutex);
16339 }
16340 else
16341 {
16342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16343 "Config BSS RSP failed with status : %s(%d)",
16344 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 halConfigBssRspMsg.configBssRspParams.status);
16347
Jeff Johnsone7245742012-09-05 17:12:55 -070016348
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 /*Association was failed by HAL - remove session*/
16350 WDI_DeleteSession(pWDICtx, pBSSSes);
16351
16352 /*Association no longer in progress */
16353 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16354
16355 /*Association no longer in progress - prepare pending assoc for processing*/
16356 WDI_DequeueAssocRequest(pWDICtx);
16357
16358 }
16359
16360 /*Notify UMAC*/
16361 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16362
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016364}/*WDI_ProcessConfigBSSRsp*/
16365
16366
16367/**
16368 @brief Process Del BSS Response function (called when a response
16369 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016370
16371 @param pWDICtx: pointer to the WLAN DAL context
16372 pEventData: pointer to the event information structure
16373
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 @see
16375 @return Result of the function call
16376*/
16377WDI_Status
16378WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016379(
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 WDI_ControlBlockType* pWDICtx,
16381 WDI_EventInfoType* pEventData
16382)
16383{
16384 WDI_DelBSSRspParamsType wdiDelBSSParams;
16385 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016387 WDI_BSSSessionType* pBSSSes = NULL;
16388
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16391
16392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016394 -------------------------------------------------------------------------*/
16395 if (( NULL == pEventData ) ||
16396 ( NULL == pEventData->pEventData))
16397 {
16398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 }
16403
16404 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16405
16406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016409 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16410 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 sizeof(halDelBssRspMsg.deleteBssRspParams));
16412
16413
16414 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016416
16417 wpalMutexAcquire(&pWDICtx->wptMutex);
16418
16419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16423 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16424 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016425
16426 /*-----------------------------------------------------------------------
16427 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 -----------------------------------------------------------------------*/
16430 if ( NULL == pBSSSes )
16431 {
16432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16433 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016434 "association no longer in progress - mysterious HAL response");
16435
16436 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16437
16438 wpalMutexRelease(&pWDICtx->wptMutex);
16439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016441
16442 /*Extract BSSID for the response to UMAC*/
16443 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16444 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16445
16446 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16447
16448 /*-----------------------------------------------------------------------
16449 The current session will be deleted
16450 -----------------------------------------------------------------------*/
16451 WDI_DeleteSession(pWDICtx, pBSSSes);
16452
16453
16454 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016455 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16456 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016458 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016459 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016460
16461 /* Delete the STA's in this BSS */
16462 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16463
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 wpalMutexRelease(&pWDICtx->wptMutex);
16465
16466 /*Notify UMAC*/
16467 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16468
Jeff Johnsone7245742012-09-05 17:12:55 -070016469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016470}/*WDI_ProcessDelBSSRsp*/
16471
16472/**
16473 @brief Process Post Assoc Rsp function (called when a response
16474 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016475
16476 @param pWDICtx: pointer to the WLAN DAL context
16477 pEventData: pointer to the event information structure
16478
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 @see
16480 @return Result of the function call
16481*/
16482WDI_Status
16483WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016484(
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 WDI_ControlBlockType* pWDICtx,
16486 WDI_EventInfoType* pEventData
16487)
16488{
16489 WDI_PostAssocRspParamsType wdiPostAssocParams;
16490 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16495
16496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 -------------------------------------------------------------------------*/
16499 if (( NULL == pEventData ) ||
16500 ( NULL == pEventData->pEventData))
16501 {
16502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 }
16507
16508 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16509
16510 /*-------------------------------------------------------------------------
16511 Extract response and send it to UMAC
16512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16514 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 sizeof(halPostAssocRspMsg.postAssocRspParams));
16516
16517 /*Extract the Post Assoc STA Params */
16518
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiPostAssocParams.wdiStatus =
16527 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528
16529 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16530 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16532 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 WDI_MAC_ADDR_LEN);
16534
16535 /* Extract Post Assoc BSS Params */
16536
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16538 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16539 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016540
16541 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16542 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16545 .macSTA, WDI_MAC_ADDR_LEN);
16546
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16549
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16552
16553 wdiPostAssocParams.bssParams.ucBSSIdx =
16554 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16555
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16558
16559 wpalMutexAcquire(&pWDICtx->wptMutex);
16560
16561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016567
16568 /*-----------------------------------------------------------------------
16569 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 -----------------------------------------------------------------------*/
16572 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16575 {
16576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16577 "Association sequence for this BSS does not yet exist or "
16578 "association no longer in progress - mysterious HAL response");
16579
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16581
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 }
16585
16586 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 -----------------------------------------------------------------------*/
16589 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16590 {
16591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16592 "Post Assoc not allowed before JOIN - failing request "
16593 "strange HAL response");
16594
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16596
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 }
16600
16601 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016603 -----------------------------------------------------------------------*/
16604 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16605 {
16606 /*Association was failed by HAL - remove session*/
16607 WDI_DeleteSession(pWDICtx, pBSSSes);
16608 }
16609 else
16610 {
16611 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613
16614 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016615 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16623
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16626 }
16627
16628 /*Association no longer in progress */
16629 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16630
16631 /*Association no longer in progress - prepare pending assoc for processing*/
16632 WDI_DequeueAssocRequest(pWDICtx);
16633
16634 wpalMutexRelease(&pWDICtx->wptMutex);
16635
16636 /*Notify UMAC*/
16637 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16638
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016640}/*WDI_ProcessPostAssocRsp*/
16641
16642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016645
16646 @param pWDICtx: pointer to the WLAN DAL context
16647 pEventData: pointer to the event information structure
16648
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 @see
16650 @return Result of the function call
16651*/
16652WDI_Status
16653WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016654(
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 WDI_ControlBlockType* pWDICtx,
16656 WDI_EventInfoType* pEventData
16657)
16658{
16659 WDI_DelSTARspParamsType wdiDelSTARsp;
16660 WDI_DelSTARspCb wdiDelSTARspCb;
16661 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16664
16665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 -------------------------------------------------------------------------*/
16668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16669 ( NULL == pEventData->pEventData))
16670 {
16671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 }
16676
16677 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16678
16679 /*-------------------------------------------------------------------------
16680 Extract response and send it to UMAC
16681 -------------------------------------------------------------------------*/
16682 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016683 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016684 sizeof(halDelStaRspMsg.delStaRspParams));
16685
16686 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 wdiDelSTARsp.wdiStatus =
16688 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016689
16690 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16691
16692 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16693 if(staType == WDI_STA_ENTRY_SELF)
16694 {
16695 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16696
16697 /* At this point add the self-STA */
16698
16699 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16700 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16701 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16702
16703#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16704#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16705
16706 //all DPU indices are the same for self STA
16707 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16708 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16709 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16710 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16711 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16712 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016713
16714 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 }
16716 else
16717 {
16718 //Delete the station in the table
16719 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16720 }
16721
16722 /*Notify UMAC*/
16723 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16724
Jeff Johnsone7245742012-09-05 17:12:55 -070016725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016726}/*WDI_ProcessDelSTARsp*/
16727
16728
16729/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016731==========================================================================*/
16732
16733/**
16734 @brief Process Set BSS Key Rsp function (called when a response
16735 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016736
16737 @param pWDICtx: pointer to the WLAN DAL context
16738 pEventData: pointer to the event information structure
16739
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 @see
16741 @return Result of the function call
16742*/
16743WDI_Status
16744WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016745(
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 WDI_ControlBlockType* pWDICtx,
16747 WDI_EventInfoType* pEventData
16748)
16749{
16750 WDI_Status wdiStatus;
16751 eHalStatus halStatus;
16752 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16754
16755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 -------------------------------------------------------------------------*/
16758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16759 ( NULL == pEventData->pEventData))
16760 {
16761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 }
16766
16767 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16768
16769 /*-------------------------------------------------------------------------
16770 Extract response and send it to UMAC
16771 -------------------------------------------------------------------------*/
16772 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016774
16775 if ( eHAL_STATUS_SUCCESS != halStatus )
16776 {
16777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16778 "Set BSS Key failed with status %s (%d)",
16779 WDI_getHALStatusMsgString(halStatus),
16780 halStatus);
16781 /* send the status to UMAC, don't return from here*/
16782 }
16783
16784 /*Notify UMAC*/
16785 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16786
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016788}/*WDI_ProcessSetBssKeyRsp*/
16789
16790/**
16791 @brief Process Remove BSS Key Rsp function (called when a response
16792 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016793
16794 @param pWDICtx: pointer to the WLAN DAL context
16795 pEventData: pointer to the event information structure
16796
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 @see
16798 @return Result of the function call
16799*/
16800WDI_Status
16801WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016802(
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 WDI_ControlBlockType* pWDICtx,
16804 WDI_EventInfoType* pEventData
16805)
16806{
16807 WDI_Status wdiStatus;
16808 eHalStatus halStatus;
16809 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16811
16812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 -------------------------------------------------------------------------*/
16815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16816 ( NULL == pEventData->pEventData))
16817 {
16818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 }
16823
16824 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16825
16826 /*-------------------------------------------------------------------------
16827 Extract response and send it to UMAC
16828 -------------------------------------------------------------------------*/
16829 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016831
16832 if ( eHAL_STATUS_SUCCESS != halStatus )
16833 {
16834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16835 "Remove BSS Key failed with status %s (%d )",
16836 WDI_getHALStatusMsgString(halStatus),
16837 halStatus);
16838 /* send the status to UMAC, don't return from here*/
16839 }
16840
16841 /*Notify UMAC*/
16842 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16843
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016845}/*WDI_ProcessSetBssKeyRsp*/
16846
16847
16848/**
16849 @brief Process Set STA Key Rsp function (called when a response
16850 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016851
16852 @param pWDICtx: pointer to the WLAN DAL context
16853 pEventData: pointer to the event information structure
16854
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 @see
16856 @return Result of the function call
16857*/
16858WDI_Status
16859WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016860(
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 WDI_ControlBlockType* pWDICtx,
16862 WDI_EventInfoType* pEventData
16863)
16864{
16865 WDI_Status wdiStatus;
16866 eHalStatus halStatus;
16867 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16869
16870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 -------------------------------------------------------------------------*/
16873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16874 ( NULL == pEventData->pEventData))
16875 {
16876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 }
16881
16882 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16883
16884 /*-------------------------------------------------------------------------
16885 Extract response and send it to UMAC
16886 -------------------------------------------------------------------------*/
16887 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016889
16890 if ( eHAL_STATUS_SUCCESS != halStatus )
16891 {
16892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16893 "Set STA Key failed with status %s (%d)",
16894 WDI_getHALStatusMsgString(halStatus),
16895 halStatus);
16896 /* send the status to UMAC, don't return from here*/
16897 }
16898
16899 /*Notify UMAC*/
16900 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16901
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016903}/*WDI_ProcessSetSTAKeyRsp*/
16904
16905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016908
16909 @param pWDICtx: pointer to the WLAN DAL context
16910 pEventData: pointer to the event information structure
16911
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 @see
16913 @return Result of the function call
16914*/
16915WDI_Status
16916WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016917(
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 WDI_ControlBlockType* pWDICtx,
16919 WDI_EventInfoType* pEventData
16920)
16921{
16922 WDI_Status wdiStatus;
16923 eHalStatus halStatus;
16924 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16926
16927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -------------------------------------------------------------------------*/
16930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16931 ( NULL == pEventData->pEventData))
16932 {
16933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 }
16938
16939 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16940
16941 /*-------------------------------------------------------------------------
16942 Extract response and send it to UMAC
16943 -------------------------------------------------------------------------*/
16944 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016946
16947 if ( eHAL_STATUS_SUCCESS != halStatus )
16948 {
16949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16950 "Remove STA Key failed with status %s (%d)",
16951 WDI_getHALStatusMsgString(halStatus),
16952 halStatus);
16953 /* send the status to UMAC, don't return from here*/
16954 }
16955
16956 /*Notify UMAC*/
16957 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16958
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016960}/*WDI_ProcessRemoveStaKeyRsp*/
16961
16962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016965
16966 @param pWDICtx: pointer to the WLAN DAL context
16967 pEventData: pointer to the event information structure
16968
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 @see
16970 @return Result of the function call
16971*/
16972WDI_Status
16973WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016974(
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 WDI_ControlBlockType* pWDICtx,
16976 WDI_EventInfoType* pEventData
16977)
16978{
16979 WDI_Status wdiStatus;
16980 eHalStatus halStatus;
16981 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16983
16984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 -------------------------------------------------------------------------*/
16987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16988 ( NULL == pEventData->pEventData))
16989 {
16990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 }
16995
16996 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16997
16998 /*-------------------------------------------------------------------------
16999 Extract response and send it to UMAC
17000 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017001 wpalMemoryCopy( &halStatus,
17002 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 sizeof(halStatus));
17004
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017006
17007 if ( eHAL_STATUS_SUCCESS != halStatus )
17008 {
17009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17010 "Set STA Key failed with status %s (%d)",
17011 WDI_getHALStatusMsgString(halStatus),
17012 halStatus);
17013 /* send the status to UMAC, don't return from here*/
17014 }
17015
17016 /*Notify UMAC*/
17017 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17018
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017020}/*WDI_ProcessSetSTABcastKeyRsp*/
17021
17022/**
17023 @brief Process Remove STA Bcast Key Rsp function (called when a
17024 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017025
17026 @param pWDICtx: pointer to the WLAN DAL context
17027 pEventData: pointer to the event information structure
17028
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 @see
17030 @return Result of the function call
17031*/
17032WDI_Status
17033WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017034(
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 WDI_ControlBlockType* pWDICtx,
17036 WDI_EventInfoType* pEventData
17037)
17038{
17039 WDI_Status wdiStatus;
17040 eHalStatus halStatus;
17041 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17043
17044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 -------------------------------------------------------------------------*/
17047 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17048 ( NULL == pEventData->pEventData))
17049 {
17050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 }
17055
17056 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17057
17058 /*-------------------------------------------------------------------------
17059 Extract response and send it to UMAC
17060 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 wpalMemoryCopy( &halStatus,
17062 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 sizeof(halStatus));
17064
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017066
17067 if ( eHAL_STATUS_SUCCESS != halStatus )
17068 {
17069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17070 "Remove STA Key failed with status %s (%d)",
17071 WDI_getHALStatusMsgString(halStatus),
17072 halStatus);
17073 /* send the status to UMAC, don't return from here*/
17074 }
17075
17076 /*Notify UMAC*/
17077 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17078
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017080}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17081
17082
17083/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017084 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017085==========================================================================*/
17086
17087/**
17088 @brief Process Add TSpec Rsp function (called when a response
17089 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017090
17091 @param pWDICtx: pointer to the WLAN DAL context
17092 pEventData: pointer to the event information structure
17093
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 @see
17095 @return Result of the function call
17096*/
17097WDI_Status
17098WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017099(
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 WDI_ControlBlockType* pWDICtx,
17101 WDI_EventInfoType* pEventData
17102)
17103{
17104 WDI_Status wdiStatus;
17105 eHalStatus halStatus;
17106 WDI_AddTsRspCb wdiAddTsRspCb;
17107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17108
17109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 -------------------------------------------------------------------------*/
17112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17113 ( NULL == pEventData->pEventData))
17114 {
17115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 }
17120
17121 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17122
17123 /*-------------------------------------------------------------------------
17124 Extract response and send it to UMAC
17125 -------------------------------------------------------------------------*/
17126 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017128
17129 /*Notify UMAC*/
17130 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17131
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017133}/*WDI_ProcessAddTSpecRsp*/
17134
17135
Sunil Duttbd736ed2014-05-26 21:19:41 +053017136
17137#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17138
17139WDI_Status
17140WDI_ProcessLLStatsSetRsp
17141(
17142 WDI_ControlBlockType* pWDICtx,
17143 WDI_EventInfoType* pEventData
17144)
17145{
17146 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17147
17148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17149 "%s: Enter ", __func__);
17150 /*-------------------------------------------------------------------------
17151 Sanity check
17152 -------------------------------------------------------------------------*/
17153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17154 ( NULL == pEventData->pEventData))
17155 {
17156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17157 "%s: Invalid parameters", __func__);
17158 WDI_ASSERT(0);
17159 return WDI_STATUS_E_FAILURE;
17160 }
17161
17162 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17163
17164 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17165
17166 return WDI_STATUS_SUCCESS;
17167}
17168
17169WDI_Status
17170WDI_ProcessLLStatsGetRsp
17171(
17172 WDI_ControlBlockType* pWDICtx,
17173 WDI_EventInfoType* pEventData
17174)
17175{
17176 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17177
17178 /*-------------------------------------------------------------------------
17179 Sanity check
17180 -------------------------------------------------------------------------*/
17181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17182 ( NULL == pEventData->pEventData))
17183 {
17184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17185 "%s: Invalid parameters", __func__);
17186 WDI_ASSERT(0);
17187 return WDI_STATUS_E_FAILURE;
17188 }
17189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17190 "%s: Enter ", __func__);
17191
17192 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17193
17194 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17195
17196 return WDI_STATUS_SUCCESS;
17197}
17198
17199WDI_Status
17200WDI_ProcessLLStatsClearRsp
17201(
17202 WDI_ControlBlockType* pWDICtx,
17203 WDI_EventInfoType* pEventData
17204)
17205{
17206 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17207
17208 /*-------------------------------------------------------------------------
17209 Sanity check
17210 -------------------------------------------------------------------------*/
17211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17212 ( NULL == pEventData->pEventData))
17213 {
17214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17215 "%s: Invalid parameters", __func__);
17216 WDI_ASSERT(0);
17217 return WDI_STATUS_E_FAILURE;
17218 }
17219
17220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17221 "%s: CLEAR RESPONSE CALL BACK", __func__);
17222 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17223
17224 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17225
17226 return WDI_STATUS_SUCCESS;
17227}
17228#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17229
Jeff Johnson295189b2012-06-20 16:38:30 -070017230/**
17231 @brief Process Del TSpec Rsp function (called when a response
17232 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017233
17234 @param pWDICtx: pointer to the WLAN DAL context
17235 pEventData: pointer to the event information structure
17236
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 @see
17238 @return Result of the function call
17239*/
17240WDI_Status
17241WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017242(
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 WDI_ControlBlockType* pWDICtx,
17244 WDI_EventInfoType* pEventData
17245)
17246{
17247 WDI_Status wdiStatus;
17248 eHalStatus halStatus;
17249 WDI_DelTsRspCb wdiDelTsRspCb;
17250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17251
17252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 -------------------------------------------------------------------------*/
17255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17256 ( NULL == pEventData->pEventData))
17257 {
17258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 }
17263
17264 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17265
17266 /*-------------------------------------------------------------------------
17267 Extract response and send it to UMAC
17268 -------------------------------------------------------------------------*/
17269 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017270 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017271
17272 /*Notify UMAC*/
17273 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17274
Jeff Johnsone7245742012-09-05 17:12:55 -070017275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017276}/*WDI_ProcessDelTSpecRsp*/
17277
17278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017281
17282 @param pWDICtx: pointer to the WLAN DAL context
17283 pEventData: pointer to the event information structure
17284
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 @see
17286 @return Result of the function call
17287*/
17288WDI_Status
17289WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017290(
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 WDI_ControlBlockType* pWDICtx,
17292 WDI_EventInfoType* pEventData
17293)
17294{
17295 WDI_Status wdiStatus;
17296 eHalStatus halStatus;
17297 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17299
17300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 -------------------------------------------------------------------------*/
17303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17304 ( NULL == pEventData->pEventData))
17305 {
17306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 }
17311
17312 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17313
17314 /*-------------------------------------------------------------------------
17315 Extract response and send it to UMAC
17316 -------------------------------------------------------------------------*/
17317 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017318 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017319
17320 /*Notify UMAC*/
17321 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17322
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017324}/*WDI_ProcessUpdateEDCAParamsRsp*/
17325
17326
17327/**
17328 @brief Process Add BA Rsp function (called when a response
17329 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017330
17331 @param pWDICtx: pointer to the WLAN DAL context
17332 pEventData: pointer to the event information structure
17333
Jeff Johnson295189b2012-06-20 16:38:30 -070017334 @see
17335 @return Result of the function call
17336*/
17337WDI_Status
17338WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017339(
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 WDI_ControlBlockType* pWDICtx,
17341 WDI_EventInfoType* pEventData
17342)
17343{
17344 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17345
17346 tAddBASessionRspParams halBASessionRsp;
17347 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17348
Jeff Johnsone7245742012-09-05 17:12:55 -070017349
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17351
17352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 -------------------------------------------------------------------------*/
17355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17356 ( NULL == pEventData->pEventData))
17357 {
17358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 }
17363
17364 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17365
17366 /*-------------------------------------------------------------------------
17367 Extract response and send it to UMAC
17368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 wpalMemoryCopy( &halBASessionRsp,
17370 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 sizeof(halBASessionRsp));
17372
17373 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17374
Jeff Johnson43971f52012-07-17 12:26:56 -070017375 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 {
17377 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17378 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17379 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17380 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17381 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17382 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17383 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17384 }
17385
17386 /*Notify UMAC*/
17387 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17388
Jeff Johnsone7245742012-09-05 17:12:55 -070017389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017390}/*WDI_ProcessAddSessionBARsp*/
17391
17392
17393/**
17394 @brief Process Del BA Rsp function (called when a response
17395 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017396
17397 @param pWDICtx: pointer to the WLAN DAL context
17398 pEventData: pointer to the event information structure
17399
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 @see
17401 @return Result of the function call
17402*/
17403WDI_Status
17404WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017405(
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 WDI_ControlBlockType* pWDICtx,
17407 WDI_EventInfoType* pEventData
17408)
17409{
17410 WDI_Status wdiStatus;
17411 eHalStatus halStatus;
17412 WDI_DelBARspCb wdiDelBARspCb;
17413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17414
17415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017417 -------------------------------------------------------------------------*/
17418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17419 ( NULL == pEventData->pEventData))
17420 {
17421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 }
17426
17427 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17428
17429 /*-------------------------------------------------------------------------
17430 Extract response and send it to UMAC
17431 -------------------------------------------------------------------------*/
17432 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017434
17435 if ( eHAL_STATUS_SUCCESS == halStatus )
17436 {
17437 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17438 }
17439
17440 /*Notify UMAC*/
17441 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17442
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444}/*WDI_ProcessDelBARsp*/
17445
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017446#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017447/**
17448 @brief Process TSM Stats Rsp function (called when a response
17449 is being received over the bus from HAL)
17450
17451 @param pWDICtx: pointer to the WLAN DAL context
17452 pEventData: pointer to the event information structure
17453
17454 @see
17455 @return Result of the function call
17456*/
17457WDI_Status
17458WDI_ProcessTsmStatsRsp
17459(
17460 WDI_ControlBlockType* pWDICtx,
17461 WDI_EventInfoType* pEventData
17462)
17463{
17464 WDI_TsmRspCb wdiTsmStatsRspCb;
17465 tTsmStatsRspMsg halTsmStatsRspMsg;
17466 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17468
17469 /*-------------------------------------------------------------------------
17470 Sanity check
17471 -------------------------------------------------------------------------*/
17472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17473 ( NULL == pEventData->pEventData))
17474 {
17475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 WDI_ASSERT(0);
17478 return WDI_STATUS_E_FAILURE;
17479 }
17480
17481 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17482
17483 /*-------------------------------------------------------------------------
17484 Unpack HAL Response Message - the header was already extracted by the
17485 main Response Handling procedure
17486 -------------------------------------------------------------------------*/
17487 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17488 pEventData->pEventData,
17489 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17490
17491 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17492 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17493 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17494 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17495 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17496 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17497 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17498 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17499 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17500 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17501 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17502 halTsmStatsRspMsg.tsmStatsRspParams.status);
17503
17504 /*Notify UMAC*/
17505 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17506
17507 return WDI_STATUS_SUCCESS;
17508}/*WDI_ProcessTsmStatsRsp*/
17509
17510#endif
17511
17512
17513
17514/**
17515 @brief Process Flush AC Rsp function (called when a response
17516 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017517
17518 @param pWDICtx: pointer to the WLAN DAL context
17519 pEventData: pointer to the event information structure
17520
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 @see
17522 @return Result of the function call
17523*/
17524WDI_Status
17525WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017526(
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 WDI_ControlBlockType* pWDICtx,
17528 WDI_EventInfoType* pEventData
17529)
17530{
17531 WDI_Status wdiStatus;
17532 eHalStatus halStatus;
17533 WDI_FlushAcRspCb wdiFlushAcRspCb;
17534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17535
17536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 -------------------------------------------------------------------------*/
17539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17540 ( NULL == pEventData->pEventData))
17541 {
17542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 }
17547
17548 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17549
17550 /*-------------------------------------------------------------------------
17551 Extract response and send it to UMAC
17552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 wpalMemoryCopy( &halStatus,
17554 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 sizeof(halStatus));
17556
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017558
17559 /*Notify UMAC*/
17560 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17561
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563}/*WDI_ProcessFlushAcRsp*/
17564
17565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017568
17569 @param pWDICtx: pointer to the WLAN DAL context
17570 pEventData: pointer to the event information structure
17571
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 @see
17573 @return Result of the function call
17574*/
17575WDI_Status
17576WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017577(
Jeff Johnson295189b2012-06-20 16:38:30 -070017578 WDI_ControlBlockType* pWDICtx,
17579 WDI_EventInfoType* pEventData
17580)
17581{
17582 WDI_Status wdiStatus;
17583 eHalStatus halStatus;
17584 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17586
17587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 -------------------------------------------------------------------------*/
17590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17591 ( NULL == pEventData->pEventData))
17592 {
17593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 }
17598
17599 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17600
17601 /*-------------------------------------------------------------------------
17602 Extract response and send it to UMAC
17603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 wpalMemoryCopy( &halStatus,
17605 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 sizeof(halStatus));
17607
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017609
17610 /*Notify UMAC*/
17611 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17612
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017614}/*WDI_ProcessBtAmpEventRsp*/
17615
17616
17617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017620
17621 @param pWDICtx: pointer to the WLAN DAL context
17622 pEventData: pointer to the event information structure
17623
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 @see
17625 @return Result of the function call
17626*/
17627WDI_Status
17628WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017629(
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 WDI_ControlBlockType* pWDICtx,
17631 WDI_EventInfoType* pEventData
17632)
17633{
17634 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17635 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17636 tAddStaSelfRspMsg halAddStaSelfRsp;
17637 WDI_AddStaParams wdiAddSTAParam = {0};
17638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17639
17640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 -------------------------------------------------------------------------*/
17643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17644 ( NULL == pEventData->pEventData))
17645 {
17646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017650 }
17651
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17654
17655 /*-------------------------------------------------------------------------
17656 Extract response and send it to UMAC
17657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17659 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17661
17662
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 wdiAddSTASelfParams.wdiStatus =
17664 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017668 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17672
17673 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17674 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17675 WDI_MAC_ADDR_LEN);
17676
17677
17678#ifdef HAL_SELF_STA_PER_BSS
17679
17680 /* At this point add the self-STA */
17681
17682 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17683 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17684 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17685
17686 //all DPU indices are the same for self STA
17687
17688 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017690 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17691 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17692 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17693 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17694 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17695
17696 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17697 WDI_MAC_ADDR_LEN);
17698
17699 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17700 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17701
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17704 {
17705 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17706 }
17707#endif
17708
17709 /*Notify UMAC*/
17710 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17711
Jeff Johnsone7245742012-09-05 17:12:55 -070017712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017713}/*WDI_ProcessAddSTASelfRsp*/
17714
17715
17716
17717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017718 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017720
17721 @param pWDICtx: pointer to the WLAN DAL context
17722 pEventData: pointer to the event information structure
17723
Jeff Johnson295189b2012-06-20 16:38:30 -070017724 @see
17725 @return Result of the function call
17726*/
17727WDI_Status
17728WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017729(
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 WDI_ControlBlockType* pWDICtx,
17731 WDI_EventInfoType* pEventData
17732)
17733{
17734 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17735 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17736 tDelStaSelfRspParams delStaSelfRspParams;
17737 wpt_uint8 ucStaIdx;
17738
17739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17740
17741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 -------------------------------------------------------------------------*/
17744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17745 ( NULL == pEventData->pEventData))
17746 {
17747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 }
17752
17753 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17754
17755 /*-------------------------------------------------------------------------
17756 Extract response and send it to UMAC
17757 -------------------------------------------------------------------------*/
17758
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 (wpt_uint8*)pEventData->pEventData,
17761 sizeof(tDelStaSelfRspParams));
17762
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 wdiDelStaSelfRspParams.wdiStatus =
17764 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017765
Jeff Johnsone7245742012-09-05 17:12:55 -070017766 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17768 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17769 {
17770 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 delStaSelfRspParams.selfMacAddr,
17773 &ucStaIdx);
17774 if(WDI_STATUS_E_FAILURE == wdiStatus)
17775 {
17776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017777 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 }
17781 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17782 }
17783
17784 /*Notify UMAC*/
17785 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17786
17787 return WDI_STATUS_SUCCESS;
17788}
17789
Jeff Johnsone7245742012-09-05 17:12:55 -070017790#ifdef FEATURE_OEM_DATA_SUPPORT
17791/**
17792 @brief Start Oem Data Rsp function (called when a
17793 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017794
Jeff Johnsone7245742012-09-05 17:12:55 -070017795 @param pWDICtx: pointer to the WLAN DAL context
17796 pEventData: pointer to the event information structure
17797
17798 @see
17799 @return Result of the function call
17800*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017801
17802WDI_Status
17803WDI_ProcessStartOemDataRsp
17804(
17805 WDI_ControlBlockType* pWDICtx,
17806 WDI_EventInfoType* pEventData
17807)
17808{
17809 WDI_oemDataRspCb wdiOemDataRspCb;
17810 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17811 tStartOemDataRspParams* halStartOemDataRspParams;
17812
17813 /*-------------------------------------------------------------------------
17814 Sanity check
17815 -------------------------------------------------------------------------*/
17816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17817 ( NULL == pEventData->pEventData))
17818 {
17819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017820 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 WDI_ASSERT(0);
17822 return WDI_STATUS_E_FAILURE;
17823 }
17824
17825 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17826
17827 /*-------------------------------------------------------------------------
17828 Extract response and send it to UMAC
17829 -------------------------------------------------------------------------*/
17830 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17831
17832
17833 //It is the responsibility of the application code to check for failure
17834 //conditions!
17835
17836 //Allocate memory for WDI OEM DATA RSP structure
17837 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17838
17839 if(NULL == wdiOemDataRspParams)
17840 {
17841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017842 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 pWDICtx, pEventData, pEventData->pEventData);
17844 WDI_ASSERT(0);
17845 return WDI_STATUS_E_FAILURE;
17846 }
17847
17848 /* Populate WDI structure members */
17849 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17850
17851 /*Notify UMAC*/
17852 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17853
17854 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17855 wpalMemoryFree(wdiOemDataRspParams);
17856
17857 return WDI_STATUS_SUCCESS;
17858}/*WDI_PrcoessStartOemDataRsp*/
17859#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017860
17861/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017863===========================================================================*/
17864
17865/**
17866 @brief Process Channel Switch Rsp function (called when a response
17867 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017868
17869 @param pWDICtx: pointer to the WLAN DAL context
17870 pEventData: pointer to the event information structure
17871
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 @see
17873 @return Result of the function call
17874*/
17875WDI_Status
17876WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017877(
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 WDI_ControlBlockType* pWDICtx,
17879 WDI_EventInfoType* pEventData
17880)
17881{
17882 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17883 WDI_SwitchChRspCb wdiChSwitchRspCb;
17884 tSwitchChannelRspParams halSwitchChannelRsp;
17885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17886
17887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 -------------------------------------------------------------------------*/
17890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17891 ( NULL == pEventData->pEventData))
17892 {
17893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 }
17898
17899 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17900
17901 /*-------------------------------------------------------------------------
17902 Extract response and send it to UMAC
17903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 (wpt_uint8*)pEventData->pEventData,
17906 sizeof(halSwitchChannelRsp));
17907
Jeff Johnsone7245742012-09-05 17:12:55 -070017908 wdiSwitchChRsp.wdiStatus =
17909 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17911
17912#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017914#endif
17915
17916 /*Notify UMAC*/
17917 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17918
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017920}/*WDI_ProcessChannelSwitchRsp*/
17921
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017922/**
17923 @brief Process Channel Switch Rsp function (called when a response
17924 is being received over the bus from HAL against
17925 WDI_ProcessChannelSwitchReq_V1)
17926
17927 @param pWDICtx: pointer to the WLAN DAL context
17928 pEventData: pointer to the event information structure
17929
17930 @see
17931 @return Result of the function call
17932*/
17933
17934WDI_Status
17935WDI_ProcessChannelSwitchRsp_V1
17936(
17937 WDI_ControlBlockType* pWDICtx,
17938 WDI_EventInfoType* pEventData
17939)
17940{
17941 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17942 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17943 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17945
17946 /*-------------------------------------------------------------------------
17947 Sanity check
17948 -------------------------------------------------------------------------*/
17949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17950 ( NULL == pEventData->pEventData))
17951 {
17952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17953 "%s: Invalid parameters", __func__);
17954 WDI_ASSERT(0);
17955 return WDI_STATUS_E_FAILURE;
17956 }
17957
17958 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17959
17960 /*-------------------------------------------------------------------------
17961 Extract response and send it to UMAC
17962 -------------------------------------------------------------------------*/
17963 wpalMemoryCopy( &halSwitchChannelRsp,
17964 (wpt_uint8*)pEventData->pEventData,
17965 sizeof(halSwitchChannelRsp));
17966
17967 wdiSwitchChRsp.wdiStatus =
17968 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17969 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17970
17971#ifdef WLAN_FEATURE_VOWIFI
17972 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17973#endif
17974
17975 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17976 if (( NULL == wdiChSwitchRspCb ) )
17977 {
17978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17979 "%s: ### Call back function is null", __func__);
17980 WDI_ASSERT(0);
17981 return WDI_STATUS_E_FAILURE;
17982 }
17983 /*Notify UMAC*/
17984 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17985
17986 return WDI_STATUS_SUCCESS;
17987}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017988
17989/**
17990 @brief Process Config STA Rsp function (called when a response
17991 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017992
17993 @param pWDICtx: pointer to the WLAN DAL context
17994 pEventData: pointer to the event information structure
17995
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 @see
17997 @return Result of the function call
17998*/
17999WDI_Status
18000WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018001(
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 WDI_ControlBlockType* pWDICtx,
18003 WDI_EventInfoType* pEventData
18004)
18005{
18006 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18007 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18008 WDI_AddStaParams wdiAddSTAParam;
18009
18010 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018012
Jeff Johnsone7245742012-09-05 17:12:55 -070018013 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18015
18016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 -------------------------------------------------------------------------*/
18019 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18020 ( NULL == pEventData->pEventData))
18021 {
18022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 }
18027
18028 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18029
18030 /*-------------------------------------------------------------------------
18031 Extract response and send it to UMAC
18032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18034 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 sizeof(halConfigStaRsp.configStaRspParams));
18036
18037
18038 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18039 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18040 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18041 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18042 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18043
18044 /* MAC Address of STA - take from cache as it does not come back in the
18045 response*/
18046 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018047 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018048 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018049
18050 wdiCfgSTAParams.wdiStatus =
18051 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018052
18053 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18054 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18055 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18056
18057 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18058 {
18059 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18060 {
18061 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18064 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018065
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018067 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018069 wdiAddSTAParam.ucHTCapable =
18070 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18071 wdiAddSTAParam.ucStaType =
18072 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018073 wdiAddSTAParam.ucRmfEnabled =
18074 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018075
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018077 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18078 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018079 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018080
18081 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18082 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18083 WDI_MAC_ADDR_LEN);
18084
18085 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18086 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18087 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018088
18089 if ( NULL == pBSSSes )
18090 {
18091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18092 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018093
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 }
18097
18098 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018099 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018100 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018105 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018106 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018108
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18110 }
18111 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18112 {
18113 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18114
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018117 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018118 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018124 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018125 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018126 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 halConfigStaRsp.configStaRspParams.ucUcastSig;
18129 }
18130 }
18131
18132 /*Notify UMAC*/
18133 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18134
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018136}/*WDI_ProcessConfigStaRsp*/
18137
18138
18139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018142
18143 @param pWDICtx: pointer to the WLAN DAL context
18144 pEventData: pointer to the event information structure
18145
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 @see
18147 @return Result of the function call
18148*/
18149WDI_Status
18150WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018151(
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 WDI_ControlBlockType* pWDICtx,
18153 WDI_EventInfoType* pEventData
18154)
18155{
18156 WDI_Status wdiStatus;
18157 eHalStatus halStatus;
18158 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18159
18160 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018161 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18163
18164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 -------------------------------------------------------------------------*/
18167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18168 ( NULL == pEventData->pEventData))
18169 {
18170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018174 }
18175
18176 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18177
18178 wpalMutexAcquire(&pWDICtx->wptMutex);
18179
18180 /*If the link is being transitioned to idle - the BSS is to be deleted
18181 - this type of ending a session is possible when UMAC has failed an
18182 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18185 {
18186 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18190 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18191 &pBSSSes);
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 /*-----------------------------------------------------------------------
18194 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018195 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 -----------------------------------------------------------------------*/
18197 if ( NULL == pBSSSes )
18198 {
18199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18200 "Set link response received outside association session");
18201 }
18202 else
18203 {
18204 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18205 will be del BSS coming after this to stop the beaconing & cleaning up the
18206 sessions*/
18207 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18208 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18209 {
18210 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 -----------------------------------------------------------------------*/
18213 WDI_DeleteSession(pWDICtx, pBSSSes);
18214
18215 /*-----------------------------------------------------------------------
18216 Check to see if this association is in progress - if so disable the
18217 flag as this has ended
18218 -----------------------------------------------------------------------*/
18219 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 /*Association no longer in progress */
18222 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18223 /*Association no longer in progress - prepare pending assoc for processing*/
18224 WDI_DequeueAssocRequest(pWDICtx);
18225 }
18226 }
18227 }
18228 }
18229 /* If the link state has been set to POST ASSOC, reset the "association in
18230 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18233 {
18234 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18235 WDI_DequeueAssocRequest(pWDICtx);
18236 }
18237
18238 wpalMutexRelease(&pWDICtx->wptMutex);
18239
18240 /*-------------------------------------------------------------------------
18241 Extract response and send it to UMAC
18242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 wpalMemoryCopy( &halStatus,
18244 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 sizeof(halStatus));
18246
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018248
18249 /*Notify UMAC*/
18250 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18251
Jeff Johnsone7245742012-09-05 17:12:55 -070018252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018253}/*WDI_ProcessSetLinkStateRsp*/
18254
18255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018258
18259 @param pWDICtx: pointer to the WLAN DAL context
18260 pEventData: pointer to the event information structure
18261
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 @see
18263 @return Result of the function call
18264*/
18265WDI_Status
18266WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018267(
Jeff Johnson295189b2012-06-20 16:38:30 -070018268 WDI_ControlBlockType* pWDICtx,
18269 WDI_EventInfoType* pEventData
18270)
18271{
18272 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18273 WDI_GetStatsRspCb wdiGetStatsRspCb;
18274 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018275
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18277
18278 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 -------------------------------------------------------------------------*/
18281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18282 ( NULL == pEventData->pEventData))
18283 {
18284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 }
18289
18290 /*-------------------------------------------------------------------------
18291 Extract response and send it to UMAC
18292 -------------------------------------------------------------------------*/
18293 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18294
18295 /*allocate the stats response buffer */
18296 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18297 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18298 + sizeof(WDI_GetStatsRspParamsType));
18299
18300 if(NULL == wdiGetStatsRsp)
18301 {
18302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018303 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 pWDICtx, pEventData, pEventData->pEventData);
18305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 }
18308
18309 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18310
18311 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18312 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18313 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18314 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18315 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18316 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18317
18318 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18319 wpalMemoryCopy(wdiGetStatsRsp + 1,
18320 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18321 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18322
18323 /*Notify UMAC*/
18324 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18325
18326 wpalMemoryFree(wdiGetStatsRsp);
18327
Jeff Johnsone7245742012-09-05 17:12:55 -070018328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018329}/*WDI_ProcessGetStatsRsp*/
18330
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018331#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018332/**
18333 @brief Process Get Roam Rssi Rsp function (called when a response is
18334 being received over the bus from HAL)
18335
18336 @param pWDICtx: pointer to the WLAN DAL context
18337 pEventData: pointer to the event information structure
18338
18339 @see
18340 @return Result of the function call
18341*/
18342WDI_Status
18343WDI_ProcessGetRoamRssiRsp
18344(
18345 WDI_ControlBlockType* pWDICtx,
18346 WDI_EventInfoType* pEventData
18347)
18348{
18349 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18350 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18351 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18353
18354 /*-------------------------------------------------------------------------
18355 Sanity check
18356 -------------------------------------------------------------------------*/
18357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18358 ( NULL == pEventData->pEventData))
18359 {
18360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18361 "%s: Invalid parameters", __func__);
18362 WDI_ASSERT(0);
18363 return WDI_STATUS_E_FAILURE;
18364 }
18365
18366 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18367 if(NULL == wdiGetRoamRssiRspCb)
18368 {
18369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18370 "%s: call back function is NULL", __func__);
18371 WDI_ASSERT(0);
18372 return WDI_STATUS_E_FAILURE;
18373 }
18374
18375 /*-------------------------------------------------------------------------
18376 Extract response and send it to UMAC
18377 -------------------------------------------------------------------------*/
18378 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18379 pEventData->pEventData,
18380 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18381
18382 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18383 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18384 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18385
18386 /*Notify UMAC*/
18387 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18388
18389 return WDI_STATUS_SUCCESS;
18390}/*WDI_ProcessGetRoamRssiRsp*/
18391#endif
18392
Jeff Johnson295189b2012-06-20 16:38:30 -070018393
18394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018397
18398 @param pWDICtx: pointer to the WLAN DAL context
18399 pEventData: pointer to the event information structure
18400
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 @see
18402 @return Result of the function call
18403*/
18404WDI_Status
18405WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018406(
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 WDI_ControlBlockType* pWDICtx,
18408 WDI_EventInfoType* pEventData
18409)
18410{
18411 WDI_Status wdiStatus;
18412 eHalStatus halStatus;
18413 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18415
18416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018418 -------------------------------------------------------------------------*/
18419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18420 ( NULL == pEventData->pEventData))
18421 {
18422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 }
18427
18428 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18429
18430 /*-------------------------------------------------------------------------
18431 Extract response and send it to UMAC
18432 -------------------------------------------------------------------------*/
18433 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018435
18436 /*Notify UMAC*/
18437 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18438
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440}/*WDI_ProcessUpdateCfgRsp*/
18441
18442
18443
18444/**
18445 @brief Process Add BA Rsp function (called when a response
18446 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018447
18448 @param pWDICtx: pointer to the WLAN DAL context
18449 pEventData: pointer to the event information structure
18450
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 @see
18452 @return Result of the function call
18453*/
18454WDI_Status
18455WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018456(
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 WDI_ControlBlockType* pWDICtx,
18458 WDI_EventInfoType* pEventData
18459)
18460{
18461 WDI_AddBARspCb wdiAddBARspCb;
18462
18463 tAddBARspParams halAddBARsp;
18464 WDI_AddBARspinfoType wdiAddBARsp;
18465
18466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18467
18468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018470 -------------------------------------------------------------------------*/
18471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18472 ( NULL == pEventData->pEventData))
18473 {
18474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 }
18479
18480 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18481
18482 /*-------------------------------------------------------------------------
18483 Extract response and send it to UMAC
18484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 wpalMemoryCopy( &halAddBARsp,
18486 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 sizeof(halAddBARsp));
18488
18489 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18490
Jeff Johnson43971f52012-07-17 12:26:56 -070018491 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 {
18493 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18494 }
18495
18496 /*Notify UMAC*/
18497 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18498
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018500}/*WDI_ProcessAddSessionBARsp*/
18501
18502/**
18503 @brief Process Add BA Rsp function (called when a response
18504 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018505
18506 @param pWDICtx: pointer to the WLAN DAL context
18507 pEventData: pointer to the event information structure
18508
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 @see
18510 @return Result of the function call
18511*/
18512WDI_Status
18513WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018514(
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 WDI_ControlBlockType* pWDICtx,
18516 WDI_EventInfoType* pEventData
18517)
18518{
18519 WDI_TriggerBARspCb wdiTriggerBARspCb;
18520
18521 tTriggerBARspParams* halTriggerBARsp;
18522 tTriggerBaRspCandidate* halBaCandidate;
18523 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18524 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18525 wpt_uint16 index;
18526 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018527 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18529
18530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 -------------------------------------------------------------------------*/
18533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18534 ( NULL == pEventData->pEventData))
18535 {
18536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 }
18541
18542 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18543
18544 /*-------------------------------------------------------------------------
18545 Extract response and send it to UMAC
18546 -------------------------------------------------------------------------*/
18547 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18548
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018549 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18550
18551 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18552 {
18553 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018554 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018555 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018556
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018557 if(NULL == wdiTriggerBARsp)
18558 {
18559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018560 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018561 pWDICtx, pEventData, pEventData->pEventData);
18562 WDI_ASSERT(0);
18563 return WDI_STATUS_E_FAILURE;
18564 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018565
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018566 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18567
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18571
18572 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18573 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18574
18575 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18579 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18580 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018581 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18585 }
18586 wdiTriggerBARspCandidate++;
18587 halBaCandidate++;
18588 }
18589 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018590 else
18591 {
18592 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18593
18594 if(NULL == wdiTriggerBARsp)
18595 {
18596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018597 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018598 pWDICtx, pEventData, pEventData->pEventData);
18599 WDI_ASSERT(0);
18600 return WDI_STATUS_E_FAILURE;
18601 }
18602
18603 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18604
18605 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018606
18607 /*Notify UMAC*/
18608 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18609
18610 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018612}/*WDI_ProcessAddSessionBARsp*/
18613
18614/**
18615 @brief Process Update Beacon Params Rsp function (called when a response
18616 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018617
18618 @param pWDICtx: pointer to the WLAN DAL context
18619 pEventData: pointer to the event information structure
18620
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 @see
18622 @return Result of the function call
18623*/
18624WDI_Status
18625WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018626(
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 WDI_ControlBlockType* pWDICtx,
18628 WDI_EventInfoType* pEventData
18629)
18630{
18631 WDI_Status wdiStatus;
18632 eHalStatus halStatus;
18633 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18635
18636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 -------------------------------------------------------------------------*/
18639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18640 ( NULL == pEventData->pEventData))
18641 {
18642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 }
18647
18648 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18649
18650 /*-------------------------------------------------------------------------
18651 Extract response and send it to UMAC
18652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018653 wpalMemoryCopy( &halStatus,
18654 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 sizeof(halStatus));
18656
Jeff Johnsone7245742012-09-05 17:12:55 -070018657 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018658
18659 /*Notify UMAC*/
18660 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18661
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018663}/*WDI_ProcessUpdateBeaconParamsRsp*/
18664
18665/**
18666 @brief Process Send Beacon template Rsp function (called when a response
18667 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018668
18669 @param pWDICtx: pointer to the WLAN DAL context
18670 pEventData: pointer to the event information structure
18671
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 @see
18673 @return Result of the function call
18674*/
18675WDI_Status
18676WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018677(
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_ControlBlockType* pWDICtx,
18679 WDI_EventInfoType* pEventData
18680)
18681{
18682 WDI_Status wdiStatus;
18683 eHalStatus halStatus;
18684 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18686
18687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 -------------------------------------------------------------------------*/
18690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18691 ( NULL == pEventData->pEventData))
18692 {
18693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 }
18698
18699 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18700
18701 /*-------------------------------------------------------------------------
18702 Extract response and send it to UMAC
18703 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 wpalMemoryCopy( &halStatus,
18705 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 sizeof(halStatus));
18707
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018709
18710 /*Notify UMAC*/
18711 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18712
Jeff Johnsone7245742012-09-05 17:12:55 -070018713 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018714}/*WDI_ProcessSendBeaconParamsRsp*/
18715
Jeff Johnsone7245742012-09-05 17:12:55 -070018716
Jeff Johnson295189b2012-06-20 16:38:30 -070018717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018720
18721 @param pWDICtx: pointer to the WLAN DAL context
18722 pEventData: pointer to the event information structure
18723
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 @see
18725 @return Result of the function call
18726*/
18727WDI_Status
18728WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018729(
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_ControlBlockType* pWDICtx,
18731 WDI_EventInfoType* pEventData
18732)
18733{
18734 WDI_Status wdiStatus;
18735 eHalStatus halStatus;
18736 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18738
18739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 -------------------------------------------------------------------------*/
18742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18743 ( NULL == pEventData->pEventData))
18744 {
18745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018749 }
18750
18751 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18752
18753 /*-------------------------------------------------------------------------
18754 Extract response and send it to UMAC
18755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 wpalMemoryCopy( &halStatus,
18757 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018758 sizeof(halStatus));
18759
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018761
18762 /*Notify UMAC*/
18763 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18764
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018766}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18767
18768 /**
18769 @brief Process Set Max Tx Power Rsp function (called when a response
18770 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018771
18772 @param pWDICtx: pointer to the WLAN DAL context
18773 pEventData: pointer to the event information structure
18774
Jeff Johnson295189b2012-06-20 16:38:30 -070018775 @see
18776 @return Result of the function call
18777*/
18778WDI_Status
18779WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018780(
Jeff Johnson295189b2012-06-20 16:38:30 -070018781 WDI_ControlBlockType* pWDICtx,
18782 WDI_EventInfoType* pEventData
18783)
18784{
18785 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018786
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018788
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18791
18792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 -------------------------------------------------------------------------*/
18795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18796 ( NULL == pEventData->pEventData))
18797 {
18798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018802 }
18803
18804 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18805
18806 /*-------------------------------------------------------------------------
18807 Extract response and send it to UMAC
18808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18810 pEventData->pEventData,
18811 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018812
18813 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18814 {
18815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18816 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 }
18819
Jeff Johnsone7245742012-09-05 17:12:55 -070018820 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018823
18824 /*Notify UMAC*/
18825 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18826
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018828}
18829
schang86c22c42013-03-13 18:41:24 -070018830 /**
18831 @brief Process Set Tx Power Rsp function (called when a response
18832 is being received over the bus from HAL)
18833
18834 @param pWDICtx: pointer to the WLAN DAL context
18835 pEventData: pointer to the event information structure
18836
18837 @see
18838 @return Result of the function call
18839*/
18840WDI_Status
18841WDI_ProcessSetTxPowerRsp
18842(
18843 WDI_ControlBlockType* pWDICtx,
18844 WDI_EventInfoType* pEventData
18845)
18846{
18847 tSetTxPwrRspMsg halTxpowerrsp;
18848 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18849 WDA_SetTxPowerRspCb wdiReqStatusCb;
18850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18851
18852 /*-------------------------------------------------------------------------
18853 Sanity check
18854 -------------------------------------------------------------------------*/
18855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18856 ( NULL == pEventData->pEventData))
18857 {
18858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18859 "%s: Invalid parameters", __func__);
18860 WDI_ASSERT(0);
18861 return WDI_STATUS_E_FAILURE;
18862 }
18863
18864 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18865
18866 /*-------------------------------------------------------------------------
18867 Extract response and send it to UMAC
18868 -------------------------------------------------------------------------*/
18869 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18870 pEventData->pEventData,
18871 sizeof(halTxpowerrsp.setTxPwrRspParams));
18872
18873 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18874 {
18875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18876 "Error status returned in Set Tx Power Response ");
18877 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18878 return WDI_STATUS_E_FAILURE;
18879 }
18880
18881 wdiSetTxPowerRspMsg.wdiStatus =
18882 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18883
18884 /*Notify UMAC*/
18885 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18886
18887 return WDI_STATUS_SUCCESS;
18888}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018889
18890/**
18891 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18892 is being received over the bus from HAL)
18893
18894 @param pWDICtx: pointer to the WLAN DAL context
18895 pEventData: pointer to the event information structure
18896
18897 @see
18898 @return Result of the function call
18899*/
18900WDI_Status
18901WDI_ProcessSetMaxTxPowerPerBandRsp
18902(
18903 WDI_ControlBlockType* pWDICtx,
18904 WDI_EventInfoType* pEventData
18905)
18906{
18907 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18908 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18909 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18911
18912 /*-------------------------------------------------------------------------
18913 Sanity check
18914 -------------------------------------------------------------------------*/
18915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18916 ( NULL == pEventData->pEventData))
18917 {
18918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18919 "%s: Invalid parameters", __func__);
18920 WDI_ASSERT(0);
18921 return WDI_STATUS_E_FAILURE;
18922 }
18923
18924 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18925
18926 /*-------------------------------------------------------------------------
18927 Extract response and send it to UMAC
18928 -------------------------------------------------------------------------*/
18929 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18930 pEventData->pEventData,
18931 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18932
18933 if (eHAL_STATUS_SUCCESS !=
18934 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18935 {
18936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18937 "Error status returned in Set Max Tx Power Per Band Response");
18938 return WDI_STATUS_E_FAILURE;
18939 }
18940
18941 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18942 WDI_HAL_2_WDI_STATUS(
18943 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18944
18945 /* Notify UMAC */
18946 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18947
18948 return WDI_STATUS_SUCCESS;
18949}
18950
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018951#ifdef FEATURE_WLAN_TDLS
18952/**
18953 @brief Process TDLS Link Establish Rsp function (called
18954 when a response is being received over the bus from HAL)
18955
18956 @param pWDICtx: pointer to the WLAN DAL context
18957 pEventData: pointer to the event information structure
18958
18959 @see
18960 @return Result of the function call
18961*/
18962WDI_Status
18963WDI_ProcessLinkEstablishReqRsp
18964(
18965 WDI_ControlBlockType* pWDICtx,
18966 WDI_EventInfoType* pEventData
18967)
18968{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018969 eHalStatus halStatus;
18970 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018971 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18972 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18973
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18975
18976 /*-------------------------------------------------------------------------
18977 Sanity check
18978 -------------------------------------------------------------------------*/
18979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18980 ( NULL == pEventData->pEventData))
18981 {
18982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18983 "%s: Invalid parameters", __func__);
18984 WDI_ASSERT(0);
18985 return WDI_STATUS_E_FAILURE;
18986 }
18987
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018988 /*-------------------------------------------------------------------------
18989 Extract indication and send it to UMAC
18990 -------------------------------------------------------------------------*/
18991 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18992 pEventData->pEventData,
18993 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18994
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018995 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18996
18997 /*-------------------------------------------------------------------------
18998 Extract response and send it to UMAC
18999 -------------------------------------------------------------------------*/
19000 wpalMemoryCopy( &halStatus,
19001 pEventData->pEventData,
19002 sizeof(halStatus));
19003
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019004 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19005 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019006
19007 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019008 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019009
19010 return WDI_STATUS_SUCCESS;
19011}/*WDI_ProcessLinkEstablishReqRsp*/
19012#endif
schang86c22c42013-03-13 18:41:24 -070019013
Jeff Johnson295189b2012-06-20 16:38:30 -070019014/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019017
19018 @param pWDICtx: pointer to the WLAN DAL context
19019 pEventData: pointer to the event information structure
19020
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 @see
19022 @return Result of the function call
19023*/
19024WDI_Status
19025WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019026(
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 WDI_ControlBlockType* pWDICtx,
19028 WDI_EventInfoType* pEventData
19029)
19030{
19031 WDI_Status wdiStatus;
19032 eHalStatus halStatus;
19033 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19035
19036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 -------------------------------------------------------------------------*/
19039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19040 ( NULL == pEventData->pEventData))
19041 {
19042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019046 }
19047
19048 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19049
19050 /*-------------------------------------------------------------------------
19051 Extract response and send it to UMAC
19052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 wpalMemoryCopy( &halStatus,
19054 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 sizeof(halStatus));
19056
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019058
19059 /*Notify UMAC*/
19060 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19061
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019067
19068 @param pWDICtx: pointer to the WLAN DAL context
19069 pEventData: pointer to the event information structure
19070
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 @see
19072 @return Result of the function call
19073*/
19074WDI_Status
19075WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019076(
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 WDI_ControlBlockType* pWDICtx,
19078 WDI_EventInfoType* pEventData
19079)
19080{
19081 WDI_Status wdiStatus;
19082 eHalStatus halStatus;
19083 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019084 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19086
19087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 -------------------------------------------------------------------------*/
19090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19091 ( NULL == pEventData->pEventData))
19092 {
19093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 }
19098
19099 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19100
19101 /*-------------------------------------------------------------------------
19102 Extract response and send it to UMAC
19103 -------------------------------------------------------------------------*/
19104 halStatus = *((eHalStatus*)pEventData->pEventData);
19105
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019107
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019108 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19109 * Other module states are taken care by PMC.
19110 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19111 */
19112 if (wdiStatus != WDI_STATUS_SUCCESS) {
19113
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19115 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19116 halStatus);
19117 /* Call Back is not required as we are putting the DXE in FULL
19118 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019119 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19120
19121 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019123 "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 -080019124 WDI_ASSERT(0);
19125 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019126 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 /*Notify UMAC*/
19128 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19129
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019131}/*WDI_ProcessEnterImpsRsp*/
19132
19133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019136
19137 @param pWDICtx: pointer to the WLAN DAL context
19138 pEventData: pointer to the event information structure
19139
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 @see
19141 @return Result of the function call
19142*/
19143WDI_Status
19144WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019145(
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 WDI_ControlBlockType* pWDICtx,
19147 WDI_EventInfoType* pEventData
19148)
19149{
19150 WDI_Status wdiStatus;
19151 eHalStatus halStatus;
19152 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019153 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19155
19156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 -------------------------------------------------------------------------*/
19159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19160 ( NULL == pEventData->pEventData))
19161 {
19162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 }
19167
19168 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19169
19170 /*-------------------------------------------------------------------------
19171 Extract response and send it to UMAC
19172 -------------------------------------------------------------------------*/
19173 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019176 if (halStatus != eHAL_STATUS_SUCCESS)
19177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19178 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19179
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019181 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19182 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19183 {
19184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019185 "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 -080019186 WDI_ASSERT(0);
19187 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 /*Notify UMAC*/
19189 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19190
Jeff Johnsone7245742012-09-05 17:12:55 -070019191 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019192}/*WDI_ProcessExitImpsRsp*/
19193
19194/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019195 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019197
19198 @param pWDICtx: pointer to the WLAN DAL context
19199 pEventData: pointer to the event information structure
19200
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 @see
19202 @return Result of the function call
19203*/
19204WDI_Status
19205WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019206(
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 WDI_ControlBlockType* pWDICtx,
19208 WDI_EventInfoType* pEventData
19209)
19210{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019211 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19212 tHalEnterBmpsRspParams halEnterBmpsRsp;
19213 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19214 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019215 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19217
19218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 -------------------------------------------------------------------------*/
19221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19222 ( NULL == pEventData->pEventData))
19223 {
19224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 }
19229
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019231 Extract response and send it to UMAC
19232 -------------------------------------------------------------------------*/
19233 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19234 {
19235 wpalMemoryCopy( &halEnterBmpsRsp,
19236 pEventData->pEventData,
19237 sizeof(halEnterBmpsRsp));
19238
19239 //Used to print debug message
19240 halStatus = halEnterBmpsRsp.status;
19241 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19242 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19243 }
19244 else
19245 {
19246 halStatus = *((eHalStatus*)pEventData->pEventData);
19247 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19248 }
19249
19250 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019251
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019252 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19253 * Other module states are taken care by PMC.
19254 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19255 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019256 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19257 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019258
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019260 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19261 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019262 /* Call Back is not required as we are putting the DXE in FULL
19263 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019264 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19265 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19266 {
19267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019268 "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 -080019269 WDI_ASSERT(0);
19270 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019271 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019272 }
19273
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019275 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019276
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019278}/*WDI_ProcessEnterBmpsRsp*/
19279
19280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019281 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019282 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019283
19284 @param pWDICtx: pointer to the WLAN DAL context
19285 pEventData: pointer to the event information structure
19286
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 @see
19288 @return Result of the function call
19289*/
19290WDI_Status
19291WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019292(
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 WDI_ControlBlockType* pWDICtx,
19294 WDI_EventInfoType* pEventData
19295)
19296{
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 eHalStatus halStatus;
19298 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019299 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019300 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19301 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19303
19304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 -------------------------------------------------------------------------*/
19307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19308 ( NULL == pEventData->pEventData))
19309 {
19310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 }
19315
19316 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19317
19318 /*-------------------------------------------------------------------------
19319 Extract response and send it to UMAC
19320 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019321
19322 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19323 {
19324 wpalMemoryCopy( &halExitBmpsRsp,
19325 pEventData->pEventData,
19326 sizeof(halExitBmpsRsp));
19327
19328 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19329 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19330 }
19331 else
19332 {
19333 halStatus = *((eHalStatus*)pEventData->pEventData);
19334 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19335 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019336
19337 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019338 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19339 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19340 {
19341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019342 "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 -080019343 WDI_ASSERT(0);
19344 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19346
19347 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019348 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019349
Jeff Johnsone7245742012-09-05 17:12:55 -070019350 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019351}/*WDI_ProcessExitBmpsRsp*/
19352
19353/**
19354 @brief Process Enter UAPSD Rsp function (called when a response
19355 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019356
19357 @param pWDICtx: pointer to the WLAN DAL context
19358 pEventData: pointer to the event information structure
19359
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 @see
19361 @return Result of the function call
19362*/
19363WDI_Status
19364WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019365(
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 WDI_ControlBlockType* pWDICtx,
19367 WDI_EventInfoType* pEventData
19368)
19369{
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019371 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019373 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19374
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19376
19377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 -------------------------------------------------------------------------*/
19380 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19381 ( NULL == pEventData->pEventData))
19382 {
19383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 }
19388
19389 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19390
19391 /*-------------------------------------------------------------------------
19392 Extract response and send it to UMAC
19393 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019394 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19395 {
19396 wpalMemoryCopy( &halEnterUapsdRsp,
19397 pEventData->pEventData,
19398 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019399
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019400 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19401 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19402 }
19403 else
19404 {
19405 halStatus = *((eHalStatus*)pEventData->pEventData);
19406 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19407 }
19408
19409 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 {
19411 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19412 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19413 // the traffic to decide when to suspend the trigger frames when there is no traffic
19414 // activity on the trigger enabled ACs
19415 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19416
19417#ifdef WLAN_PERF
19418 // Increment the BD signature to refresh the fast path BD utilization
19419 pWDICtx->uBdSigSerialNum++;
19420#endif
19421 }
19422
19423 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019424 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019425
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019427}/*WDI_ProcessEnterUapsdRsp*/
19428
19429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019430 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019432
19433 @param pWDICtx: pointer to the WLAN DAL context
19434 pEventData: pointer to the event information structure
19435
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 @see
19437 @return Result of the function call
19438*/
19439WDI_Status
19440WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019441(
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 WDI_ControlBlockType* pWDICtx,
19443 WDI_EventInfoType* pEventData
19444)
19445{
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 eHalStatus halStatus;
19447 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019448 tHalExitUapsdRspParams halExitUapsdRsp;
19449 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19451
19452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019454 -------------------------------------------------------------------------*/
19455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19456 ( NULL == pEventData->pEventData))
19457 {
19458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019462 }
19463
19464 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19465
19466 /*-------------------------------------------------------------------------
19467 Extract response and send it to UMAC
19468 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019469 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19470 {
19471 wpalMemoryCopy( &halExitUapsdRsp,
19472 pEventData->pEventData,
19473 sizeof(halExitUapsdRsp));
19474
19475 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19476 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19477 }
19478 else
19479 {
19480 halStatus = *((eHalStatus*)pEventData->pEventData);
19481 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19484 // directly instead of the FW WQ.
19485 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19486
19487#ifdef WLAN_PERF
19488 // Increment the BD signature to refresh the fast path BD utilization
19489 pWDICtx->uBdSigSerialNum++;
19490#endif
19491
19492 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019493 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019494
Jeff Johnsone7245742012-09-05 17:12:55 -070019495 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019496}/*WDI_ProcessExitUapsdRsp*/
19497
19498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019499 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019501
19502 @param pWDICtx: pointer to the WLAN DAL context
19503 pEventData: pointer to the event information structure
19504
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 @see
19506 @return Result of the function call
19507*/
19508WDI_Status
19509WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019510(
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 WDI_ControlBlockType* pWDICtx,
19512 WDI_EventInfoType* pEventData
19513)
19514{
19515 WDI_Status wdiStatus;
19516 eHalStatus halStatus;
19517 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19519
19520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 -------------------------------------------------------------------------*/
19523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19524 ( NULL == pEventData->pEventData))
19525 {
19526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 }
19531
19532 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19533
19534 /*-------------------------------------------------------------------------
19535 Extract response and send it to UMAC
19536 -------------------------------------------------------------------------*/
19537 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019539
19540 /*Notify UMAC*/
19541 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19542
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019544}/*WDI_ProcessSetUapsdAcParamsRsp*/
19545
19546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019549
19550 @param pWDICtx: pointer to the WLAN DAL context
19551 pEventData: pointer to the event information structure
19552
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 @see
19554 @return Result of the function call
19555*/
19556WDI_Status
19557WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019558(
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 WDI_ControlBlockType* pWDICtx,
19560 WDI_EventInfoType* pEventData
19561)
19562{
19563 WDI_Status wdiStatus;
19564 eHalStatus halStatus;
19565 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19567
19568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 -------------------------------------------------------------------------*/
19571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19572 ( NULL == pEventData->pEventData))
19573 {
19574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 }
19579
19580 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19581
19582 /*-------------------------------------------------------------------------
19583 Extract response and send it to UMAC
19584 -------------------------------------------------------------------------*/
19585 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019587
19588 /*Notify UMAC*/
19589 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19590
Jeff Johnsone7245742012-09-05 17:12:55 -070019591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019592}/*WDI_ProcessUpdateUapsdParamsRsp*/
19593
19594/**
19595 @brief Process Configure RXP filter Rsp function (called when a
19596 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019597
19598 @param pWDICtx: pointer to the WLAN DAL context
19599 pEventData: pointer to the event information structure
19600
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 @see
19602 @return Result of the function call
19603*/
19604WDI_Status
19605WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019606(
Jeff Johnson295189b2012-06-20 16:38:30 -070019607 WDI_ControlBlockType* pWDICtx,
19608 WDI_EventInfoType* pEventData
19609)
19610{
19611 WDI_Status wdiStatus;
19612 eHalStatus halStatus;
19613 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19615
19616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 -------------------------------------------------------------------------*/
19619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19620 ( NULL == pEventData->pEventData))
19621 {
19622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 }
19627
19628 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19629
19630 /*-------------------------------------------------------------------------
19631 Extract response and send it to UMAC
19632 -------------------------------------------------------------------------*/
19633 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019634 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019635
19636 /*Notify UMAC*/
19637 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19638
Jeff Johnsone7245742012-09-05 17:12:55 -070019639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019640}/*WDI_ProcessConfigureRxpFilterRsp*/
19641
19642/**
19643 @brief Process Set beacon filter Rsp function (called when a
19644 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019645
19646 @param pWDICtx: pointer to the WLAN DAL context
19647 pEventData: pointer to the event information structure
19648
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 @see
19650 @return Result of the function call
19651*/
19652WDI_Status
19653WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019654(
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 WDI_ControlBlockType* pWDICtx,
19656 WDI_EventInfoType* pEventData
19657)
19658{
19659 WDI_Status wdiStatus;
19660 eHalStatus halStatus;
19661 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19663
19664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 -------------------------------------------------------------------------*/
19667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19668 ( NULL == pEventData->pEventData))
19669 {
19670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 }
19675
19676 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19677
19678 /*-------------------------------------------------------------------------
19679 Extract response and send it to UMAC
19680 -------------------------------------------------------------------------*/
19681 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019683
19684 /*Notify UMAC*/
19685 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19686
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019688}/*WDI_ProcessSetBeaconFilterRsp*/
19689
19690/**
19691 @brief Process remove beacon filter Rsp function (called when a
19692 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019693
19694 @param pWDICtx: pointer to the WLAN DAL context
19695 pEventData: pointer to the event information structure
19696
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 @see
19698 @return Result of the function call
19699*/
19700WDI_Status
19701WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019702(
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 WDI_ControlBlockType* pWDICtx,
19704 WDI_EventInfoType* pEventData
19705)
19706{
19707 WDI_Status wdiStatus;
19708 eHalStatus halStatus;
19709 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19711
19712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 -------------------------------------------------------------------------*/
19715 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19716 ( NULL == pEventData->pEventData))
19717 {
19718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 }
19723
19724 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19725
19726 /*-------------------------------------------------------------------------
19727 Extract response and send it to UMAC
19728 -------------------------------------------------------------------------*/
19729 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019731
19732 /*Notify UMAC*/
19733 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19734
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019736}/*WDI_ProcessRemBeaconFilterRsp*/
19737
19738/**
19739 @brief Process set RSSI thresholds Rsp function (called when a
19740 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019741
19742 @param pWDICtx: pointer to the WLAN DAL context
19743 pEventData: pointer to the event information structure
19744
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 @see
19746 @return Result of the function call
19747*/
19748WDI_Status
19749WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019750(
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 WDI_ControlBlockType* pWDICtx,
19752 WDI_EventInfoType* pEventData
19753)
19754{
19755 WDI_Status wdiStatus;
19756 eHalStatus halStatus;
19757 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19759
19760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 -------------------------------------------------------------------------*/
19763 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19764 ( NULL == pEventData->pEventData))
19765 {
19766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 }
19771
19772 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19773
19774 /*-------------------------------------------------------------------------
19775 Extract response and send it to UMAC
19776 -------------------------------------------------------------------------*/
19777 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019779
19780 /*Notify UMAC*/
19781 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19782
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784}/*WDI_ProcessSetRSSIThresoldsRsp*/
19785
19786/**
19787 @brief Process host offload Rsp function (called when a
19788 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019789
19790 @param pWDICtx: pointer to the WLAN DAL context
19791 pEventData: pointer to the event information structure
19792
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 @see
19794 @return Result of the function call
19795*/
19796WDI_Status
19797WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019798(
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 WDI_ControlBlockType* pWDICtx,
19800 WDI_EventInfoType* pEventData
19801)
19802{
19803 WDI_Status wdiStatus;
19804 eHalStatus halStatus;
19805 WDI_HostOffloadCb wdiHostOffloadCb;
19806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19807
19808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 -------------------------------------------------------------------------*/
19811 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19812 ( NULL == pEventData->pEventData))
19813 {
19814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 }
19819
19820 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19821
19822 /*-------------------------------------------------------------------------
19823 Extract response and send it to UMAC
19824 -------------------------------------------------------------------------*/
19825 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019826 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019827
19828 /*Notify UMAC*/
19829 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19830
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019832}/*WDI_ProcessHostOffloadRsp*/
19833
19834/**
19835 @brief Process keep alive Rsp function (called when a
19836 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019837
19838 @param pWDICtx: pointer to the WLAN DAL context
19839 pEventData: pointer to the event information structure
19840
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 @see
19842 @return Result of the function call
19843*/
19844WDI_Status
19845WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019846(
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 WDI_ControlBlockType* pWDICtx,
19848 WDI_EventInfoType* pEventData
19849)
19850{
19851 WDI_Status wdiStatus;
19852 eHalStatus halStatus;
19853 WDI_KeepAliveCb wdiKeepAliveCb;
19854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19856 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19857
19858
19859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 -------------------------------------------------------------------------*/
19862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19863 ( NULL == pEventData->pEventData))
19864 {
19865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019869 }
19870
Jeff Johnsone7245742012-09-05 17:12:55 -070019871 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19872
Jeff Johnson295189b2012-06-20 16:38:30 -070019873 /*-------------------------------------------------------------------------
19874 Extract response and send it to UMAC
19875 -------------------------------------------------------------------------*/
19876 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019877 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019878
19879 /*Notify UMAC*/
19880 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19881
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019883}/*WDI_ProcessKeepAliveRsp*/
19884
19885/**
19886 @brief Process wowl add ptrn Rsp function (called when a
19887 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 @param pWDICtx: pointer to the WLAN DAL context
19890 pEventData: pointer to the event information structure
19891
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 @see
19893 @return Result of the function call
19894*/
19895WDI_Status
19896WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019897(
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 WDI_ControlBlockType* pWDICtx,
19899 WDI_EventInfoType* pEventData
19900)
19901{
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 eHalStatus halStatus;
19903 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019904 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19905 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19906
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19908
19909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 -------------------------------------------------------------------------*/
19912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19913 ( NULL == pEventData->pEventData))
19914 {
19915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 }
19920
19921 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19922
19923 /*-------------------------------------------------------------------------
19924 Extract response and send it to UMAC
19925 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019926 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19927 {
19928 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19929 pEventData->pEventData,
19930 sizeof(halAddWowlBcastPtrRsp));
19931
19932 wdiWowlAddBcPtrRsp.wdiStatus =
19933 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19934 }
19935 else
19936 {
19937 halStatus = *((eHalStatus*)pEventData->pEventData);
19938 wdiWowlAddBcPtrRsp.wdiStatus =
19939 WDI_HAL_2_WDI_STATUS(halStatus);
19940 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019941
19942 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019943 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019944
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019946}/*WDI_ProcessWowlAddBcPtrnRsp*/
19947
19948/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019951
19952 @param pWDICtx: pointer to the WLAN DAL context
19953 pEventData: pointer to the event information structure
19954
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 @see
19956 @return Result of the function call
19957*/
19958WDI_Status
19959WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019960(
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_ControlBlockType* pWDICtx,
19962 WDI_EventInfoType* pEventData
19963)
19964{
Jeff Johnson295189b2012-06-20 16:38:30 -070019965 eHalStatus halStatus;
19966 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019967 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19968 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19970
19971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 -------------------------------------------------------------------------*/
19974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19975 ( NULL == pEventData->pEventData))
19976 {
19977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 }
19982
19983 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19984
19985 /*-------------------------------------------------------------------------
19986 Extract response and send it to UMAC
19987 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019988 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19989 {
19990 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19991 pEventData->pEventData,
19992 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019994 wdiWowlDelBcstPtrRsp.wdiStatus =
19995 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19996 }
19997 else
19998 {
19999 halStatus = *((eHalStatus*)pEventData->pEventData);
20000 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20001 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020003 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020004
Jeff Johnsone7245742012-09-05 17:12:55 -070020005 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020006}/*WDI_ProcessWowlDelBcPtrnRsp*/
20007
20008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020009 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020011
20012 @param pWDICtx: pointer to the WLAN DAL context
20013 pEventData: pointer to the event information structure
20014
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 @see
20016 @return Result of the function call
20017*/
20018WDI_Status
20019WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020020(
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 WDI_ControlBlockType* pWDICtx,
20022 WDI_EventInfoType* pEventData
20023)
20024{
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 eHalStatus halStatus;
20026 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020027 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20028 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20030
20031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 -------------------------------------------------------------------------*/
20034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20035 ( NULL == pEventData->pEventData))
20036 {
20037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 }
20042
20043 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20044
20045 /*-------------------------------------------------------------------------
20046 Extract response and send it to UMAC
20047 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020048 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20049 {
20050 wpalMemoryCopy( &halEnterWowlRspParams,
20051 (wpt_uint8*)pEventData->pEventData,
20052 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020053
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020054 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20055 wdiwowlEnterRsp.status =
20056 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20057 }
20058 else
20059 {
20060 halStatus = *((eHalStatus*)pEventData->pEventData);
20061 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20062 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020063 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020064 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020065
Jeff Johnsone7245742012-09-05 17:12:55 -070020066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020067}/*WDI_ProcessWowlEnterRsp*/
20068
20069/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020072
20073 @param pWDICtx: pointer to the WLAN DAL context
20074 pEventData: pointer to the event information structure
20075
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 @see
20077 @return Result of the function call
20078*/
20079WDI_Status
20080WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020081(
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 WDI_ControlBlockType* pWDICtx,
20083 WDI_EventInfoType* pEventData
20084)
20085{
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 eHalStatus halStatus;
20087 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020088 tHalExitWowlRspParams halExitWowlRspParams;
20089 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20090
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20092
20093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 -------------------------------------------------------------------------*/
20096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20097 ( NULL == pEventData->pEventData))
20098 {
20099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 }
20104
20105 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20106
20107 /*-------------------------------------------------------------------------
20108 Extract response and send it to UMAC
20109 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020110 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20111 {
20112 wpalMemoryCopy( &halExitWowlRspParams,
20113 pEventData->pEventData,
20114 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020115
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020116 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20117 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20118
20119 }
20120 else
20121 {
20122 halStatus = *((eHalStatus*)pEventData->pEventData);
20123 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20124 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020126 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020127
Jeff Johnsone7245742012-09-05 17:12:55 -070020128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020129}/*WDI_ProcessWowlExitRsp*/
20130
20131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 (called when a response is being received over the bus
20134 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020135
20136 @param pWDICtx: pointer to the WLAN DAL context
20137 pEventData: pointer to the event information structure
20138
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 @see
20140 @return Result of the function call
20141*/
20142WDI_Status
20143WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020144(
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 WDI_ControlBlockType* pWDICtx,
20146 WDI_EventInfoType* pEventData
20147)
20148{
20149 WDI_Status wdiStatus;
20150 eHalStatus halStatus;
20151 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20153
20154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 -------------------------------------------------------------------------*/
20157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20158 ( NULL == pEventData->pEventData))
20159 {
20160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 }
20165
20166 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20167
20168 /*-------------------------------------------------------------------------
20169 Extract response and send it to UMAC
20170 -------------------------------------------------------------------------*/
20171 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020173
20174 /*Notify UMAC*/
20175 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20176
Jeff Johnsone7245742012-09-05 17:12:55 -070020177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020178}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20179
20180
20181/**
20182 @brief Process Nv download(called when a response
20183 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020184
20185 @param pWDICtx: pointer to the WLAN DAL context
20186 pEventData: pointer to the event information structure
20187
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 @see
20189 @return Result of the function call
20190*/
20191WDI_Status
20192WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020193(
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 WDI_ControlBlockType* pWDICtx,
20195 WDI_EventInfoType* pEventData
20196)
20197{
20198
20199 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20200 tHalNvImgDownloadRspParams halNvDownloadRsp;
20201 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20202
20203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 -------------------------------------------------------------------------*/
20206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20207 ( NULL == pEventData->pEventData))
20208 {
20209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 }
20214
20215 /*-------------------------------------------------------------------------
20216 Extract response and send it to UMAC
20217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wpalMemoryCopy( &halNvDownloadRsp,
20219 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 sizeof(halNvDownloadRsp));
20221
20222 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20223
20224 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20226 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 {
20228 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 }
20231 else
20232 {
20233 /*Reset the Nv related global information in WDI context information */
20234 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20235 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20236 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20237 /*call WDA callback function for last fragment */
20238 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20239 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20240 }
20241
Jeff Johnsone7245742012-09-05 17:12:55 -070020242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020243}
20244#ifdef WLAN_FEATURE_VOWIFI_11R
20245/**
20246 @brief Process Add TSpec Rsp function (called when a response
20247 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020248
20249 @param pWDICtx: pointer to the WLAN DAL context
20250 pEventData: pointer to the event information structure
20251
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 @see
20253 @return Result of the function call
20254*/
20255WDI_Status
20256WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020257(
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 WDI_ControlBlockType* pWDICtx,
20259 WDI_EventInfoType* pEventData
20260)
20261{
20262 WDI_Status wdiStatus;
20263 tAggrAddTsRspParams aggrAddTsRsp;
20264 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20266
20267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 -------------------------------------------------------------------------*/
20270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20271 ( NULL == pEventData->pEventData))
20272 {
20273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 }
20278
20279 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20280
20281 /*-------------------------------------------------------------------------
20282 Extract response and send it to UMAC
20283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020284 wpalMemoryCopy( &aggrAddTsRsp,
20285 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 sizeof(aggrAddTsRsp));
20287
20288 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
20291 /*Notify UMAC*/
20292 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20293
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295}/*WDI_ProcessAddTSpecRsp*/
20296#endif /* WLAN_FEATURE_VOWIFI_11R */
20297
20298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020301
20302 @param pWDICtx: pointer to the WLAN DAL context
20303 pEventData: pointer to the event information structure
20304
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 @see
20306 @return Result of the function call
20307*/
20308WDI_Status
20309WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020310(
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 WDI_ControlBlockType* pWDICtx,
20312 WDI_EventInfoType* pEventData
20313)
20314{
20315 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20316 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20317 tHalHostResumeRspParams hostResumeRspMsg;
20318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20319
20320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 -------------------------------------------------------------------------*/
20323 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20324 ( NULL == pEventData->pEventData))
20325 {
20326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020327 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 }
20331
20332 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20333
20334 /*-------------------------------------------------------------------------
20335 Extract response and send it to UMAC
20336 -------------------------------------------------------------------------*/
20337
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 (wpt_uint8*)pEventData->pEventData,
20340 sizeof(hostResumeRspMsg));
20341
Jeff Johnsone7245742012-09-05 17:12:55 -070020342 wdiResumeRspParams.wdiStatus =
20343 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020344
20345 /*Notify UMAC*/
20346 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20347
20348 return WDI_STATUS_SUCCESS;
20349}
20350
20351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020352 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020354
20355 @param pWDICtx: pointer to the WLAN DAL context
20356 pEventData: pointer to the event information structure
20357
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 @see
20359 @return Result of the function call
20360*/
20361WDI_Status
20362WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020363(
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 WDI_ControlBlockType* pWDICtx,
20365 WDI_EventInfoType* pEventData
20366)
20367{
20368 WDI_Status wdiStatus;
20369 eHalStatus halStatus;
20370 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20372
20373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 -------------------------------------------------------------------------*/
20376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20377 ( NULL == pEventData->pEventData))
20378 {
20379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020384
20385 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020386
20387 /*-------------------------------------------------------------------------
20388 Extract response and send it to UMAC
20389 -------------------------------------------------------------------------*/
20390 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020392
20393 /*Notify UMAC*/
20394 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20395
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020397}/*WDI_ProcessSetTxPerTrackingRsp*/
20398
20399/*==========================================================================
20400 Indications from HAL
20401 ==========================================================================*/
20402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 indication of this kind is being received over the bus
20405 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020406
20407 @param pWDICtx: pointer to the WLAN DAL context
20408 pEventData: pointer to the event information structure
20409
Jeff Johnson295189b2012-06-20 16:38:30 -070020410 @see
20411 @return Result of the function call
20412*/
20413WDI_Status
20414WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020415(
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 WDI_ControlBlockType* pWDICtx,
20417 WDI_EventInfoType* pEventData
20418)
20419{
20420 WDI_LowLevelIndType wdiInd;
20421 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20423
20424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 -------------------------------------------------------------------------*/
20427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20428 ( NULL == pEventData->pEventData))
20429 {
20430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 }
20435
20436 /*-------------------------------------------------------------------------
20437 Extract indication and send it to UMAC
20438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020439 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20440 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 sizeof(tHalRSSINotification));
20442
20443 /*Fill in the indication parameters*/
20444 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20445 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20446 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20447 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20448 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20449 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20450 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20451 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20452 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20453 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20454 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20455 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20456 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020457 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20458 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
ltimariub77f24b2013-01-24 18:54:33 -080020460 if ( pWDICtx->wdiLowLevelIndCB )
20461 {
20462 /*Notify UMAC of indication*/
20463 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20464 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020465
20466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020467}/*WDI_ProcessLowRSSIInd*/
20468
20469
20470/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020471 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 an indication of this kind is being received over the
20473 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020474
20475 @param pWDICtx: pointer to the WLAN DAL context
20476 pEventData: pointer to the event information structure
20477
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 @see
20479 @return Result of the function call
20480*/
20481WDI_Status
20482WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020483(
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 WDI_ControlBlockType* pWDICtx,
20485 WDI_EventInfoType* pEventData
20486)
20487{
20488 WDI_Status wdiStatus;
20489 eHalStatus halStatus;
20490 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020491 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20493
20494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 -------------------------------------------------------------------------*/
20497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20498 ( NULL == pEventData->pEventData))
20499 {
20500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020505 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 /*-------------------------------------------------------------------------
20507 Extract indication and send it to UMAC
20508 -------------------------------------------------------------------------*/
20509 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20510 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020512
20513 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020515 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20516 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020517 if ( pWDICtx->wdiLowLevelIndCB )
20518 {
20519 /*Notify UMAC*/
20520 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20521 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020522
20523 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524}/*WDI_ProcessMissedBeaconInd*/
20525
20526
20527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 an indication of this kind is being received over the
20530 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020531
20532 @param pWDICtx: pointer to the WLAN DAL context
20533 pEventData: pointer to the event information structure
20534
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 @see
20536 @return Result of the function call
20537*/
20538WDI_Status
20539WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020540(
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 WDI_ControlBlockType* pWDICtx,
20542 WDI_EventInfoType* pEventData
20543)
20544{
20545 WDI_Status wdiStatus;
20546 eHalStatus halStatus;
20547 WDI_LowLevelIndType wdiInd;
20548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20549
20550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 -------------------------------------------------------------------------*/
20553 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20554 ( NULL == pEventData->pEventData))
20555 {
20556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 }
20561
20562 /*-------------------------------------------------------------------------
20563 Extract indication and send it to UMAC
20564 -------------------------------------------------------------------------*/
20565 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20566 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020568
20569 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 /* ! TO DO - fill in from HAL struct:
20572 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20573
ltimariub77f24b2013-01-24 18:54:33 -080020574 if ( pWDICtx->wdiLowLevelIndCB )
20575 {
20576 /*Notify UMAC*/
20577 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20578 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020579
20580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020581}/*WDI_ProcessUnkAddrFrameInd*/
20582
20583
20584/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 indication of this kind is being received over the bus
20587 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020588
20589 @param pWDICtx: pointer to the WLAN DAL context
20590 pEventData: pointer to the event information structure
20591
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 @see
20593 @return Result of the function call
20594*/
20595WDI_Status
20596WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020597(
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 WDI_ControlBlockType* pWDICtx,
20599 WDI_EventInfoType* pEventData
20600)
20601{
20602 WDI_LowLevelIndType wdiInd;
20603 tpSirMicFailureInd pHalMicFailureInd;
20604
20605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20606
20607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020609 -------------------------------------------------------------------------*/
20610 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20611 ( NULL == pEventData->pEventData))
20612 {
20613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020618
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20620 /*-------------------------------------------------------------------------
20621 Extract indication and send it to UMAC
20622 -------------------------------------------------------------------------*/
20623
20624 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20627 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20628 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20629 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20630 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20631 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20632 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20633 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 pHalMicFailureInd->info.keyId;
20640 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20641 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20642 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20643 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020644
20645 if ( pWDICtx->wdiLowLevelIndCB )
20646 {
20647 /*Notify UMAC*/
20648 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20649 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020650
20651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020652}/*WDI_ProcessMicFailureInd*/
20653
20654
20655/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 an indication of this kind is being received over the
20658 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020659
20660 @param pWDICtx: pointer to the WLAN DAL context
20661 pEventData: pointer to the event information structure
20662
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 @see
20664 @return Result of the function call
20665*/
20666WDI_Status
20667WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020668(
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 WDI_ControlBlockType* pWDICtx,
20670 WDI_EventInfoType* pEventData
20671)
20672{
20673 WDI_Status wdiStatus;
20674 eHalStatus halStatus;
20675 WDI_LowLevelIndType wdiInd;
20676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20677
20678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020680 -------------------------------------------------------------------------*/
20681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20682 ( NULL == pEventData->pEventData))
20683 {
20684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 }
20689
20690 /*-------------------------------------------------------------------------
20691 Extract indication and send it to UMAC
20692 -------------------------------------------------------------------------*/
20693
20694 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20695 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020697
20698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20699 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020700
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020702 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20703 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704
ltimariub77f24b2013-01-24 18:54:33 -080020705 if ( pWDICtx->wdiLowLevelIndCB )
20706 {
20707 /*Notify UMAC*/
20708 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020710
20711 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020712}/*WDI_ProcessFatalErrorInd*/
20713
20714/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 an indication of this kind is being received over the
20717 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020718
20719 @param pWDICtx: pointer to the WLAN DAL context
20720 pEventData: pointer to the event information structure
20721
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 @see
20723 @return Result of the function call
20724*/
20725WDI_Status
20726WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020727(
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 WDI_ControlBlockType* pWDICtx,
20729 WDI_EventInfoType* pEventData
20730)
20731{
20732 tDeleteStaContextParams halDelSTACtx;
20733 WDI_LowLevelIndType wdiInd;
20734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20735
20736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 -------------------------------------------------------------------------*/
20739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20740 ( NULL == pEventData->pEventData))
20741 {
20742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020746 }
20747
20748 /*-------------------------------------------------------------------------
20749 Extract indication and send it to UMAC
20750 -------------------------------------------------------------------------*/
20751
20752 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 wpalMemoryCopy( &halDelSTACtx,
20754 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 sizeof(halDelSTACtx));
20756
20757 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020759
20760 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20761 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20762 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20763 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20764
Jeff Johnsone7245742012-09-05 17:12:55 -070020765 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20770 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020771
ltimariub77f24b2013-01-24 18:54:33 -080020772 if ( pWDICtx->wdiLowLevelIndCB )
20773 {
20774 /*Notify UMAC*/
20775 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20776 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020777
20778 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020779}/*WDI_ProcessDelSTAInd*/
20780
20781/**
20782*@brief Process Coex Indication function (called when
20783 an indication of this kind is being received over the
20784 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020785
20786 @param pWDICtx: pointer to the WLAN DAL context
20787 pEventData: pointer to the event information structure
20788
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 @see
20790 @return Result of the function call
20791*/
20792WDI_Status
20793WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020794(
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 WDI_ControlBlockType* pWDICtx,
20796 WDI_EventInfoType* pEventData
20797)
20798{
20799 WDI_LowLevelIndType wdiInd;
20800 tCoexIndMsg halCoexIndMsg;
20801 wpt_uint32 index;
20802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20803
20804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 -------------------------------------------------------------------------*/
20807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20808 ( NULL == pEventData->pEventData ))
20809 {
20810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 }
20815
20816 /*-------------------------------------------------------------------------
20817 Extract indication and send it to UMAC
20818 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20820 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 sizeof(halCoexIndMsg.coexIndParams) );
20822
20823 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 wdiInd.wdiIndicationType = WDI_COEX_IND;
20825 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20827 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020828 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020829 }
20830
20831 // DEBUG
20832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20833 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20835 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20836 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20837 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20838 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020839
ltimariub77f24b2013-01-24 18:54:33 -080020840 if ( pWDICtx->wdiLowLevelIndCB )
20841 {
20842 /*Notify UMAC*/
20843 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20844 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020845
20846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847}/*WDI_ProcessCoexInd*/
20848
20849/**
20850*@brief Process Tx Complete Indication function (called when
20851 an indication of this kind is being received over the
20852 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020853
20854 @param pWDICtx: pointer to the WLAN DAL context
20855 pEventData: pointer to the event information structure
20856
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 @see
20858 @return Result of the function call
20859*/
20860WDI_Status
20861WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020862(
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 WDI_ControlBlockType* pWDICtx,
20864 WDI_EventInfoType* pEventData
20865)
20866{
20867 WDI_LowLevelIndType wdiInd;
20868 tTxComplIndMsg halTxComplIndMsg;
20869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20870
20871 /*-------------------------------------------------------------------------
20872 Sanity check
20873 -------------------------------------------------------------------------*/
20874 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20875 ( NULL == pEventData->pEventData ))
20876 {
20877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 WDI_ASSERT( 0 );
20880 return WDI_STATUS_E_FAILURE;
20881 }
20882
20883 /*-------------------------------------------------------------------------
20884 Extract indication and send it to UMAC
20885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20887 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 sizeof(halTxComplIndMsg.txComplParams) );
20889
20890 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20892 wdiInd.wdiIndicationData.tx_complete_status
20893 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894
ltimariub77f24b2013-01-24 18:54:33 -080020895 if ( pWDICtx->wdiLowLevelIndCB )
20896 {
20897 /*Notify UMAC*/
20898 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20899 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020900
20901 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020902}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020903#ifdef FEATURE_WLAN_TDLS
20904/**
20905*@brief Process TDLS Indication function (called when
20906 an indication of this kind is being received over the
20907 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020908
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020909 @param pWDICtx: pointer to the WLAN DAL context
20910 pEventData: pointer to the event information structure
20911
20912 @see
20913 @return Result of the function call
20914*/
20915WDI_Status
20916WDI_ProcessTdlsInd
20917(
20918 WDI_ControlBlockType* pWDICtx,
20919 WDI_EventInfoType* pEventData
20920)
20921{
20922 WDI_LowLevelIndType wdiInd;
20923 tTdlsIndMsg halTdlsIndMsg;
20924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20925
20926 /*-------------------------------------------------------------------------
20927 Sanity check
20928 -------------------------------------------------------------------------*/
20929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20930 ( NULL == pEventData->pEventData ))
20931 {
20932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20933 "%s: Invalid parameters", __func__);
20934 WDI_ASSERT( 0 );
20935 return WDI_STATUS_E_FAILURE;
20936 }
20937
20938 /*-------------------------------------------------------------------------
20939 Extract indication and send it to UMAC
20940 -------------------------------------------------------------------------*/
20941 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20942 pEventData->pEventData,
20943 sizeof(halTdlsIndMsg.tdlsIndParams) );
20944
20945 /*Fill in the indication parameters*/
20946 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20947
20948 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20949 = halTdlsIndMsg.tdlsIndParams.status;
20950
20951 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20952 = halTdlsIndMsg.tdlsIndParams.staIdx;
20953
20954 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20955 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20956
20957 /*Notify UMAC*/
20958 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20959
20960 return WDI_STATUS_SUCCESS;
20961}/*WDI_ProcessTdlsInd*/
20962#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020963/**
Viral Modid86bde22012-12-10 13:09:21 -080020964*@brief Process Noa Start Indication function (called when
20965 an indication of this kind is being received over the
20966 bus from HAL)
20967
20968 @param pWDICtx: pointer to the WLAN DAL context
20969 pEventData: pointer to the event information structure
20970
20971 @see
20972 @return Result of the function call
20973*/
20974WDI_Status
20975WDI_ProcessP2pNoaStartInd
20976(
20977 WDI_ControlBlockType* pWDICtx,
20978 WDI_EventInfoType* pEventData
20979)
20980{
20981 WDI_LowLevelIndType wdiInd;
20982 tNoaStartIndMsg halNoaStartIndMsg;
20983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20984
20985 /*-------------------------------------------------------------------------
20986 Sanity check
20987 -------------------------------------------------------------------------*/
20988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20989 ( NULL == pEventData->pEventData ))
20990 {
20991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20992 "%s: Invalid parameters", __func__);
20993 WDI_ASSERT( 0 );
20994 return WDI_STATUS_E_FAILURE;
20995 }
20996
20997 /*-------------------------------------------------------------------------
20998 Extract indication and send it to UMAC
20999 -------------------------------------------------------------------------*/
21000 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21001 pEventData->pEventData,
21002 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21003
21004 /*Fill in the indication parameters*/
21005 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21006
21007 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21008 = halNoaStartIndMsg.noaStartIndParams.status;
21009
21010 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21011 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21012
21013 /*Notify UMAC*/
21014 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21015
21016 return WDI_STATUS_SUCCESS;
21017}/*WDI_ProcessNoaAttrInd*/
21018
21019/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021020*@brief Process Noa Attr Indication function (called when
21021 an indication of this kind is being received over the
21022 bus from HAL)
21023
21024 @param pWDICtx: pointer to the WLAN DAL context
21025 pEventData: pointer to the event information structure
21026
21027 @see
21028 @return Result of the function call
21029*/
21030WDI_Status
21031WDI_ProcessP2pNoaAttrInd
21032(
21033 WDI_ControlBlockType* pWDICtx,
21034 WDI_EventInfoType* pEventData
21035)
21036{
21037 WDI_LowLevelIndType wdiInd;
21038 tNoaAttrIndMsg halNoaAttrIndMsg;
21039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21040
21041 /*-------------------------------------------------------------------------
21042 Sanity check
21043 -------------------------------------------------------------------------*/
21044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21045 ( NULL == pEventData->pEventData ))
21046 {
21047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 WDI_ASSERT( 0 );
21050 return WDI_STATUS_E_FAILURE;
21051 }
21052
21053 /*-------------------------------------------------------------------------
21054 Extract indication and send it to UMAC
21055 -------------------------------------------------------------------------*/
21056 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21057 pEventData->pEventData,
21058 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21059
21060 /*Fill in the indication parameters*/
21061 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021062
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21064 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021065
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21067 = halNoaAttrIndMsg.noaAttrIndParams.index;
21068 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21069 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21070 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21071 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021072
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21074 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21075 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21076 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21077 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21078 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21079 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21080 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021081
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21083 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21084 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21085 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21086 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21087 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21088 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21089 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21090
ltimariub77f24b2013-01-24 18:54:33 -080021091 if ( pWDICtx->wdiLowLevelIndCB )
21092 {
21093 /*Notify UMAC*/
21094 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021096
21097 return WDI_STATUS_SUCCESS;
21098}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021099
21100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021101 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 an indication of this kind is being received over the
21103 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021104
21105 @param pWDICtx: pointer to the WLAN DAL context
21106 pEventData: pointer to the event information structure
21107
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 @see
21109 @return Result of the function call
21110*/
21111WDI_Status
21112WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021113(
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 WDI_ControlBlockType* pWDICtx,
21115 WDI_EventInfoType* pEventData
21116)
21117{
21118 WDI_LowLevelIndType wdiInd;
21119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021120
Jeff Johnson295189b2012-06-20 16:38:30 -070021121 /*-------------------------------------------------------------------------
21122 Extract indication and send it to UMAC
21123 -------------------------------------------------------------------------*/
21124 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21126
ltimariub77f24b2013-01-24 18:54:33 -080021127 if ( pWDICtx->wdiLowLevelIndCB )
21128 {
21129 /*Notify UMAC*/
21130 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021132
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134}/*WDI_ProcessTxPerHitInd*/
21135
Jeff Johnson295189b2012-06-20 16:38:30 -070021136/**
Yue Mab9c86f42013-08-14 15:59:08 -070021137 @brief Process Periodic Tx Pattern Fw Indication function
21138
21139 @param pWDICtx: pointer to the WLAN DAL context
21140 pEventData: pointer to the event information structure
21141
21142 @see
21143 @return Result of the function call
21144*/
21145WDI_Status
21146WDI_ProcessPeriodicTxPtrnFwInd
21147(
21148 WDI_ControlBlockType* pWDICtx,
21149 WDI_EventInfoType* pEventData
21150)
21151{
21152 WDI_LowLevelIndType wdiInd;
21153
21154 /*-------------------------------------------------------------------------
21155 Sanity check
21156 -------------------------------------------------------------------------*/
21157 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21158 (NULL == pEventData->pEventData))
21159 {
21160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21161 "%s: Invalid parameters", __func__);
21162 WDI_ASSERT(0);
21163 return WDI_STATUS_E_FAILURE;
21164 }
21165
21166 /*-------------------------------------------------------------------------
21167 Extract indication and send it to UMAC
21168 -------------------------------------------------------------------------*/
21169 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21170 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21171 sizeof(tHalPeriodicTxPtrnFwInd));
21172
21173 if (pWDICtx->wdiLowLevelIndCB)
21174 {
21175 /*Notify UMAC*/
21176 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21177 }
21178
21179 return WDI_STATUS_SUCCESS;
21180}
21181
21182/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 @brief WDI_ProcessFTMCommandReq
21184 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021185
21186 @param pWDICtx: pointer to the WLAN DAL context
21187 pEventData: pointer to the event information structure
21188
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 @see
21190 @return Result of the function call
21191*/
21192WDI_Status
21193WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021194(
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 WDI_ControlBlockType* pWDICtx,
21196 WDI_EventInfoType* pEventData
21197)
21198{
21199 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21200 wpt_uint8 *ftmCommandBuffer = NULL;
21201 wpt_uint16 dataOffset;
21202 wpt_uint16 bufferSize;
21203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 -------------------------------------------------------------------------*/
21206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21207 ( NULL == pEventData->pEventData))
21208
21209 {
21210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021214 }
21215
21216 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21217
21218 /* Get MSG Buffer */
21219 WDI_GetMessageBuffer(pWDICtx,
21220 WDI_FTM_CMD_REQ,
21221 ftmCommandReq->bodyLength,
21222 &ftmCommandBuffer,
21223 &dataOffset,
21224 &bufferSize);
21225
21226 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21227 ftmCommandReq->FTMCommandBody,
21228 ftmCommandReq->bodyLength);
21229
21230 /* Send MSG */
21231 return WDI_SendMsg(pWDICtx,
21232 ftmCommandBuffer,
21233 bufferSize,
21234 pEventData->pCBfnc,
21235 pEventData->pUserData,
21236 WDI_FTM_CMD_RESP);
21237}
21238
21239/**
21240 @brief WDI_ProcessFTMCommandRsp
21241 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021242
21243 @param pWDICtx: pointer to the WLAN DAL context
21244 pEventData: pointer to the event information structure
21245
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 @see
21247 @return Result of the function call
21248*/
21249WDI_Status
21250WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021251(
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 WDI_ControlBlockType* pWDICtx,
21253 WDI_EventInfoType* pEventData
21254)
21255{
21256 WDI_FTMCommandRspCb ftmCMDRspCb;
21257 tProcessPttRspParams *ftmCMDRspData = NULL;
21258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21259
21260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 -------------------------------------------------------------------------*/
21263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21264 ( NULL == pEventData->pEventData))
21265 {
21266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 }
21271
21272 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21273
21274 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21275
Jeff Johnsone7245742012-09-05 17:12:55 -070021276 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21277 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21279
21280 /*Notify UMAC*/
21281 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21282
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021284}
Jeff Johnson295189b2012-06-20 16:38:30 -070021285/**
21286 @brief WDI_ProcessHalDumpCmdReq
21287 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021288
21289 @param pWDICtx: pointer to the WLAN DAL context
21290 pEventData: pointer to the event information structure
21291
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 @see
21293 @return Result of the function call
21294*/
21295WDI_Status
21296WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021297(
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 WDI_ControlBlockType* pWDICtx,
21299 WDI_EventInfoType* pEventData
21300)
21301{
21302 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21303 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21304 wpt_uint16 usDataOffset = 0;
21305 wpt_uint16 usSendSize = 0;
21306 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021308
21309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 -------------------------------------------------------------------------*/
21312 if (( NULL == pEventData ) ||
21313 ( NULL == pEventData->pEventData) ||
21314 ( NULL == pEventData->pCBfnc ))
21315 {
21316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 }
21321
21322 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21323 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21324
21325 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021330 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021331 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021336
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 /*-----------------------------------------------------------------------
21338 Get message buffer
21339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21342 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21345 {
21346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021347 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021348 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 }
21352
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 wpalMemoryCopy( pSendBuffer+usDataOffset,
21354 &halDumpCmdReqMsg.dumpCmdReqParams,
21355 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021356
21357 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021359
21360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021361 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21364 wdiHALDumpCmdRspCb, pEventData->pUserData,
21365 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021366}
21367
21368/**
21369 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021370 Process hal Dump Command Response from HAL, simply route to HDD
21371
21372 @param pWDICtx: pointer to the WLAN DAL context
21373 pEventData: pointer to the event information structure
21374
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 @see
21376 @return Result of the function call
21377*/
21378WDI_Status
21379WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021380(
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 WDI_ControlBlockType* pWDICtx,
21382 WDI_EventInfoType* pEventData
21383)
21384{
21385 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021386 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21388
21389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 -------------------------------------------------------------------------*/
21392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21393 ( NULL == pEventData->pEventData))
21394 {
21395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021399 }
21400
Jeff Johnsone7245742012-09-05 17:12:55 -070021401 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021402
21403 /*Initialize the WDI Response structure */
21404 wdiHALDumpCmdRsp.usBufferLen = 0;
21405 wdiHALDumpCmdRsp.pBuffer = NULL;
21406
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021407 wpalMemoryCopy( &halDumpCmdRspParams,
21408 pEventData->pEventData,
21409 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021410
21411 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021412 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021413
21414 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021415 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 {
21417 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021418 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21419 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21420
21421 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21422 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021423 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021425
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 /*Notify UMAC*/
21427 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21428
21429 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21430 {
21431 /* Free the allocated buffer */
21432 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21433 }
21434 return WDI_STATUS_SUCCESS;
21435}
21436
21437/*==========================================================================
21438 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021439
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021442==========================================================================*/
21443/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 when it wishes to send up a notification like the ones
21446 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021447
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021449
21450 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 wctsNotifyCBData: the callback data of the user
21453
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021455
21456 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021457*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021458void
Jeff Johnson295189b2012-06-20 16:38:30 -070021459WDI_NotifyMsgCTSCB
21460(
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 WCTS_NotifyEventType wctsEvent,
21463 void* wctsNotifyCBData
21464)
21465{
Jeff Johnsone7245742012-09-05 17:12:55 -070021466 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21468
21469 if (NULL == pWDICtx )
21470 {
21471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 }
21476
21477 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21478 {
21479 /* callback presumably occurred after close */
21480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021481 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 }
21484
21485 if ( WCTS_EVENT_OPEN == wctsEvent )
21486 {
21487 /*Flag must be set atomically as it is checked from incoming request
21488 functions*/
21489 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021491
21492 /*Nothing to do - so try to dequeue any pending request that may have
21493 occurred while we were trying to establish this*/
21494 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 {
21499 /*Flag must be set atomically as it is checked from incoming request
21500 functions*/
21501 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021503
21504 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 wpalMutexRelease(&pWDICtx->wptMutex);
21507
21508 /*Notify that the Control Channel is closed */
21509 wpalEventSet(&pWDICtx->wctsActionEvent);
21510 }
21511
21512}/*WDI_NotifyMsgCTSCB*/
21513
21514
21515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 when it wishes to send up a packet received over the
21518 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021519
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021521
21522 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 pMsg: the packet
21524 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 wctsRxMsgCBData: the callback data of the user
21526
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021528
21529 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021530*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021531void
21532WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021533(
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 void* pMsg,
21536 wpt_uint32 uLen,
21537 void* wctsRxMsgCBData
21538)
21539{
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 tHalMsgHeader *pHalMsgHeader;
21541 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21544
21545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 ( uLen < sizeof(tHalMsgHeader)))
21550 {
21551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 }
21556
21557 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21558 {
21559 /* callback presumably occurred after close */
21560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021561 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 }
21564
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 context - so no serialization is necessary here
21567 ! - revisit this assumption */
21568
21569 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21570
21571 if ( uLen != pHalMsgHeader->msgLen )
21572 {
21573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21574 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021576 wpalWlanReload();
21577
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 }
21580
21581 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21582
21583 /*The message itself starts after the header*/
21584 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21585 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21586 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21587 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21588
21589
21590 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21591 {
21592 /*Stop the timer as the response was received */
21593 /*!UT - check for potential race conditions between stop and response */
21594 wpalTimerStop(&pWDICtx->wptResponseTimer);
21595 }
21596 /* Check if we receive a response message which is not expected */
21597 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21598 {
21599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21600 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21601 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21604 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021605
21606 if (gWDICb.bEnableSSR == false)
21607 {
21608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21609 "SSR is not enabled on WDI timeout");
21610 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21611 return;
21612 }
21613 wpalWcnssResetIntr();
21614 /* if this timer fires, it means Riva did not receive the FIQ */
21615 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21616
Jeff Johnson295189b2012-06-20 16:38:30 -070021617 return;
21618 }
21619
21620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21621 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21622
21623 /*Post response event to the state machine*/
21624 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21625
21626}/*WDI_RXMsgCTSCB*/
21627
21628
21629/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021631========================================================================*/
21632
21633/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021635 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021636
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 @param pWDICtx - pointer to the control block
21638
21639 @return Result of the function call
21640*/
21641WPT_INLINE WDI_Status
21642WDI_CleanCB
21643(
21644 WDI_ControlBlockType* pWDICtx
21645)
21646{
21647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21648
21649 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021651
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21654 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21655
21656 WDI_ResetAssocSessions( pWDICtx );
21657
21658 return WDI_STATUS_SUCCESS;
21659}/*WDI_CleanCB*/
21660
21661
21662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021664
Jeff Johnsone7245742012-09-05 17:12:55 -070021665
21666 @param pWDICtx: pointer to the WLAN DAL context
21667 pEventData: pointer to the event information structure
21668
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 @see
21670 @return Result of the function call
21671*/
21672WPT_INLINE WDI_Status
21673WDI_ProcessRequest
21674(
21675 WDI_ControlBlockType* pWDICtx,
21676 WDI_EventInfoType* pEventData
21677)
21678{
21679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21680
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 already checked these pointers*/
21683
21684 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21685 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021688 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 WDI_getReqMsgString(pEventData->wdiRequest),
21690 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21691 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21692 }
21693 else
21694 {
21695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 pEventData->wdiRequest);
21698 return WDI_STATUS_E_NOT_IMPLEMENT;
21699 }
21700}/*WDI_ProcessRequest*/
21701
21702
21703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 prefixes it with a send message header
21707
21708 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 wdiReqType: type of the request being sent
21710 uBufferLen: message buffer len
21711 pMsgBuffer: resulting allocated buffer
21712 pusDataOffset: offset in the buffer where the caller
21713 can start copying its message data
21714 puBufferSize: the resulting buffer size (offset+buff
21715 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021716
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 @see
21718 @return Result of the function call
21719*/
21720WDI_Status
21721WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021722(
21723 WDI_ControlBlockType* pWDICtx,
21724 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021726 wpt_uint8** pMsgBuffer,
21727 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 wpt_uint16* pusBufferSize
21729)
21730{
21731 tHalMsgHeader halMsgHeader;
21732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21733
Jeff Johnsone7245742012-09-05 17:12:55 -070021734 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 again*/
21736
21737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021740 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21742 if ( NULL == *pMsgBuffer )
21743 {
21744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21745 "Unable to allocate message buffer for req %s (%d)",
21746 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 }
21751
21752 /*-------------------------------------------------------------------------
21753 Fill in the message header
21754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21756 /* Fill msgVersion */
21757#ifdef WLAN_FEATURE_11AC
21758 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021759 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 else
21761#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021762 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21765 *pusDataOffset = sizeof(halMsgHeader);
21766 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21767
21768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769}/*WDI_GetMessageBuffer*/
21770
21771
21772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021773 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021775 the CB
21776
21777 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021779
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 usSendSize size of the buffer to be sent
21781 pRspCb: response callback - save in the WDI
21782 CB
21783 pUserData: user data associated with the
21784 callback
21785 wdiExpectedResponse: the code of the response that is
21786 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021787
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 @see
21789 @return Result of the function call
21790*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021791WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021792WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021793(
21794 WDI_ControlBlockType* pWDICtx,
21795 wpt_uint8* pSendBuffer,
21796 wpt_uint32 usSendSize,
21797 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021798 void* pUserData,
21799 WDI_ResponseEnumType wdiExpectedResponse
21800)
21801{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021802 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021803 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21805
21806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021807 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 ------------------------------------------------------------------------*/
21809 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 pWDICtx->pfncRspCB = pRspCb;
21811 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021812
21813 /*-----------------------------------------------------------------------
21814 Call the CTS to send this message over - free message afterwards
21815 - notify transport failure
21816 Note: CTS is reponsible for freeing the message buffer.
21817 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021818 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21819 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21820 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021823 "Failed to send message with expected response %s (%d)"
21824 " over the bus - catastrophic failure",
21825 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21826 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021827
Jeff Johnsond13512a2012-07-17 11:42:19 -070021828 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021830 else
21831 {
21832 /* even when message was placed in CTS deferred Q, we will treat it
21833 success but log this info
21834 */
21835 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21836 {
21837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21838 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21839 "response %s (%d)",
21840 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21841 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021842 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021843 }
21844 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021845
Jeff Johnsond13512a2012-07-17 11:42:19 -070021846 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 if ( NULL != pWDICtx->wdiReqStatusCB )
21848 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021849 /*Inform originator whether request went through or not*/
21850 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21851 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 pWDICtx->wdiReqStatusCB = NULL;
21853 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021854 callback(wdiStatus, callbackContext);
21855
21856 /*For WDI requests which have registered a request callback,
21857 inform the WDA caller of the same via setting the return value
21858 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21859 end up repeating the functonality in the req callback for the
21860 WDI_STATUS_E_FAILURE case*/
21861 if (wdiStatus == WDI_STATUS_E_FAILURE)
21862 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021863 }
21864
Jeff Johnsond13512a2012-07-17 11:42:19 -070021865 if ( wdiStatus == WDI_STATUS_SUCCESS )
21866 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021867 /*Start timer for the expected response */
21868 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021869
21870 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021871 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021872 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021873 }
21874 else
21875 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021876 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021877 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21878 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021879
Jeff Johnsond13512a2012-07-17 11:42:19 -070021880 return wdiStatus;
21881
Jeff Johnson295189b2012-06-20 16:38:30 -070021882}/*WDI_SendMsg*/
21883
21884
21885
21886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 the bus using the control transport and saves some info
21889 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021890
21891 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 pSendBuffer: buffer to be sent
21893 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021894
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 @see
21896 @return Result of the function call
21897*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021898WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021899WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021900(
21901 WDI_ControlBlockType* pWDICtx,
21902 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 wpt_uint32 usSendSize
21904)
21905{
21906 wpt_uint32 uStatus ;
21907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21908
21909 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 Note: CTS is reponsible for freeing the message buffer.
21912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 (void*)pSendBuffer, usSendSize );
21915
21916 /*Inform Upper MAC about the outcome of the request*/
21917 if ( NULL != pWDICtx->wdiReqStatusCB )
21918 {
21919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21920 "Send indication status : %d", uStatus);
21921
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021922 /* even if CTS placed indication into its deferred Q, we treat it
21923 * as success and let CTS drain its queue as per smd interrupt to CTS
21924 */
21925 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 -070021926 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 }
21928
21929 /*If sending of the message failed - it is considered catastrophic and
21930 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021931 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21932 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21933
Jeff Johnson295189b2012-06-20 16:38:30 -070021934 {
21935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021937
21938 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21939 return WDI_STATUS_E_FAILURE;
21940 }
21941
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021943}/*WDI_SendIndication*/
21944
21945
21946/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 @brief WDI_DetectedDeviceError - called internally by DAL when
21948 it has detected a failure in the device
21949
21950 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 usErrorCode: error code detected by WDI or received
21952 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021953
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021955 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021956*/
21957void
21958WDI_DetectedDeviceError
21959(
21960 WDI_ControlBlockType* pWDICtx,
21961 wpt_uint16 usErrorCode
21962)
21963{
21964 WDI_LowLevelIndType wdiInd;
21965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21966
21967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21968 "Device Error detected code: %d - transitioning to stopped state",
21969 usErrorCode);
21970
Katya Nigamf02ad012014-05-05 16:12:49 +053021971 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21972
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 wpalMutexAcquire(&pWDICtx->wptMutex);
21974
21975 WDI_STATableStop(pWDICtx);
21976
21977 WDI_ResetAssocSessions(pWDICtx);
21978
21979 /*Set the expected state transition to stopped - because the device
21980 experienced a failure*/
21981 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21982
21983 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021985
Jeff Johnsone7245742012-09-05 17:12:55 -070021986 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021987
21988 /*TO DO: - there should be an attempt to reset the device here*/
21989
21990 wpalMutexRelease(&pWDICtx->wptMutex);
21991
21992 /*------------------------------------------------------------------------
21993 Notify UMAC if a handler is registered
21994 ------------------------------------------------------------------------*/
21995 if (pWDICtx->wdiLowLevelIndCB)
21996 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21998 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999
22000 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22001 }
22002}/*WDI_DetectedDeviceError*/
22003
22004/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 we started on send message has expire - this should
22007 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022008 reply - trigger catastrophic failure
22009 @param
22010
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022012
22013 @see
22014 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022015*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022016void
Jeff Johnson295189b2012-06-20 16:38:30 -070022017WDI_ResponseTimerCB
22018(
22019 void *pUserData
22020)
22021{
22022 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22024
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022025 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 }
22032
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022033 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022034 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022035 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022036
22037 /* If response timer is running at this time that means this timer
22038 * event is not for the last request but rather last-to-last request and
22039 * this timer event has come after we recevied respone for last-to-last
22040 * message
22041 */
22042 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22043 {
22044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22045 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022046 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022047 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22049 "uArchTimeStampTmrStart: %llu seconds, "
22050 "uArchTimeStampTmrExp: %llu seconds",
22051 pWDICtx->uArchTimeStampRspTmrStart,
22052 pWDICtx->uArchTimeStampRspTmrExp);
22053
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022054 return;
22055 }
22056
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022057 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 {
22059
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022061 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022062 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022064 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22065 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22067 "uArchTimeStampTmrStart: %llu seconds, "
22068 "uArchTimeStampTmrExp: %llu seconds",
22069 pWDICtx->uArchTimeStampRspTmrStart,
22070 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022071
22072 /* WDI timeout means Riva is not responding or SMD communication to Riva
22073 * is not happening. The only possible way to recover from this error
22074 * is to initiate SSR from APPS.
22075 * There is also an option to re-enable wifi, which will eventually
22076 * trigger SSR
22077 */
22078 if (gWDICb.bEnableSSR == false)
22079 {
22080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22081 "SSR is not enabled on WDI timeout");
22082 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22083 return;
22084 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022085#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022086 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022087 if(wpalIsWDresetInProgress())
22088 {
22089 wpalDevicePanic();
22090 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022091 /* if this timer fires, it means Riva did not receive the FIQ */
22092 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022093#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022094 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22095 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 }
22098 else
22099 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022101 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022102 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022103 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22104 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22106 "uArchTimeStampTmrStart: %llu seconds, "
22107 "uArchTimeStampTmrExp: %llu seconds",
22108 pWDICtx->uArchTimeStampRspTmrStart,
22109 pWDICtx->uArchTimeStampRspTmrExp);
22110
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 }
22112
22113 return;
22114
22115}/*WDI_ResponseTimerCB*/
22116
22117
22118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022120
Jeff Johnsone7245742012-09-05 17:12:55 -070022121
22122 @param pWDICtx: pointer to the WLAN DAL context
22123 pEventData: pointer to the event information structure
22124
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 @see
22126 @return Result of the function call
22127*/
22128WPT_INLINE WDI_Status
22129WDI_ProcessResponse
22130(
22131 WDI_ControlBlockType* pWDICtx,
22132 WDI_EventInfoType* pEventData
22133)
22134{
22135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22136
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 already checked these pointers
22139 ! - revisit this assumption */
22140 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22141 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022144 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 WDI_getRespMsgString(pEventData->wdiResponse),
22146 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22147 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22148 }
22149 else
22150 {
22151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022152 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022153 pEventData->wdiResponse);
22154 return WDI_STATUS_E_NOT_IMPLEMENT;
22155 }
22156}/*WDI_ProcessResponse*/
22157
22158
22159/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022161=========================================================================*/
22162
22163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 @brief Utility function used by the DAL Core to help queue a
22165 request that cannot be processed right away.
22166 @param
22167
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 pWDICtx: - pointer to the WDI control block
22169 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022170 queued
22171
22172 @see
22173 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022174*/
22175WDI_Status
22176WDI_QueuePendingReq
22177(
22178 WDI_ControlBlockType* pWDICtx,
22179 WDI_EventInfoType* pEventData
22180)
22181{
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22186
22187 if ( NULL == pEventDataQueue )
22188 {
22189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 WDI_ASSERT(0);
22192 return WDI_STATUS_MEM_FAILURE;
22193 }
22194
22195 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22196 pEventDataQueue->pUserData = pEventData->pUserData;
22197 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22198 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022200
22201 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22202 {
22203 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022204
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 if ( NULL == pEventInfo )
22206 {
22207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022208 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 WDI_ASSERT(0);
22210 wpalMemoryFree(pEventDataQueue);
22211 return WDI_STATUS_MEM_FAILURE;
22212 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022213
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22215
22216 }
22217 pEventDataQueue->pEventData = pEventInfo;
22218
22219 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022220 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022221
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022222 if (eWLAN_PAL_STATUS_E_FAILURE ==
22223 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22224 {
22225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22226 "pEventDataQueue wpal_list_insert_back failed");
22227 WDI_ASSERT(0);
22228 wpalMemoryFree(pEventDataQueue);
22229 wpalMemoryFree(pEventInfo);
22230 return WDI_STATUS_MEM_FAILURE;
22231 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022232
22233 return WDI_STATUS_SUCCESS;
22234}/*WDI_QueuePendingReq*/
22235
22236/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 @param
22240
22241 pMsg - pointer to the message
22242
22243 @see
22244 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022245*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022246void
Jeff Johnson295189b2012-06-20 16:38:30 -070022247WDI_PALCtrlMsgCB
22248(
22249 wpt_msg *pMsg
22250)
22251{
22252 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 WDI_ControlBlockType* pWDICtx = NULL;
22254 WDI_Status wdiStatus;
22255 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 void* pUserData;
22257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22258
22259 if (( NULL == pMsg )||
22260 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22261 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22262 {
22263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022266 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 }
22268
22269 /*Transition back to the state that we had before serialization
22270 - serialization transitions us to BUSY to stop any incomming requests
22271 ! TO DO L: possible race condition here if a request comes in between the
22272 state transition and the post function*/
22273
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022275
22276 /*-----------------------------------------------------------------------
22277 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 -----------------------------------------------------------------------*/
22280 switch ( pEventData->wdiRequest )
22281 {
22282
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22285 break;
22286
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 case WDI_NV_DOWNLOAD_REQ:
22288 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22289 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22290 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22291 {
22292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022293 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22295 }
22296 else
22297 {
22298 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22299 }
22300
22301 break;
22302
22303 default:
22304 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22305 break;
22306 }/*switch ( pEventData->wdiRequest )*/
22307
22308 if ( WDI_STATUS_SUCCESS != wdiStatus )
22309 {
22310 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22311
22312 if ( NULL != pfnReqStatusCB )
22313 {
22314 /*Fail the request*/
22315 pfnReqStatusCB( wdiStatus, pUserData);
22316 }
22317 }
22318
22319 /* Free data - that was allocated when queueing*/
22320 if( pEventData != NULL )
22321 {
22322 if( pEventData->pEventData != NULL )
22323 {
22324 wpalMemoryFree(pEventData->pEventData);
22325 }
22326 wpalMemoryFree(pEventData);
22327 }
22328
22329 if( pMsg != NULL )
22330 {
22331 wpalMemoryFree(pMsg);
22332 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022333
Jeff Johnson295189b2012-06-20 16:38:30 -070022334}/*WDI_PALCtrlMsgCB*/
22335
22336/**
22337 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 and schedule for execution a pending request
22339 @param
22340
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 pWDICtx: - pointer to the WDI control block
22342 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 queued
22344
22345 @see
22346 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022347*/
22348WDI_Status
22349WDI_DequeuePendingReq
22350(
22351 WDI_ControlBlockType* pWDICtx
22352)
22353{
Jeff Johnsone7245742012-09-05 17:12:55 -070022354 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22358
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022360
22361 if ( NULL == pNode )
22362 {
22363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 return WDI_STATUS_SUCCESS;
22366 }
22367
22368 /*The node actually points to the 1st element inside the Event Data struct -
22369 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022371
22372 /*Serialize processing in the control thread
22373 !TO DO: - check to see if these are all the messages params that need
22374 to be filled in*/
22375 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22376
22377 if ( NULL == palMsg )
22378 {
22379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 palMsg->callback = WDI_PALCtrlMsgCB;
22386 palMsg->ptr = pEventData;
22387
22388 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022390 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022391
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 /*Transition back to BUSY as we need to handle a queued request*/
22393 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022394
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22396
22397 return WDI_STATUS_PENDING;
22398}/*WDI_DequeuePendingReq*/
22399
22400
22401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 away.- The assoc requests will be queued by BSSID
22405 @param
22406
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 pWDICtx: - pointer to the WDI control block
22408 pEventData: pointer to the evnt info that needs to be queued
22409 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022410
22411 @see
22412 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022413*/
22414WDI_Status
22415WDI_QueueNewAssocRequest
22416(
22417 WDI_ControlBlockType* pWDICtx,
22418 WDI_EventInfoType* pEventData,
22419 wpt_macAddr macBSSID
22420)
22421{
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 wpt_uint8 i;
22423 WDI_BSSSessionType* pSession = NULL;
22424 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 void* pEventInfo;
22427 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022429
Jeff Johnsone7245742012-09-05 17:12:55 -070022430
22431 /*------------------------------------------------------------------------
22432 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 ------------------------------------------------------------------------*/
22434 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22435 {
22436 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22437 {
22438 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 pSession = &pWDICtx->aBSSSessions[i];
22440 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 }
22442 }
22443
22444 if ( i >= WDI_MAX_BSS_SESSIONS )
22445 {
22446 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022449
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 /*------------------------------------------------------------------------
22451 Fill in the BSSID for this session and set the usage flag
22452 ------------------------------------------------------------------------*/
22453 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022455
22456 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 ------------------------------------------------------------------------*/
22459 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22460 if ( NULL == pEventDataQueue )
22461 {
22462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022463 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 WDI_ASSERT(0);
22465 return WDI_STATUS_MEM_FAILURE;
22466 }
22467
22468 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22469 if ( NULL == pSessionIdElement )
22470 {
22471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022472 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 WDI_ASSERT(0);
22474 wpalMemoryFree(pEventDataQueue);
22475 return WDI_STATUS_MEM_FAILURE;
22476 }
22477
22478 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22479 if ( NULL == pEventInfo )
22480 {
22481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022482 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 WDI_ASSERT(0);
22484 wpalMemoryFree(pSessionIdElement);
22485 wpalMemoryFree(pEventDataQueue);
22486 return WDI_STATUS_MEM_FAILURE;
22487 }
22488
22489 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22490 pEventDataQueue->pUserData = pEventData->pUserData;
22491 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22492 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494
22495 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22496 pEventDataQueue->pEventData = pEventInfo;
22497
22498 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500
22501 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022504 if (eWLAN_PAL_STATUS_E_FAILURE ==
22505 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22506 {
22507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22508 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22509 WDI_ASSERT(0);
22510 wpalMemoryFree(pSessionIdElement);
22511 wpalMemoryFree(pEventDataQueue);
22512 wpalMemoryFree(pEventInfo);
22513 return WDI_STATUS_MEM_FAILURE;
22514 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022515
22516 /*We need to maintain a separate list that keeps track of the order in which
22517 the new assoc requests are being queued such that we can start processing
22518 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 pSessionIdElement->ucIndex = i;
22520 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521
22522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22523 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022524 if (eWLAN_PAL_STATUS_E_FAILURE ==
22525 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22526 {
22527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22528 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22529 WDI_ASSERT(0);
22530 wpalMemoryFree(pSessionIdElement);
22531 wpalMemoryFree(pEventDataQueue);
22532 wpalMemoryFree(pEventInfo);
22533 return WDI_STATUS_MEM_FAILURE;
22534 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022535
22536 /*Return pending as this is what the status of the request is since it has
22537 been queued*/
22538 return WDI_STATUS_PENDING;
22539}/*WDI_QueueNewAssocRequest*/
22540
22541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 away.- The assoc requests will be queued by BSSID
22545 @param
22546
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 pWDICtx: - pointer to the WDI control block
22548 pSession: - session in which to queue
22549 pEventData: pointer to the event info that needs to be
22550 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022551
22552 @see
22553 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022554*/
22555WDI_Status
22556WDI_QueueAssocRequest
22557(
22558 WDI_ControlBlockType* pWDICtx,
22559 WDI_BSSSessionType* pSession,
22560 WDI_EventInfoType* pEventData
22561)
22562{
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022567
22568 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 Sanity check
22570 ------------------------------------------------------------------------*/
22571 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22572 {
22573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022575
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 }
22578
22579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 ------------------------------------------------------------------------*/
22582 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22583 if ( NULL == pEventDataQueue )
22584 {
22585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022586 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 WDI_ASSERT(0);
22588 return WDI_STATUS_MEM_FAILURE;
22589 }
22590
22591 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22592 if ( NULL == pEventInfo )
22593 {
22594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22595 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022596 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 WDI_ASSERT(0);
22598 wpalMemoryFree(pEventDataQueue);
22599 return WDI_STATUS_MEM_FAILURE;
22600 }
22601
22602 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22603 pEventDataQueue->pUserData = pEventData->pUserData;
22604 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22605 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022606 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 pEventDataQueue->pEventData = pEventInfo;
22608
22609 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22610
22611 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022613
22614 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022615 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022616
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022617 if (eWLAN_PAL_STATUS_E_FAILURE ==
22618 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22619 {
22620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22621 "%s: Cannot allocate memory for queueing event data info",
22622 __func__);
22623 WDI_ASSERT(0);
22624 wpalMemoryFree(pEventDataQueue);
22625 wpalMemoryFree(pEventInfo);
22626 return WDI_STATUS_MEM_FAILURE;
22627 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022628
22629 /*The result of this operation is pending because the request has been
22630 queued and it will be processed at a later moment in time */
22631 return WDI_STATUS_PENDING;
22632}/*WDI_QueueAssocRequest*/
22633
22634/**
22635 @brief Utility function used by the DAL Core to help dequeue
22636 an association request that was pending
22637 The request will be queued up in front of the main
22638 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 @param
22640
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022642
22643
22644 @see
22645 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022646*/
22647WDI_Status
22648WDI_DequeueAssocRequest
22649(
22650 WDI_ControlBlockType* pWDICtx
22651)
22652{
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 wpt_list_node* pNode = NULL;
22654 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 WDI_BSSSessionType* pSession;
22656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022657
22658 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 Sanity check
22660 ------------------------------------------------------------------------*/
22661 if ( NULL == pWDICtx )
22662 {
22663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022665
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 }
22668
22669 /*------------------------------------------------------------------------
22670 An association has been completed => a new association can occur
22671 Check to see if there are any pending associations ->
22672 If so , transfer all the pending requests into the busy queue for
22673 processing
22674 These requests have arrived prior to the requests in the busy queue
22675 (bc they needed to be processed in order to be placed in this queue)
22676 => they will be placed at the front of the busy queue
22677 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022679
22680 if ( NULL == pNode )
22681 {
22682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022683 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022684 return WDI_STATUS_SUCCESS;
22685 }
22686
22687 /*The node actually points to the 1st element inside the Session Id struct -
22688 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690
22691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22692 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22693
22694 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22695 {
22696 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022697
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 the front of the main waiting queue for subsequent execution*/
22700 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 while ( NULL != pNode )
22702 {
22703 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22705 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022708 }
22709 else
22710 {
22711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 WPAL_ASSERT(0);
22714 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022717
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22719 wpalMemoryFree(pSessionIdElement);
22720 return WDI_STATUS_SUCCESS;
22721}/*WDI_DequeueAssocRequest*/
22722
22723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 pending requests - all req cb will be called with
22726 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 @param
22728
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022730
22731 @see
22732 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022733*/
22734WDI_Status
22735WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022736(
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 WDI_ControlBlockType* pWDICtx
22738)
22739{
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022742 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022743 void* pUserData;
22744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22745
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022747
22748 /*------------------------------------------------------------------------
22749 Go through all the requests and fail them - this will only be called
22750 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 ------------------------------------------------------------------------*/
22753 while( pNode )
22754 {
22755 /*The node actually points to the 1st element inside the Event Data struct -
22756 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 pEventDataQueue = (WDI_EventInfoType*)pNode;
22758
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22760 if ( NULL != pfnReqStatusCB )
22761 {
22762 /*Fail the request*/
22763 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22764 }
22765 /* Free data - that was allocated when queueing */
22766 if ( pEventDataQueue->pEventData != NULL )
22767 {
22768 wpalMemoryFree(pEventDataQueue->pEventData);
22769 }
22770 wpalMemoryFree(pEventDataQueue);
22771
22772 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22773 {
22774 break;
22775 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022776 }
22777
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 return WDI_STATUS_SUCCESS;
22779}/*WDI_ClearPendingRequests*/
22780
22781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 @brief Helper routine used to init the BSS Sessions in the WDI control block
22783
22784
22785 @param pWDICtx: pointer to the WLAN DAL context
22786
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 @see
22788*/
22789void
22790WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022791(
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 WDI_ControlBlockType* pWDICtx
22793)
22794{
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22797
22798 /*-------------------------------------------------------------------------
22799 No Sanity check
22800 -------------------------------------------------------------------------*/
22801 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22802 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22805 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22806 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22807 }
22808}/*WDI_ResetAssocSessions*/
22809
22810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 @brief Helper routine used to find a session based on the BSSID
22812
22813
22814 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 pSession: pointer to the session (if found)
22817
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022820*/
22821wpt_uint8
22822WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022823(
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 WDI_ControlBlockType* pWDICtx,
22825 wpt_macAddr macBSSID,
22826 WDI_BSSSessionType** ppSession
22827)
22828{
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22831
22832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022834 -------------------------------------------------------------------------*/
22835 if ( NULL == ppSession )
22836 {
22837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022838 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 }
22841
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 /*------------------------------------------------------------------------
22845 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 ------------------------------------------------------------------------*/
22847 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22848 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022849 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22850 (eWLAN_PAL_TRUE ==
22851 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22852 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 {
22854 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 return i;
22857 }
22858 }
22859
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022861}/*WDI_FindAssocSession*/
22862
22863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 @brief Helper routine used to find a session based on the BSSID
22865
22866
22867 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 ucBSSIdx: BSS Index of the session
22869 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022870
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022872 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022873*/
22874wpt_uint8
22875WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022876(
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 WDI_ControlBlockType* pWDICtx,
22878 wpt_uint16 ucBSSIdx,
22879 WDI_BSSSessionType** ppSession
22880)
22881{
Jeff Johnsone7245742012-09-05 17:12:55 -070022882 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22884
22885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 -------------------------------------------------------------------------*/
22888 if ( NULL == ppSession )
22889 {
22890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022891 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022893 }
22894
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022896
Jeff Johnsone7245742012-09-05 17:12:55 -070022897 /*------------------------------------------------------------------------
22898 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 ------------------------------------------------------------------------*/
22900 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22901 {
22902 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22903 {
22904 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 return i;
22907 }
22908 }
22909
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022911}/*WDI_FindAssocSessionByBSSIdx*/
22912
22913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022914 @brief Helper routine used to find a session based on the BSSID
22915
22916
22917 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 ucBSSIdx: BSS Index of the session
22919 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022920
Jeff Johnson295189b2012-06-20 16:38:30 -070022921 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022922 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022923*/
22924wpt_uint8
22925WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022926(
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 WDI_ControlBlockType* pWDICtx,
22928 wpt_uint16 usIdx,
22929 WDI_BSSSessionType** ppSession
22930)
22931{
22932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22933
22934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 -------------------------------------------------------------------------*/
22937 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22938 {
22939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022940 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 }
22943
22944 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022945 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022946
22947 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022948
Jeff Johnson295189b2012-06-20 16:38:30 -070022949}/*WDI_FindAssocSessionByBSSIdx*/
22950
22951/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022954
22955
22956 @param pWDICtx: pointer to the WLAN DAL context
22957 pSession: pointer to the session (if found)
22958
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022960 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022961*/
22962wpt_uint8
22963WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022964(
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 WDI_ControlBlockType* pWDICtx,
22966 WDI_BSSSessionType** ppSession
22967)
22968{
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 -------------------------------------------------------------------------*/
22974 if ( NULL == ppSession )
22975 {
22976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022977 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022978 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 }
22980
Jeff Johnsone7245742012-09-05 17:12:55 -070022981 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022982
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 /*------------------------------------------------------------------------
22984 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 ------------------------------------------------------------------------*/
22986 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22987 {
22988 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22989 {
22990 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 return i;
22993 }
22994 }
22995
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997}/*WDI_FindEmptySession*/
22998
22999
23000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023003
23004
23005 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023006 macBSSID: pointer to BSSID. If NULL, get all the session.
23007 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23008 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23009 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 @see
23011 @return Number of sessions in use
23012*/
23013wpt_uint8
23014WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023015(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023016 WDI_ControlBlockType* pWDICtx,
23017 wpt_macAddr macBSSID,
23018 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023019)
23020{
Jeff Johnsone7245742012-09-05 17:12:55 -070023021 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023023
23024 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 Count all sessions in use
23026 ------------------------------------------------------------------------*/
23027 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23028 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023029 if ( macBSSID && skipBSSID &&
23030 (eWLAN_PAL_TRUE ==
23031 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23032 WDI_MAC_ADDR_LEN)))
23033 {
23034 continue;
23035 }
23036 else if ( pWDICtx->aBSSSessions[i].bInUse )
23037 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023038 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023039 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 }
23041
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023043}/*WDI_GetActiveSessionsCount*/
23044
23045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023048
23049
23050 @param pWDICtx: pointer to the WLAN DAL context
23051 pSession: pointer to the session (if found)
23052
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023054 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023055*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023056void
Jeff Johnson295189b2012-06-20 16:38:30 -070023057WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023058(
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 WDI_ControlBlockType* pWDICtx,
23060 WDI_BSSSessionType* ppSession
23061)
23062{
23063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 -------------------------------------------------------------------------*/
23066 if ( NULL == ppSession )
23067 {
23068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023069 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 }
23072
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 /*------------------------------------------------------------------------
23074 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 ------------------------------------------------------------------------*/
23076 wpal_list_destroy(&ppSession->wptPendingQueue);
23077 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23079 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23081 wpal_list_init(&ppSession->wptPendingQueue);
23082
23083}/*WDI_DeleteSession*/
23084
23085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 @param
23089
Jeff Johnson295189b2012-06-20 16:38:30 -070023090 WDI_AddStaParams: - pointer to the WDI Add STA params
23091 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023092
23093 @see
23094 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023095*/
23096void
23097WDI_AddBcastSTAtoSTATable
23098(
23099 WDI_ControlBlockType* pWDICtx,
23100 WDI_AddStaParams * staParams,
23101 wpt_uint16 usBcastStaIdx
23102)
23103{
23104 WDI_AddStaParams wdiAddSTAParam = {0};
23105 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23107
23108 /*---------------------------------------------------------------------
23109 Sanity check
23110 ---------------------------------------------------------------------*/
23111 if ( NULL == staParams )
23112 {
23113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023115
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 }
23118
23119 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23120 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23121 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23122 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23123 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23124 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23125 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23126 WDI_MAC_ADDR_LEN );
23127 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23128 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23129 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23130 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23131 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23132 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23133 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023134
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23136}
23137
23138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 @brief NV blob will be divided into fragments of size 4kb and
23140 Sent to HAL
23141
23142 @param pWDICtx: pointer to the WLAN DAL context
23143 pEventData: pointer to the event information structure
23144
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 @see
23146 @return Result of the function call
23147 */
23148
23149WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023150(
Jeff Johnson295189b2012-06-20 16:38:30 -070023151 WDI_ControlBlockType* pWDICtx,
23152 WDI_EventInfoType* pEventData
23153)
23154{
23155
23156 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23157 wpt_uint8* pSendBuffer = NULL;
23158 wpt_uint16 usDataOffset = 0;
23159 wpt_uint16 usSendSize = 0;
23160 wpt_uint16 usCurrentFragmentSize =0;
23161 wpt_uint8* pSrcBuffer = NULL;
23162 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23163 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23164
23165 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23166 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23167 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23168
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23171
23172 /* Update the current Fragment Number */
23173 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23174
23175 /*Update the HAL REQ structure */
23176 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23177 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23178 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23179
23180 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023182 image will be sent to HAL*/
23183
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23190 usCurrentFragmentSize = FRAGMENT_SIZE;
23191
23192 /*Update the HAL REQ structure */
23193 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23194 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23195
23196 }
23197 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 usCurrentFragmentSize = FRAGMENT_SIZE;
23200
23201 /*Update the HAL REQ structure */
23202 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23203 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23204 }
23205
23206 /*-----------------------------------------------------------------------
23207 Get message buffer
23208 -----------------------------------------------------------------------*/
23209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23210 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23211 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23214 {
23215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023216 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 pEventData, pwdiNvDownloadReqParams);
23218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 }
23221
23222 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23225
23226 /* Appending the NV image fragment */
23227 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23228 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23229 usCurrentFragmentSize);
23230
23231 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23235 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 WDI_NV_DOWNLOAD_RESP);
23237
23238}
Jeff Johnsone7245742012-09-05 17:12:55 -070023239/*============================================================================
23240 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 ============================================================================*/
23242/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 @brief Helper routine used to find a session based on the BSSID
23244 @param pContext: pointer to the WLAN DAL context
23245 @param pDPContext: pointer to the Datapath context
23246
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023249*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023250WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023251WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23252{
23253 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23254
23255 pCB->pDPContext = pDPContext;
23256 return;
23257}
23258
23259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 @brief Helper routine used to find a session based on the BSSID
23261
23262
23263 @param pContext: pointer to the WLAN DAL context
23264
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 @see
23266 @return pointer to Datapath context
23267*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023268WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023269WDI_DS_GetDatapathContext (void *pContext)
23270{
23271 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23272 return pCB->pDPContext;
23273}
23274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 @brief Helper routine used to find a session based on the BSSID
23276
23277
23278 @param pContext: pointer to the WLAN DAL context
23279 @param pDTDriverContext: pointer to the Transport Driver context
23280
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 @see
23282 @return void
23283*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023284WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023285WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23286{
23287 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23288
23289 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023291}
23292
23293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 @brief Helper routine used to find a session based on the BSSID
23295
23296
23297 @param pWDICtx: pointer to the WLAN DAL context
23298
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023301*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023302WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023303WDT_GetTransportDriverContext (void *pContext)
23304{
23305 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023307}
23308
Jeff Johnsone7245742012-09-05 17:12:55 -070023309/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 Helper inline converters
23311 ============================================================================*/
23312/*Convert WDI driver type into HAL driver type*/
23313WPT_STATIC WPT_INLINE WDI_Status
23314WDI_HAL_2_WDI_STATUS
23315(
23316 eHalStatus halStatus
23317)
23318{
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 the chances of getting inlined*/
23321 switch( halStatus )
23322 {
23323 case eHAL_STATUS_SUCCESS:
23324 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23325 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23326 return WDI_STATUS_SUCCESS;
23327 case eHAL_STATUS_FAILURE:
23328 return WDI_STATUS_E_FAILURE;
23329 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 return WDI_STATUS_MEM_FAILURE;
23331 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 default:
23334 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23335 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023336
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023338}/*WDI_HAL_2_WDI_STATUS*/
23339
23340/*Convert WDI request type into HAL request type*/
23341WPT_STATIC WPT_INLINE tHalHostMsgType
23342WDI_2_HAL_REQ_TYPE
23343(
23344 WDI_RequestEnumType wdiReqType
23345)
23346{
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 the chances of getting inlined*/
23349 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023360 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023366 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023367 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023372 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023374 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023375 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023378 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023384 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 return WLAN_HAL_RMV_STAKEY_REQ;
23386 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 case WDI_DEL_BA_REQ:
23395 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023396#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 case WDI_TSM_STATS_REQ:
23398 return WLAN_HAL_TSM_STATS_REQ;
23399#endif
23400 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023403 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023404 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023405 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023407 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023409 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023410 case WDI_ADD_BA_SESSION_REQ:
23411 return WLAN_HAL_ADD_BA_SESSION_REQ;
23412 case WDI_TRIGGER_BA_REQ:
23413 return WLAN_HAL_TRIGGER_BA_REQ;
23414 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23419 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23420 case WDI_SET_MAX_TX_POWER_REQ:
23421 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023422 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23423 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023424 case WDI_SET_TX_POWER_REQ:
23425 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23427 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023428#ifdef FEATURE_WLAN_TDLS
23429 case WDI_TDLS_LINK_ESTABLISH_REQ:
23430 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23431#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023433 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023443 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 case WDI_REM_BEACON_FILTER_REQ:
23453 return WLAN_HAL_REM_BCN_FILTER_REQ;
23454 case WDI_SET_RSSI_THRESHOLDS_REQ:
23455 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23456 case WDI_HOST_OFFLOAD_REQ:
23457 return WLAN_HAL_HOST_OFFLOAD_REQ;
23458 case WDI_WOWL_ADD_BC_PTRN_REQ:
23459 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23460 case WDI_WOWL_DEL_BC_PTRN_REQ:
23461 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23462 case WDI_WOWL_ENTER_REQ:
23463 return WLAN_HAL_ENTER_WOWL_REQ;
23464 case WDI_WOWL_EXIT_REQ:
23465 return WLAN_HAL_EXIT_WOWL_REQ;
23466 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23467 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23468 case WDI_NV_DOWNLOAD_REQ:
23469 return WLAN_HAL_DOWNLOAD_NV_REQ;
23470 case WDI_FLUSH_AC_REQ:
23471 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23472 case WDI_BTAMP_EVENT_REQ:
23473 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23474#ifdef WLAN_FEATURE_VOWIFI_11R
23475 case WDI_AGGR_ADD_TS_REQ:
23476 return WLAN_HAL_AGGR_ADD_TS_REQ;
23477#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 case WDI_FTM_CMD_REQ:
23479 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 case WDI_ADD_STA_SELF_REQ:
23481 return WLAN_HAL_ADD_STA_SELF_REQ;
23482 case WDI_DEL_STA_SELF_REQ:
23483 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023484#ifdef FEATURE_OEM_DATA_SUPPORT
23485 case WDI_START_OEM_DATA_REQ:
23486 return WLAN_HAL_START_OEM_DATA_REQ;
23487#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 case WDI_HOST_RESUME_REQ:
23489 return WLAN_HAL_HOST_RESUME_REQ;
23490 case WDI_HOST_SUSPEND_IND:
23491 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023492 case WDI_TRAFFIC_STATS_IND:
23493 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023494#ifdef WLAN_FEATURE_11W
23495 case WDI_EXCLUDE_UNENCRYPTED_IND:
23496 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23497#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 case WDI_KEEP_ALIVE_REQ:
23499 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023500#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023501 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23502 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023503#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023504#ifdef FEATURE_WLAN_SCAN_PNO
23505 case WDI_SET_PREF_NETWORK_REQ:
23506 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23507 case WDI_SET_RSSI_FILTER_REQ:
23508 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23509 case WDI_UPDATE_SCAN_PARAMS_REQ:
23510 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23511#endif // FEATURE_WLAN_SCAN_PNO
23512 case WDI_SET_TX_PER_TRACKING_REQ:
23513 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23514#ifdef WLAN_FEATURE_PACKET_FILTERING
23515 case WDI_8023_MULTICAST_LIST_REQ:
23516 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23517 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023518 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23520 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23521 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23522 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23523#endif // WLAN_FEATURE_PACKET_FILTERING
23524 case WDI_HAL_DUMP_CMD_REQ:
23525 return WLAN_HAL_DUMP_COMMAND_REQ;
23526#ifdef WLAN_FEATURE_GTK_OFFLOAD
23527 case WDI_GTK_OFFLOAD_REQ:
23528 return WLAN_HAL_GTK_OFFLOAD_REQ;
23529 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23530 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23531#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23532
23533 case WDI_INIT_SCAN_CON_REQ:
23534 return WLAN_HAL_INIT_SCAN_CON_REQ;
23535 case WDI_SET_POWER_PARAMS_REQ:
23536 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23537 case WDI_SET_TM_LEVEL_REQ:
23538 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23539 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23540 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023541#ifdef WLAN_FEATURE_11AC
23542 case WDI_UPDATE_VHT_OP_MODE_REQ:
23543 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23544#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023545 case WDI_GET_ROAM_RSSI_REQ:
23546 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023547 case WDI_DHCP_START_IND:
23548 return WLAN_HAL_DHCP_START_IND;
23549 case WDI_DHCP_STOP_IND:
23550 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023551#ifdef FEATURE_WLAN_LPHB
23552 case WDI_LPHB_CFG_REQ:
23553 return WLAN_HAL_LPHB_CFG_REQ;
23554#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023555 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23556 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23557 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23558 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23559
Rajeev79dbe4c2013-10-05 11:03:42 +053023560#ifdef FEATURE_WLAN_BATCH_SCAN
23561 case WDI_SET_BATCH_SCAN_REQ:
23562 return WLAN_HAL_BATCHSCAN_SET_REQ;
23563 case WDI_STOP_BATCH_SCAN_IND:
23564 return WLAN_HAL_BATCHSCAN_STOP_IND;
23565 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23566 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23567#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023568 case WDI_RATE_UPDATE_IND:
23569 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023570 case WDI_START_HT40_OBSS_SCAN_IND:
23571 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23572 case WDI_STOP_HT40_OBSS_SCAN_IND:
23573 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023574 case WDI_UPDATE_CHAN_REQ:
23575 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023576 case WDI_CH_SWITCH_REQ_V1:
23577 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023578 case WDI_GET_BCN_MISS_RATE_REQ:
23579 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023580
23581#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23582 case WDI_LL_STATS_SET_REQ:
23583 return WLAN_HAL_LL_SET_STATS_REQ;
23584 case WDI_LL_STATS_GET_REQ:
23585 return WLAN_HAL_LL_GET_STATS_REQ;
23586 case WDI_LL_STATS_CLEAR_REQ:
23587 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23588#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023589#ifdef WLAN_FEATURE_EXTSCAN
23590 case WDI_EXTSCAN_START_REQ:
23591 return WLAN_HAL_EXT_SCAN_START_REQ;
23592 case WDI_EXTSCAN_STOP_REQ:
23593 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23594 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23595 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23596 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23597 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23598 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23599 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23600 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23601 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23602 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23603 return WLAN_HAL_SIG_RSSI_SET_REQ;
23604 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23605 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23606#endif /* WLAN_FEATURE_EXTSCAN */
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023608 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023610
Jeff Johnson295189b2012-06-20 16:38:30 -070023611}/*WDI_2_HAL_REQ_TYPE*/
23612
23613/*Convert WDI response type into HAL response type*/
23614WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23615HAL_2_WDI_RSP_TYPE
23616(
23617 tHalHostMsgType halMsg
23618)
23619{
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 the chances of getting inlined*/
23622 switch( halMsg )
23623 {
23624 case WLAN_HAL_START_RSP:
23625 return WDI_START_RESP;
23626 case WLAN_HAL_STOP_RSP:
23627 return WDI_STOP_RESP;
23628 case WLAN_HAL_INIT_SCAN_RSP:
23629 return WDI_INIT_SCAN_RESP;
23630 case WLAN_HAL_START_SCAN_RSP:
23631 return WDI_START_SCAN_RESP;
23632 case WLAN_HAL_END_SCAN_RSP:
23633 return WDI_END_SCAN_RESP;
23634 case WLAN_HAL_FINISH_SCAN_RSP:
23635 return WDI_FINISH_SCAN_RESP;
23636 case WLAN_HAL_CONFIG_STA_RSP:
23637 return WDI_CONFIG_STA_RESP;
23638 case WLAN_HAL_DELETE_STA_RSP:
23639 return WDI_DEL_STA_RESP;
23640 case WLAN_HAL_CONFIG_BSS_RSP:
23641 return WDI_CONFIG_BSS_RESP;
23642 case WLAN_HAL_DELETE_BSS_RSP:
23643 return WDI_DEL_BSS_RESP;
23644 case WLAN_HAL_JOIN_RSP:
23645 return WDI_JOIN_RESP;
23646 case WLAN_HAL_POST_ASSOC_RSP:
23647 return WDI_POST_ASSOC_RESP;
23648 case WLAN_HAL_SET_BSSKEY_RSP:
23649 return WDI_SET_BSS_KEY_RESP;
23650 case WLAN_HAL_SET_STAKEY_RSP:
23651 return WDI_SET_STA_KEY_RESP;
23652 case WLAN_HAL_RMV_BSSKEY_RSP:
23653 return WDI_RMV_BSS_KEY_RESP;
23654 case WLAN_HAL_RMV_STAKEY_RSP:
23655 return WDI_RMV_STA_KEY_RESP;
23656 case WLAN_HAL_SET_BCASTKEY_RSP:
23657 return WDI_SET_STA_BCAST_KEY_RESP;
23658 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23659 // return WDI_RMV_STA_BCAST_KEY_RESP;
23660 case WLAN_HAL_ADD_TS_RSP:
23661 return WDI_ADD_TS_RESP;
23662 case WLAN_HAL_DEL_TS_RSP:
23663 return WDI_DEL_TS_RESP;
23664 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23665 return WDI_UPD_EDCA_PRMS_RESP;
23666 case WLAN_HAL_ADD_BA_RSP:
23667 return WDI_ADD_BA_RESP;
23668 case WLAN_HAL_DEL_BA_RSP:
23669 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023670#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 case WLAN_HAL_TSM_STATS_RSP:
23672 return WDI_TSM_STATS_RESP;
23673#endif
23674 case WLAN_HAL_CH_SWITCH_RSP:
23675 return WDI_CH_SWITCH_RESP;
23676 case WLAN_HAL_SET_LINK_ST_RSP:
23677 return WDI_SET_LINK_ST_RESP;
23678 case WLAN_HAL_GET_STATS_RSP:
23679 return WDI_GET_STATS_RESP;
23680 case WLAN_HAL_UPDATE_CFG_RSP:
23681 return WDI_UPDATE_CFG_RESP;
23682 case WLAN_HAL_ADD_BA_SESSION_RSP:
23683 return WDI_ADD_BA_SESSION_RESP;
23684 case WLAN_HAL_TRIGGER_BA_RSP:
23685 return WDI_TRIGGER_BA_RESP;
23686 case WLAN_HAL_UPDATE_BEACON_RSP:
23687 return WDI_UPD_BCON_PRMS_RESP;
23688 case WLAN_HAL_SEND_BEACON_RSP:
23689 return WDI_SND_BCON_RESP;
23690 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23691 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23692 /*Indications*/
23693 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23694 return WDI_HAL_RSSI_NOTIFICATION_IND;
23695 case WLAN_HAL_MISSED_BEACON_IND:
23696 return WDI_HAL_MISSED_BEACON_IND;
23697 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23698 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23699 case WLAN_HAL_MIC_FAILURE_IND:
23700 return WDI_HAL_MIC_FAILURE_IND;
23701 case WLAN_HAL_FATAL_ERROR_IND:
23702 return WDI_HAL_FATAL_ERROR_IND;
23703 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23704 return WDI_HAL_DEL_STA_IND;
23705 case WLAN_HAL_COEX_IND:
23706 return WDI_HAL_COEX_IND;
23707 case WLAN_HAL_OTA_TX_COMPL_IND:
23708 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 case WLAN_HAL_P2P_NOA_ATTR_IND:
23710 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023711 case WLAN_HAL_P2P_NOA_START_IND:
23712 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 case WLAN_HAL_TX_PER_HIT_IND:
23714 return WDI_HAL_TX_PER_HIT_IND;
23715 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23716 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023717 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23718 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023719 case WLAN_HAL_SET_TX_POWER_RSP:
23720 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 case WLAN_HAL_SET_P2P_GONOA_RSP:
23722 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023723#ifdef FEATURE_WLAN_TDLS
23724 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23725 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23726 case WLAN_HAL_TDLS_IND:
23727 return WDI_HAL_TDLS_IND;
23728#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023743 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023745 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23748 return WDI_SET_BEACON_FILTER_RESP;
23749 case WLAN_HAL_REM_BCN_FILTER_RSP:
23750 return WDI_REM_BEACON_FILTER_RESP;
23751 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23752 return WDI_SET_RSSI_THRESHOLDS_RESP;
23753 case WLAN_HAL_HOST_OFFLOAD_RSP:
23754 return WDI_HOST_OFFLOAD_RESP;
23755 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23756 return WDI_WOWL_ADD_BC_PTRN_RESP;
23757 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23758 return WDI_WOWL_DEL_BC_PTRN_RESP;
23759 case WLAN_HAL_ENTER_WOWL_RSP:
23760 return WDI_WOWL_ENTER_RESP;
23761 case WLAN_HAL_EXIT_WOWL_RSP:
23762 return WDI_WOWL_EXIT_RESP;
23763 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23764 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23765 case WLAN_HAL_DOWNLOAD_NV_RSP:
23766 return WDI_NV_DOWNLOAD_RESP;
23767 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23768 return WDI_FLUSH_AC_RESP;
23769 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23770 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 case WLAN_HAL_PROCESS_PTT_RSP:
23772 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023773 case WLAN_HAL_ADD_STA_SELF_RSP:
23774 return WDI_ADD_STA_SELF_RESP;
23775case WLAN_HAL_DEL_STA_SELF_RSP:
23776 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023777#ifdef FEATURE_OEM_DATA_SUPPORT
23778 case WLAN_HAL_START_OEM_DATA_RSP:
23779 return WDI_START_OEM_DATA_RESP;
23780#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 case WLAN_HAL_HOST_RESUME_RSP:
23782 return WDI_HOST_RESUME_RESP;
23783 case WLAN_HAL_KEEP_ALIVE_RSP:
23784 return WDI_KEEP_ALIVE_RESP;
23785#ifdef FEATURE_WLAN_SCAN_PNO
23786 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23787 return WDI_SET_PREF_NETWORK_RESP;
23788 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23791 return WDI_UPDATE_SCAN_PARAMS_RESP;
23792 case WLAN_HAL_PREF_NETW_FOUND_IND:
23793 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23794#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023795#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023796 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23797 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023798#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23800 return WDI_SET_TX_PER_TRACKING_RESP;
23801#ifdef WLAN_FEATURE_PACKET_FILTERING
23802 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23803 return WDI_8023_MULTICAST_LIST_RESP;
23804 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23805 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23806 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23807 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23808 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23809 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23810#endif // WLAN_FEATURE_PACKET_FILTERING
23811
23812 case WLAN_HAL_DUMP_COMMAND_RSP:
23813 return WDI_HAL_DUMP_CMD_RESP;
23814 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23815 return WDI_SET_POWER_PARAMS_RESP;
23816#ifdef WLAN_FEATURE_VOWIFI_11R
23817 case WLAN_HAL_AGGR_ADD_TS_RSP:
23818 return WDI_AGGR_ADD_TS_RESP;
23819#endif
23820
23821#ifdef WLAN_FEATURE_GTK_OFFLOAD
23822 case WLAN_HAL_GTK_OFFLOAD_RSP:
23823 return WDI_GTK_OFFLOAD_RESP;
23824 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23825 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23826#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23827#ifdef WLAN_WAKEUP_EVENTS
23828 case WLAN_HAL_WAKE_REASON_IND:
23829 return WDI_HAL_WAKE_REASON_IND;
23830#endif // WLAN_WAKEUP_EVENTS
23831
23832 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23833 return WDI_SET_TM_LEVEL_RESP;
23834 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23835 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023836#ifdef WLAN_FEATURE_11AC
23837 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23838 return WDI_UPDATE_VHT_OP_MODE_RESP;
23839#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023840#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023841 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23842 return WDI_GET_ROAM_RSSI_RESP;
23843#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023844
Leo Chang9056f462013-08-01 19:21:11 -070023845#ifdef FEATURE_WLAN_LPHB
23846 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023847 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023848 case WLAN_HAL_LPHB_CFG_RSP:
23849 return WDI_LPHB_CFG_RESP;
23850#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023851
23852 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23853 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023854 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23855 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023856
Rajeev79dbe4c2013-10-05 11:03:42 +053023857#ifdef FEATURE_WLAN_BATCH_SCAN
23858 case WLAN_HAL_BATCHSCAN_SET_RSP:
23859 return WDI_SET_BATCH_SCAN_RESP;
23860 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23861 return WDI_BATCHSCAN_RESULT_IND;
23862#endif // FEATURE_WLAN_BATCH_SCAN
23863
Leo Chang0b0e45a2013-12-15 15:18:55 -080023864#ifdef FEATURE_WLAN_CH_AVOID
23865 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23866 return WDI_HAL_CH_AVOID_IND;
23867#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023868 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23869 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023870 case WLAN_HAL_PRINT_REG_INFO_IND:
23871 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053023872 case WLAN_HAL_CH_SWITCH_V1_RSP:
23873 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053023874 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23875 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023876#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23877 case WLAN_HAL_LL_SET_STATS_RSP:
23878 return WDI_LL_STATS_SET_RSP;
23879 case WLAN_HAL_LL_GET_STATS_RSP:
23880 return WDI_LL_STATS_GET_RSP;
23881 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23882 return WDI_LL_STATS_CLEAR_RSP;
23883 case WLAN_HAL_LL_NOTIFY_STATS:
23884 return WDI_HAL_LL_STATS_RESULTS_IND;
23885#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023886#ifdef WLAN_FEATURE_EXTSCAN
23887 case WLAN_HAL_EXT_SCAN_START_RSP:
23888 return WDI_EXTSCAN_START_RSP;
23889 case WLAN_HAL_EXT_SCAN_STOP_RSP:
23890 return WDI_EXTSCAN_STOP_RSP;
23891 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
23892 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
23893 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
23894 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
23895 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
23896 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
23897 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
23898 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
23899 case WLAN_HAL_SIG_RSSI_SET_RSP:
23900 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
23901 case WLAN_HAL_SIG_RSSI_RESET_RSP:
23902 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
23903 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
23904 return WDI_HAL_EXTSCAN_PROGRESS_IND;
23905 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
23906 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
23907 case WLAN_HAL_EXT_SCAN_RESULT_IND:
23908 return WDI_HAL_EXTSCAN_RESULT_IND;
23909 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
23910 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
23911 case WLAN_HAL_SIG_RSSI_RESULT_IND:
23912 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
23913#endif /* WLAN_FEATURE_EXTSCAN */
23914
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 }
23918
23919}/*HAL_2_WDI_RSP_TYPE*/
23920
23921
23922/*Convert WDI driver type into HAL driver type*/
23923WPT_STATIC WPT_INLINE tDriverType
23924WDI_2_HAL_DRV_TYPE
23925(
23926 WDI_DriverType wdiDriverType
23927)
23928{
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 the chances of getting inlined*/
23931 switch( wdiDriverType )
23932 {
23933 case WDI_DRIVER_TYPE_PRODUCTION:
23934 return eDRIVER_TYPE_PRODUCTION;
23935 case WDI_DRIVER_TYPE_MFG:
23936 return eDRIVER_TYPE_MFG;
23937 case WDI_DRIVER_TYPE_DVT:
23938 return eDRIVER_TYPE_DVT;
23939 }
23940
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942}/*WDI_2_HAL_DRV_TYPE*/
23943
23944
23945/*Convert WDI stop reason into HAL stop reason*/
23946WPT_STATIC WPT_INLINE tHalStopType
23947WDI_2_HAL_STOP_REASON
23948(
23949 WDI_StopType wdiDriverType
23950)
23951{
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 the chances of getting inlined*/
23954 switch( wdiDriverType )
23955 {
23956 case WDI_STOP_TYPE_SYS_RESET:
23957 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023958 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23959 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 case WDI_STOP_TYPE_RF_KILL:
23961 return HAL_STOP_TYPE_RF_KILL;
23962 }
23963
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965}/*WDI_2_HAL_STOP_REASON*/
23966
23967
23968/*Convert WDI scan mode type into HAL scan mode type*/
23969WPT_STATIC WPT_INLINE eHalSysMode
23970WDI_2_HAL_SCAN_MODE
23971(
23972 WDI_ScanMode wdiScanMode
23973)
23974{
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 the chances of getting inlined*/
23977 switch( wdiScanMode )
23978 {
23979 case WDI_SCAN_MODE_NORMAL:
23980 return eHAL_SYS_MODE_NORMAL;
23981 case WDI_SCAN_MODE_LEARN:
23982 return eHAL_SYS_MODE_LEARN;
23983 case WDI_SCAN_MODE_SCAN:
23984 return eHAL_SYS_MODE_SCAN;
23985 case WDI_SCAN_MODE_PROMISC:
23986 return eHAL_SYS_MODE_PROMISC;
23987 case WDI_SCAN_MODE_SUSPEND_LINK:
23988 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023989 case WDI_SCAN_MODE_ROAM_SCAN:
23990 return eHAL_SYS_MODE_ROAM_SCAN;
23991 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23992 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 }
23994
Jeff Johnsone7245742012-09-05 17:12:55 -070023995 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023996}/*WDI_2_HAL_SCAN_MODE*/
23997
23998/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023999WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024000WDI_2_HAL_SEC_CH_OFFSET
24001(
24002 WDI_HTSecondaryChannelOffset wdiSecChOffset
24003)
24004{
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 the chances of getting inlined*/
24007 switch( wdiSecChOffset )
24008 {
24009 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24015#ifdef WLAN_FEATURE_11AC
24016 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24017 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24018 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24019 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24020 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24021 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24022 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24023 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24024 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24025 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24026 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24027 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24028 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24029 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24030#endif
24031 default:
24032 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 }
24034
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024036}/*WDI_2_HAL_SEC_CH_OFFSET*/
24037
24038/*Convert WDI BSS type into HAL BSS type*/
24039WPT_STATIC WPT_INLINE tSirBssType
24040WDI_2_HAL_BSS_TYPE
24041(
24042 WDI_BssType wdiBSSType
24043)
24044{
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 the chances of getting inlined*/
24047 switch( wdiBSSType )
24048 {
24049 case WDI_INFRASTRUCTURE_MODE:
24050 return eSIR_INFRASTRUCTURE_MODE;
24051 case WDI_INFRA_AP_MODE:
24052 return eSIR_INFRA_AP_MODE;
24053 case WDI_IBSS_MODE:
24054 return eSIR_IBSS_MODE;
24055 case WDI_BTAMP_STA_MODE:
24056 return eSIR_BTAMP_STA_MODE;
24057 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 case WDI_BSS_AUTO_MODE:
24060 return eSIR_AUTO_MODE;
24061 }
24062
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024064}/*WDI_2_HAL_BSS_TYPE*/
24065
24066/*Convert WDI NW type into HAL NW type*/
24067WPT_STATIC WPT_INLINE tSirNwType
24068WDI_2_HAL_NW_TYPE
24069(
24070 WDI_NwType wdiNWType
24071)
24072{
Jeff Johnsone7245742012-09-05 17:12:55 -070024073 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024074 the chances of getting inlined*/
24075 switch( wdiNWType )
24076 {
24077 case WDI_11A_NW_TYPE:
24078 return eSIR_11A_NW_TYPE;
24079 case WDI_11B_NW_TYPE:
24080 return eSIR_11B_NW_TYPE;
24081 case WDI_11G_NW_TYPE:
24082 return eSIR_11G_NW_TYPE;
24083 case WDI_11N_NW_TYPE:
24084 return eSIR_11N_NW_TYPE;
24085 }
24086
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088}/*WDI_2_HAL_NW_TYPE*/
24089
24090/*Convert WDI chanel bonding type into HAL cb type*/
24091WPT_STATIC WPT_INLINE ePhyChanBondState
24092WDI_2_HAL_CB_STATE
24093(
24094 WDI_PhyChanBondState wdiCbState
24095)
24096{
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 the chances of getting inlined*/
24099 switch ( wdiCbState )
24100 {
24101 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24102 return PHY_SINGLE_CHANNEL_CENTERED;
24103 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24104 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24105 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24106 return PHY_DOUBLE_CHANNEL_CENTERED;
24107 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24108 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024109#ifdef WLAN_FEATURE_11AC
24110 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24111 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24112 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24113 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24114 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24115 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24116 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24117 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24118 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24119 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24120 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24121 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24122 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24123 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24124#endif
24125 case WDI_MAX_CB_STATE:
24126 default:
24127 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024129
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 return PHY_CHANNEL_BONDING_STATE_MAX;
24131}/*WDI_2_HAL_CB_STATE*/
24132
24133/*Convert WDI chanel bonding type into HAL cb type*/
24134WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24135WDI_2_HAL_HT_OPER_MODE
24136(
24137 WDI_HTOperatingMode wdiHTOperMode
24138)
24139{
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 the chances of getting inlined*/
24142 switch ( wdiHTOperMode )
24143 {
24144 case WDI_HT_OP_MODE_PURE:
24145 return eSIR_HT_OP_MODE_PURE;
24146 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24147 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24148 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24149 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24150 case WDI_HT_OP_MODE_MIXED:
24151 return eSIR_HT_OP_MODE_MIXED;
24152 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024153
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 return eSIR_HT_OP_MODE_MAX;
24155}/*WDI_2_HAL_HT_OPER_MODE*/
24156
24157/*Convert WDI mimo PS type into HAL mimo PS type*/
24158WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24159WDI_2_HAL_MIMO_PS
24160(
24161 WDI_HTMIMOPowerSaveState wdiHTOperMode
24162)
24163{
Jeff Johnsone7245742012-09-05 17:12:55 -070024164 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 the chances of getting inlined*/
24166 switch ( wdiHTOperMode )
24167 {
24168 case WDI_HT_MIMO_PS_STATIC:
24169 return eSIR_HT_MIMO_PS_STATIC;
24170 case WDI_HT_MIMO_PS_DYNAMIC:
24171 return eSIR_HT_MIMO_PS_DYNAMIC;
24172 case WDI_HT_MIMO_PS_NA:
24173 return eSIR_HT_MIMO_PS_NA;
24174 case WDI_HT_MIMO_PS_NO_LIMIT:
24175 return eSIR_HT_MIMO_PS_NO_LIMIT;
24176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024177
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 return eSIR_HT_MIMO_PS_MAX;
24179}/*WDI_2_HAL_MIMO_PS*/
24180
24181/*Convert WDI ENC type into HAL ENC type*/
24182WPT_STATIC WPT_INLINE tAniEdType
24183WDI_2_HAL_ENC_TYPE
24184(
24185 WDI_EncryptType wdiEncType
24186)
24187{
Jeff Johnsone7245742012-09-05 17:12:55 -070024188 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 the chances of getting inlined*/
24190 switch ( wdiEncType )
24191 {
24192 case WDI_ENCR_NONE:
24193 return eSIR_ED_NONE;
24194
24195 case WDI_ENCR_WEP40:
24196 return eSIR_ED_WEP40;
24197
24198 case WDI_ENCR_WEP104:
24199 return eSIR_ED_WEP104;
24200
24201 case WDI_ENCR_TKIP:
24202 return eSIR_ED_TKIP;
24203
24204 case WDI_ENCR_CCMP:
24205 return eSIR_ED_CCMP;
24206
24207 case WDI_ENCR_AES_128_CMAC:
24208 return eSIR_ED_AES_128_CMAC;
24209#if defined(FEATURE_WLAN_WAPI)
24210 case WDI_ENCR_WPI:
24211 return eSIR_ED_WPI;
24212#endif
24213 default:
24214 return eSIR_ED_NOT_IMPLEMENTED;
24215 }
24216
24217}/*WDI_2_HAL_ENC_TYPE*/
24218
24219/*Convert WDI WEP type into HAL WEP type*/
24220WPT_STATIC WPT_INLINE tAniWepType
24221WDI_2_HAL_WEP_TYPE
24222(
24223 WDI_WepType wdiWEPType
24224)
24225{
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 the chances of getting inlined*/
24228 switch ( wdiWEPType )
24229 {
24230 case WDI_WEP_STATIC:
24231 return eSIR_WEP_STATIC;
24232
24233 case WDI_WEP_DYNAMIC:
24234 return eSIR_WEP_DYNAMIC;
24235 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024236
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 return eSIR_WEP_MAX;
24238}/*WDI_2_HAL_WEP_TYPE*/
24239
24240WPT_STATIC WPT_INLINE tSirLinkState
24241WDI_2_HAL_LINK_STATE
24242(
24243 WDI_LinkStateType wdiLinkState
24244)
24245{
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 the chances of getting inlined*/
24248 switch ( wdiLinkState )
24249 {
24250 case WDI_LINK_IDLE_STATE:
24251 return eSIR_LINK_IDLE_STATE;
24252
24253 case WDI_LINK_PREASSOC_STATE:
24254 return eSIR_LINK_PREASSOC_STATE;
24255
24256 case WDI_LINK_POSTASSOC_STATE:
24257 return eSIR_LINK_POSTASSOC_STATE;
24258
24259 case WDI_LINK_AP_STATE:
24260 return eSIR_LINK_AP_STATE;
24261
24262 case WDI_LINK_IBSS_STATE:
24263 return eSIR_LINK_IBSS_STATE;
24264
24265 case WDI_LINK_BTAMP_PREASSOC_STATE:
24266 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24267
24268 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24269 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24270
24271 case WDI_LINK_BTAMP_AP_STATE:
24272 return eSIR_LINK_BTAMP_AP_STATE;
24273
24274 case WDI_LINK_BTAMP_STA_STATE:
24275 return eSIR_LINK_BTAMP_STA_STATE;
24276
24277 case WDI_LINK_LEARN_STATE:
24278 return eSIR_LINK_LEARN_STATE;
24279
24280 case WDI_LINK_SCAN_STATE:
24281 return eSIR_LINK_SCAN_STATE;
24282
24283 case WDI_LINK_FINISH_SCAN_STATE:
24284 return eSIR_LINK_FINISH_SCAN_STATE;
24285
24286 case WDI_LINK_INIT_CAL_STATE:
24287 return eSIR_LINK_INIT_CAL_STATE;
24288
24289 case WDI_LINK_FINISH_CAL_STATE:
24290 return eSIR_LINK_FINISH_CAL_STATE;
24291
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 case WDI_LINK_LISTEN_STATE:
24293 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024295 case WDI_LINK_SEND_ACTION_STATE:
24296 return eSIR_LINK_SEND_ACTION_STATE;
24297
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 default:
24299 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024301}
24302
Jeff Johnsone7245742012-09-05 17:12:55 -070024303/*Translate a STA Context from WDI into HAL*/
24304WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024305void
24306WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024307(
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 tConfigStaParams* phalConfigSta,
24309 WDI_ConfigStaReqInfoType* pwdiConfigSta
24310)
24311{
24312 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024313#ifdef WLAN_FEATURE_11AC
24314 /* Get the Version 1 Handler */
24315 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24316 if (WDI_getFwWlanFeatCaps(DOT11AC))
24317 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024318 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 }
24320#endif
24321 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 the chances of getting inlined*/
24323
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 wpalMemoryCopy(phalConfigSta->bssId,
24325 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24326
24327 wpalMemoryCopy(phalConfigSta->staMac,
24328 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024329
24330 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24331 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24332 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24333 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24334 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24335 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24336 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24337 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24338 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24339 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24340 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24341 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24342 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24343 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24344 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24345 phalConfigSta->action = pwdiConfigSta->wdiAction;
24346 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24347 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24348 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24349 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24350 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24351 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24352 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024353
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24355
Jeff Johnsone7245742012-09-05 17:12:55 -070024356 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 pwdiConfigSta->wdiSupportedRates.opRateMode;
24358 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24359 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024360 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24362 }
24363 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24364 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24367 }
24368 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24369 {
24370 phalConfigSta->supportedRates.aniLegacyRates[i] =
24371 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24375 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24376 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24379 }
24380 phalConfigSta->supportedRates.rxHighestDataRate =
24381 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24382
Jeff Johnsone7245742012-09-05 17:12:55 -070024383#ifdef WLAN_FEATURE_11AC
24384 if(phalConfigSta_V1 != NULL)
24385 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024386 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24387 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24388 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24389 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024390 }
24391#endif
24392
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024394
Jeff Johnsone7245742012-09-05 17:12:55 -070024395#ifdef WLAN_FEATURE_11AC
24396 if(phalConfigSta_V1 != NULL)
24397 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024398 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24399 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024400 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024401 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24402 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24403
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 }
24405#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024406}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024407
24408/*Translate a Rate set info from WDI into HAL*/
24409WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024410WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024411(
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 tSirMacRateSet* pHalRateSet,
24413 WDI_RateSet* pwdiRateSet
24414)
24415{
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24418
24419 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24420 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24421
24422 for ( i = 0; i < pHalRateSet->numRates; i++ )
24423 {
24424 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24425 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024426
Jeff Johnson295189b2012-06-20 16:38:30 -070024427}/*WDI_CopyWDIRateSetToHALRateSet*/
24428
24429
24430/*Translate an EDCA Parameter Record from WDI into HAL*/
24431WPT_STATIC WPT_INLINE void
24432WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024433(
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 tSirMacEdcaParamRecord* phalEdcaParam,
24435 WDI_EdcaParamRecord* pWDIEdcaParam
24436)
24437{
Jeff Johnsone7245742012-09-05 17:12:55 -070024438 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 the chances of getting inlined*/
24440
24441 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24442 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24443 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24444 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24445
24446 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24447 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24448 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24449}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24450
24451
24452/*Copy a management frame header from WDI fmt into HAL fmt*/
24453WPT_STATIC WPT_INLINE void
24454WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24455(
24456 tSirMacMgmtHdr* pmacMgmtHdr,
24457 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24458)
24459{
24460 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24461 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24462 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24463 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24464 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24465 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24466 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24467 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24468 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24469 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24470 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24471
24472 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24473 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24474
Jeff Johnsone7245742012-09-05 17:12:55 -070024475 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024477 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024479 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 pwdiMacMgmtHdr->bssId, 6);
24481
24482 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24483 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24484 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24485
24486}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24487
24488
24489/*Copy config bss parameters from WDI fmt into HAL fmt*/
24490WPT_STATIC WPT_INLINE void
24491WDI_CopyWDIConfigBSSToHALConfigBSS
24492(
24493 tConfigBssParams* phalConfigBSS,
24494 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24495)
24496{
24497
24498 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024499#ifdef WLAN_FEATURE_11AC
24500 /* Get the Version 1 Handler */
24501 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24502 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024503 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024504#endif
24505
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 wpalMemoryCopy( phalConfigBSS->bssId,
24507 pwdiConfigBSS->macBSSID,
24508 WDI_MAC_ADDR_LEN);
24509
24510#ifdef HAL_SELF_STA_PER_BSS
24511 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24512 pwdiConfigBSS->macSelfAddr,
24513 WDI_MAC_ADDR_LEN);
24514#endif
24515
24516 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24517
24518 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24519 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24520
Jeff Johnsone7245742012-09-05 17:12:55 -070024521 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 pwdiConfigBSS->ucShortSlotTimeSupported;
24523 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24524 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24525 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24526 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24527 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24530 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24531 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24532 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24533 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24534 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24535 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24536 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24537 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24538 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24539 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24540
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 phalConfigBSS->htOperMode =
24542 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024543
24544 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24545 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24546 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24547 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24548
24549#ifdef WLAN_FEATURE_VOWIFI
24550 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24551#endif
24552
24553 /*! Used 32 as magic number because that is how the ssid is declared inside the
24554 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024555 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024556 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24557 pwdiConfigBSS->wdiSSID.ucLength : 32;
24558 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 pwdiConfigBSS->wdiSSID.sSSID,
24560 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024561
24562 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24563 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024564
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24566 &pwdiConfigBSS->wdiRateSet);
24567
24568 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24569
24570 if(phalConfigBSS->edcaParamsValid)
24571 {
24572 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24573 &pwdiConfigBSS->wdiBEEDCAParams);
24574 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24575 &pwdiConfigBSS->wdiBKEDCAParams);
24576 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24577 &pwdiConfigBSS->wdiVIEDCAParams);
24578 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24579 &pwdiConfigBSS->wdiVOEDCAParams);
24580 }
24581
Jeff Johnsone7245742012-09-05 17:12:55 -070024582 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024583
24584 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24585
24586#ifdef WLAN_FEATURE_VOWIFI_11R
24587
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024590
Jeff Johnson295189b2012-06-20 16:38:30 -070024591 if( phalConfigBSS->extSetStaKeyParamValid )
24592 {
24593 /*-----------------------------------------------------------------------
24594 Copy the STA Key parameters into the HAL message
24595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24598
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24601
24602 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24603
24604 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24605
24606 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24607
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24609 keyIndex++)
24610 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024611 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24613 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24614 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24615 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24616 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24617 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024622 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24624 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024625 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 WDI_MAX_KEY_LENGTH);
24627 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 }
24629 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24630 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024631 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 sizeof(phalConfigBSS->extSetStaKeyParam) );
24633 }
24634
24635#endif /*WLAN_FEATURE_VOWIFI_11R*/
24636
Jeff Johnsone7245742012-09-05 17:12:55 -070024637#ifdef WLAN_FEATURE_11AC
24638 if(phalConfigBSS_V1 != NULL)
24639 {
24640 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24641 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24642 }
24643#endif
24644
Jeff Johnson295189b2012-06-20 16:38:30 -070024645}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24646
24647
Jeff Johnsone7245742012-09-05 17:12:55 -070024648/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024649 pointed to by user data */
24650WPT_STATIC WPT_INLINE void
24651WDI_ExtractRequestCBFromEvent
24652(
24653 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 void** ppUserData
24656)
24657{
24658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24659 switch ( pEvent->wdiRequest )
24660 {
24661 case WDI_START_REQ:
24662 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24663 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24664 break;
24665 case WDI_STOP_REQ:
24666 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24667 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24668 break;
24669 case WDI_INIT_SCAN_REQ:
24670 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24671 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24672 break;
24673 case WDI_START_SCAN_REQ:
24674 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24675 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24676 break;
24677 case WDI_END_SCAN_REQ:
24678 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24679 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24680 break;
24681 case WDI_FINISH_SCAN_REQ:
24682 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24683 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24684 break;
24685 case WDI_JOIN_REQ:
24686 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24687 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24688 break;
24689 case WDI_CONFIG_BSS_REQ:
24690 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24691 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24692 break;
24693 case WDI_DEL_BSS_REQ:
24694 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24695 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24696 break;
24697 case WDI_POST_ASSOC_REQ:
24698 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24699 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24700 break;
24701 case WDI_DEL_STA_REQ:
24702 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24703 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24704 break;
24705 case WDI_DEL_STA_SELF_REQ:
24706 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24707 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24708 break;
24709
24710 case WDI_SET_BSS_KEY_REQ:
24711 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24712 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24713 break;
24714 case WDI_RMV_BSS_KEY_REQ:
24715 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24716 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24717 break;
24718 case WDI_SET_STA_KEY_REQ:
24719 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24720 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24721 break;
24722 case WDI_RMV_STA_KEY_REQ:
24723 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24724 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24725 break;
24726 case WDI_ADD_TS_REQ:
24727 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24728 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24729 break;
24730 case WDI_DEL_TS_REQ:
24731 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24732 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24733 break;
24734 case WDI_UPD_EDCA_PRMS_REQ:
24735 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24736 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24737 break;
24738 case WDI_ADD_BA_SESSION_REQ:
24739 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24740 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24741 break;
24742 case WDI_DEL_BA_REQ:
24743 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24744 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24745 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024746#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 case WDI_TSM_STATS_REQ:
24748 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24749 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24750 break;
24751#endif
24752 case WDI_CH_SWITCH_REQ:
24753 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24754 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24755 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024756 case WDI_CH_SWITCH_REQ_V1:
24757 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24758 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24759 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 case WDI_CONFIG_STA_REQ:
24761 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24762 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24763 break;
24764 case WDI_SET_LINK_ST_REQ:
24765 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24766 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24767 break;
24768 case WDI_GET_STATS_REQ:
24769 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24770 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24771 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024772#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024773 case WDI_GET_ROAM_RSSI_REQ:
24774 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24775 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24776 break;
24777#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024778 case WDI_UPDATE_CFG_REQ:
24779 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24780 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24781 break;
24782 case WDI_ADD_BA_REQ:
24783 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24784 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24785 break;
24786 case WDI_TRIGGER_BA_REQ:
24787 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24788 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24789 break;
24790 case WDI_UPD_BCON_PRMS_REQ:
24791 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24792 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24793 break;
24794 case WDI_SND_BCON_REQ:
24795 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24796 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24797 break;
24798 case WDI_ENTER_BMPS_REQ:
24799 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24800 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24801 break;
24802 case WDI_EXIT_BMPS_REQ:
24803 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24804 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24805 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024806 case WDI_ENTER_IMPS_REQ:
24807 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24808 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24809 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024810 case WDI_ENTER_UAPSD_REQ:
24811 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24812 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24813 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024814 case WDI_EXIT_UAPSD_REQ:
24815 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24816 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24817 break;
24818 case WDI_SET_UAPSD_PARAM_REQ:
24819 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24820 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24821 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024822 case WDI_UPDATE_UAPSD_PARAM_REQ:
24823 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24824 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24825 break;
24826 case WDI_CONFIGURE_RXP_FILTER_REQ:
24827 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24828 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24829 break;
24830 case WDI_SET_BEACON_FILTER_REQ:
24831 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24832 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24833 break;
24834 case WDI_REM_BEACON_FILTER_REQ:
24835 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24836 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024838 case WDI_SET_RSSI_THRESHOLDS_REQ:
24839 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24840 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24841 break;
24842 case WDI_HOST_OFFLOAD_REQ:
24843 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24844 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24845 break;
24846 case WDI_WOWL_ADD_BC_PTRN_REQ:
24847 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24848 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24849 break;
24850 case WDI_WOWL_DEL_BC_PTRN_REQ:
24851 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24852 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24853 break;
24854 case WDI_WOWL_ENTER_REQ:
24855 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24856 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24857 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024858 case WDI_WOWL_EXIT_REQ:
24859 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24860 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24861 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24863 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24864 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24865 break;
24866 case WDI_FLUSH_AC_REQ:
24867 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24868 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24869 break;
24870 case WDI_BTAMP_EVENT_REQ:
24871 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24872 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24873 break;
24874 case WDI_KEEP_ALIVE_REQ:
24875 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24876 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24877 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024878#if defined FEATURE_WLAN_SCAN_PNO
24879 case WDI_SET_PREF_NETWORK_REQ:
24880 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24881 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24882 break;
24883 case WDI_SET_RSSI_FILTER_REQ:
24884 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24885 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24886 break;
24887 case WDI_UPDATE_SCAN_PARAMS_REQ:
24888 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24889 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24890 break;
24891#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024892 case WDI_SET_TX_PER_TRACKING_REQ:
24893 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24894 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024895 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024896#if defined WLAN_FEATURE_PACKET_FILTERING
24897 case WDI_8023_MULTICAST_LIST_REQ:
24898 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24899 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24900 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024901 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24902 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24903 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24904 break;
24905 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24906 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24907 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24908 break;
24909 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24910 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24911 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24912 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024913#endif
24914 case WDI_SET_POWER_PARAMS_REQ:
24915 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24916 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24917 break;
24918#if defined WLAN_FEATURE_GTK_OFFLOAD
24919 case WDI_GTK_OFFLOAD_REQ:
24920 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24921 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24922 break;
24923 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24924 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24925 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24926 break;
24927#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024928
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 default:
24930 *ppfnReqCB = NULL;
24931 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024932 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024933 }
24934}/*WDI_ExtractRequestCBFromEvent*/
24935
24936
24937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024938 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024939 frame xtl is enabled for a particular STA.
24940
24941 WDI_PostAssocReq must have been called.
24942
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 @param uSTAIdx: STA index
24944
Jeff Johnson295189b2012-06-20 16:38:30 -070024945 @see WDI_PostAssocReq
24946 @return Result of the function call
24947*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024948wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024949WDI_IsHwFrameTxTranslationCapable
24950(
24951 wpt_uint8 uSTAIdx
24952)
24953{
Jeff Johnsone7245742012-09-05 17:12:55 -070024954 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024955 uma value*/
24956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024957 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024958 ------------------------------------------------------------------------*/
24959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24960 {
24961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24962 "WDI API call before module is initialized - Fail request");
24963
Jeff Johnsone7245742012-09-05 17:12:55 -070024964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 }
24966
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024967#ifdef WLAN_SOFTAP_VSTA_FEATURE
24968 if (IS_VSTA_IDX(uSTAIdx))
24969 {
24970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24971 "STA %d is a Virtual STA, "
24972 "HW frame translation disabled", uSTAIdx);
24973 return eWLAN_PAL_FALSE;
24974 }
24975#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024976
Jeff Johnson295189b2012-06-20 16:38:30 -070024977 return gWDICb.bFrameTransEnabled;
24978}/*WDI_IsHwFrameTxTranslationCapable*/
24979
Katya Nigam6201c3e2014-05-27 17:51:42 +053024980
24981/**
24982 @brief WDI_IsSelfSTA - check if staid is self sta index
24983
24984
24985 @param pWDICtx: pointer to the WLAN DAL context
24986 ucSTAIdx: station index
24987
24988 @return Result of the function call
24989*/
24990wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24991{
24992 wpt_uint8 ucSTAType;
24993
24994 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
24995 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
24996 {
24997 if( ucSTAType == WDI_STA_ENTRY_SELF )
24998 return eWLAN_PAL_TRUE;
24999 }
25000
25001 return eWLAN_PAL_FALSE;
25002}
25003
25004
25005
Jeff Johnson295189b2012-06-20 16:38:30 -070025006#ifdef FEATURE_WLAN_SCAN_PNO
25007/**
25008 @brief WDI_SetPreferredNetworkList
25009
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025012
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 wdiPNOScanCb: callback for passing back the response
25014 of the Set PNO operation received from the
25015 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025016
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 callback
25019
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 @return Result of the function call
25021*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025022WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025023WDI_SetPreferredNetworkReq
25024(
25025 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25026 WDI_PNOScanCb wdiPNOScanCb,
25027 void* pUserData
25028)
25029{
25030 WDI_EventInfoType wdiEventData = {{0}};
25031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25032
25033 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025034 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025035 ------------------------------------------------------------------------*/
25036 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25037 {
25038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25039 "WDI API call before module is initialized - Fail request");
25040
Jeff Johnsone7245742012-09-05 17:12:55 -070025041 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 }
25043
25044 /*------------------------------------------------------------------------
25045 Fill in Event data and post to the Main FSM
25046 ------------------------------------------------------------------------*/
25047 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025048 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025050 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 wdiEventData.pUserData = pUserData;
25052
25053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25054}
25055
25056
25057/**
25058 @brief WDI_SetRssiFilterReq
25059
Jeff Johnsone7245742012-09-05 17:12:55 -070025060 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025061 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025062
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 wdiRssiFilterCb: callback for passing back the response
25064 of the Set RSSI Filter operation received from the
25065 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025066
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 callback
25069
Jeff Johnson295189b2012-06-20 16:38:30 -070025070 @return Result of the function call
25071*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025072WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025073WDI_SetRssiFilterReq
25074(
25075 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25076 WDI_RssiFilterCb wdiRssiFilterCb,
25077 void* pUserData
25078)
25079{
25080 WDI_EventInfoType wdiEventData = {{0}};
25081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25082
25083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025085 ------------------------------------------------------------------------*/
25086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25087 {
25088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25089 "WDI API call before module is initialized - Fail request");
25090
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 }
25093
25094 /*------------------------------------------------------------------------
25095 Fill in Event data and post to the Main FSM
25096 ------------------------------------------------------------------------*/
25097 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025098 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025099 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 wdiEventData.pUserData = pUserData;
25102
25103 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25104}/*WDI_SetRssiFilterReq*/
25105
25106/**
25107 @brief WDI_UpdateScanParamsReq
25108
Jeff Johnsone7245742012-09-05 17:12:55 -070025109 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025111
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 wdiUpdateScanParamsCb: callback for passing back the response
25113 of the Set PNO operation received from the
25114 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025115
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 callback
25118
Jeff Johnson295189b2012-06-20 16:38:30 -070025119 @return Result of the function call
25120*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025121WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025122WDI_UpdateScanParamsReq
25123(
25124 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25125 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25126 void* pUserData
25127)
25128{
25129 WDI_EventInfoType wdiEventData = {{0}};
25130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25131
25132 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025133 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 ------------------------------------------------------------------------*/
25135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25136 {
25137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25138 "WDI API call before module is initialized - Fail request");
25139
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 }
25142
25143 /*------------------------------------------------------------------------
25144 Fill in Event data and post to the Main FSM
25145 ------------------------------------------------------------------------*/
25146 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025147 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025148 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 wdiEventData.pUserData = pUserData;
25151
25152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25153}
25154
25155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025156 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025158
25159 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025160 pwdiPNOScanReqParams: pointer to the info received
25161 from upper layers
25162 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 and its size
25164
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 @return Result of the function call
25166*/
25167
25168WDI_Status
25169WDI_PackPreferredNetworkList
25170(
25171 WDI_ControlBlockType* pWDICtx,
25172 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25173 wpt_uint8** ppSendBuffer,
25174 wpt_uint16* pSize
25175)
25176{
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 wpt_uint16 usDataOffset = 0;
25179 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025180 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 /*-----------------------------------------------------------------------
25183 Get message buffer
25184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025186 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025187 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025188 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 {
25190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025191 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025192 pwdiPNOScanReqParams);
25193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 }
25196
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025197 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25198
Jeff Johnson295189b2012-06-20 16:38:30 -070025199 /*-------------------------------------------------------------------------
25200 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25201 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025202 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025204 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25206
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025207 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025209 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25212
25213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025214 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25216 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25217 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25218
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025219 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025220 {
25221 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025222 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25224
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025225 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025226 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025227 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025228
25229 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025230 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025231 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025232
25233 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025234 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025235 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025236
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025239 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025240 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25241 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25242 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25243 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025244
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025245 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025247 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025248
25249 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025250 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025251 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25252
25253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025255 pPrefNetwListParams->aNetworks[i].ssId.length,
25256 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 }
25258
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025259 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025260 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025261 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25262 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25263 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25264
25265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025266 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025267 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025268 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25269 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25270
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025271 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025272 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025273 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025274 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025275 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25277 }
25278
25279 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025280 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25282 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25283 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025284 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025285
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025286 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025287 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025288 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025289
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025290 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025291 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25292 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25293 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025295
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025296 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025298 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025299
25300 /*Set the output values*/
25301 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025302 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025303
25304 return WDI_STATUS_SUCCESS;
25305}/*WDI_PackPreferredNetworkList*/
25306
25307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025308 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025310
25311 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 pwdiPNOScanReqParams: pointer to the info received
25313 from upper layers
25314 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 and its size
25316
Jeff Johnson295189b2012-06-20 16:38:30 -070025317 @return Result of the function call
25318*/
25319
25320WDI_Status
25321WDI_PackPreferredNetworkListNew
25322(
25323 WDI_ControlBlockType* pWDICtx,
25324 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25325 wpt_uint8** ppSendBuffer,
25326 wpt_uint16* pSize
25327)
25328{
Jeff Johnsone7245742012-09-05 17:12:55 -070025329 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025330 wpt_uint16 usDataOffset = 0;
25331 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025332 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025334
25335 /*-----------------------------------------------------------------------
25336 Get message buffer
25337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025339 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025341 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025342 {
25343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025344 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025345 pwdiPNOScanReqParams);
25346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 }
25349
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025350 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25351
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 /*-------------------------------------------------------------------------
25353 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25354 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025355 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025357 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025358 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25359
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025360 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025361 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025362 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025363 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25365
25366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025367 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025368 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25369 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25370 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25371
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025372 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025373 {
25374 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025375 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25377
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025378 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025380 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025381
25382 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025383 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025384 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025385
25386 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025387 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025388 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025389
25390 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025391 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025392 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393
Jeff Johnsone7245742012-09-05 17:12:55 -070025394 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025396 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025397 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25398
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025399 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025401 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025402
25403 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025404 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25406
25407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025408 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025409 pPrefNetwListParams->aNetworks[i].ssId.length,
25410 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 }
25412
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025413 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025414 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25416 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25417 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25418
25419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025420 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025421 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025422 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25423 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25424
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025425 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025427 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025428 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025429 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025430 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25431 }
25432
25433 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025434 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25436 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25437 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025438 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025439
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025440 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025442 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025443
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025444 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25446 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25447 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025448 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025449
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025450 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025451 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025452 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025453
Jeff Johnson295189b2012-06-20 16:38:30 -070025454
25455 /*Set the output values*/
25456 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025457 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025458
25459 return WDI_STATUS_SUCCESS;
25460}/*WDI_PackPreferredNetworkListNew*/
25461
25462/**
25463 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025464
25465 @param pWDICtx: pointer to the WLAN DAL context
25466 pEventData: pointer to the event information structure
25467
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 @return Result of the function call
25469*/
25470WDI_Status
25471WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025472(
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 WDI_ControlBlockType* pWDICtx,
25474 WDI_EventInfoType* pEventData
25475)
25476{
25477 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25478 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025481 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025482
25483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 -------------------------------------------------------------------------*/
25486 if (( NULL == pEventData ) ||
25487 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25488 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25489 {
25490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 }
25495
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025496 /*----------------------------------------------------------------------
25497 Avoid Enable PNO during any active session or an ongoing session
25498 ----------------------------------------------------------------------*/
25499 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25500 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25501 {
25502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25503 "%s:(Active/Ongoing Session) - Fail request", __func__);
25504
25505 return WDI_STATUS_E_FAILURE;
25506 }
25507
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 /*-------------------------------------------------------------------------
25509 Pack the PNO request structure based on version
25510 -------------------------------------------------------------------------*/
25511 if ( pWDICtx->wdiPNOVersion > 0 )
25512 {
25513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025514 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025515 pWDICtx->wdiPNOVersion);
25516
25517 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25518 &pSendBuffer, &usSendSize);
25519 }
25520 else
25521 {
25522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025523 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025524 pWDICtx->wdiPNOVersion);
25525
25526 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25527 &pSendBuffer, &usSendSize);
25528 }
25529
25530 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25531 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25532 {
25533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025534 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 }
25538
25539 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025541
25542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25546 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025547}
25548
25549/**
25550 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025551
25552 @param pWDICtx: pointer to the WLAN DAL context
25553 pEventData: pointer to the event information structure
25554
Jeff Johnson295189b2012-06-20 16:38:30 -070025555 @see
25556 @return Result of the function call
25557*/
25558WDI_Status
25559WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025560(
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 WDI_ControlBlockType* pWDICtx,
25562 WDI_EventInfoType* pEventData
25563)
25564{
25565 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25566 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 wpt_uint16 usDataOffset = 0;
25569 wpt_uint16 usSendSize = 0;
25570 wpt_uint8 ucRssiThreshold;
25571
25572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 -------------------------------------------------------------------------*/
25575 if (( NULL == pEventData ) ||
25576 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25577 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25578 {
25579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 }
25584
25585 /*-----------------------------------------------------------------------
25586 Get message buffer
25587 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 sizeof(ucRssiThreshold),
25590 &pSendBuffer, &usDataOffset, &usSendSize))||
25591 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25592 {
25593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025594 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 }
25599
25600 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25601
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 wpalMemoryCopy( pSendBuffer+usDataOffset,
25603 &ucRssiThreshold,
25604 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025605
25606 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025607 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025608
25609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25613 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025614}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025615#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25616/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025617 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025618
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025619 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025620 by the Device Interface
25621
25622 wdiRoamOffloadScancb: callback for passing back the response
25623 of the Roam Candidate Lookup Req operation received from the
25624 device
25625
25626 pUserData: user data will be passed back with the
25627 callback
25628 @return Result of the function call
25629*/
25630WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025631WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025632(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025633 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025634 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25635 void* pUserData
25636)
25637{
25638 WDI_EventInfoType wdiEventData = {{0}};
25639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25640
25641 /*------------------------------------------------------------------------
25642 Sanity Check
25643 ------------------------------------------------------------------------*/
25644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25645 {
25646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25647 "WDI API call before module is initialized - Fail request");
25648
25649 return WDI_STATUS_E_NOT_ALLOWED;
25650 }
25651
25652 /*------------------------------------------------------------------------
25653 Fill in Event data and post to the Main FSM
25654 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025655 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25656 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25657 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025658 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25659 wdiEventData.pUserData = pUserData;
25660
25661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25662}
25663
25664void
25665WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25666{
25667 switch (wdiEdType)
25668 {
25669 case WDI_ED_NONE:
25670 *EdType = eED_NONE;
25671 break;
25672 case WDI_ED_WEP40:
25673 case WDI_ED_WEP104:
25674 *EdType = eED_WEP;
25675 break;
25676 case WDI_ED_TKIP:
25677 *EdType = eED_TKIP;
25678 break;
25679 case WDI_ED_CCMP:
25680#ifdef WLAN_FEATURE_11W
25681 case WDI_ED_AES_128_CMAC:
25682#endif
25683 *EdType = eED_CCMP;
25684 break;
25685#ifdef FEATURE_WLAN_WAPI
25686 case WDI_ED_WPI:
25687 *EdType = eED_WPI;
25688 break;
25689#endif
25690 case WDI_ED_ANY:
25691 *EdType = eED_ANY;
25692 break;
25693
25694 default:
25695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25696 "%s: Unknown Encryption Type", __func__);
25697 break;
25698 }
25699}
25700
25701/**
25702 @brief Helper function to pack Start Roam Candidate Lookup
25703 Request parameters
25704
25705 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025706 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025707 from upper layers
25708 ppSendBuffer, pSize - out pointers of the packed buffer
25709 and its size
25710
25711 @return Result of the function call
25712*/
25713
25714WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025715WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025716(
25717 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025718 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025719 wpt_uint8** ppSendBuffer,
25720 wpt_uint16* pSize
25721)
25722{
25723 wpt_uint8* pSendBuffer = NULL;
25724 wpt_uint16 usDataOffset = 0;
25725 wpt_uint16 usSendSize = 0;
25726 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25727 wpt_uint8 i;
25728 /*-----------------------------------------------------------------------
25729 Get message buffer
25730 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025732 sizeof(tRoamCandidateListParams),
25733 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025734 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025735 {
25736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025737 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025738 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025739 WDI_ASSERT(0);
25740 return WDI_STATUS_E_FAILURE;
25741 }
25742 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025743 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025744 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025745 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025746 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025747 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025748 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025749 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025750 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025751 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025752 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025753
25754 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025755 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025756 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025758 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25759 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025760 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25761 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25762 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25763 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25764 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025765 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025766 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025767 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025768 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25769 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25770 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25771 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25772 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25773 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25774 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025775 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025776 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025777 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25778 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25779 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025780
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25782 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25783 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25784 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25785 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25786 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025787 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025788 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25789 pRoamCandidateListParams->RoamScanOffloadEnabled,
25790 pRoamCandidateListParams->Command,
25791 pRoamCandidateListParams->StartScanReason,
25792 pRoamCandidateListParams->NeighborScanTimerPeriod,
25793 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25794 pRoamCandidateListParams->NeighborScanChannelMinTime,
25795 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25796 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25797 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25798 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25799 pRoamCandidateListParams->ConnectedNetwork.authentication,
25800 pRoamCandidateListParams->ConnectedNetwork.encryption,
25801 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25802 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25803 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025804 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025805 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025806 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025807 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025808 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25809 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025810 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025811 pRoamCandidateListParams->us24GProbeSize);
25812 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025813 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025814 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025815 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025816 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25817 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025818 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025819 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025820 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25821 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25822 pRoamCandidateListParams->nProbes =
25823 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25824 pRoamCandidateListParams->HomeAwayTime =
25825 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025827 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25828 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025830 }
25831
25832
25833 /*Set the output values*/
25834 *ppSendBuffer = pSendBuffer;
25835 *pSize = usSendSize;
25836 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025837}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025838
25839/**
25840 @brief Process Start Roam Candidate Lookup Request function
25841
25842 @param pWDICtx: pointer to the WLAN DAL context
25843 pEventData: pointer to the event information structure
25844
25845 @return Result of the function call
25846*/
25847WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025848WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025849(
25850 WDI_ControlBlockType* pWDICtx,
25851 WDI_EventInfoType* pEventData
25852)
25853{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025854 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025855 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25856 wpt_uint8* pSendBuffer = NULL;
25857 wpt_uint16 usSendSize = 0;
25858 WDI_Status wdiStatus;
25859 /*-------------------------------------------------------------------------
25860 Sanity check
25861 -------------------------------------------------------------------------*/
25862 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025863 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025864 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25865 {
25866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25867 "%s: Invalid parameters", __func__);
25868 WDI_ASSERT(0);
25869 return WDI_STATUS_E_FAILURE;
25870 }
25871
25872 /*-------------------------------------------------------------------------
25873 Pack the Start Roam Candidate Lookup request structure based on version
25874 -------------------------------------------------------------------------*/
25875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25876 "%s: Packing Roam Candidate Lookup request ", __func__);
25877
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025878 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025879 &pSendBuffer, &usSendSize);
25880
25881 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25882 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25883 {
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25885 "%s: failed to pack request parameters", __func__);
25886 WDI_ASSERT(0);
25887 return wdiStatus;
25888 }
25889
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025890 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25891 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025892
25893 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025894 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025895 -------------------------------------------------------------------------*/
25896 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025897 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025898}
25899
25900/**
25901 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25902 response is being received over the bus from HAL)
25903
25904 @param pWDICtx: pointer to the WLAN DAL context
25905 pEventData: pointer to the event information structure
25906
25907 @see
25908 @return Result of the function call
25909*/
25910WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025911WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025912(
25913 WDI_ControlBlockType* pWDICtx,
25914 WDI_EventInfoType* pEventData
25915)
25916{
25917 WDI_Status wdiStatus;
25918 eHalStatus halStatus;
25919 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25920
25921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25922
25923 /*-------------------------------------------------------------------------
25924 Sanity check
25925 -------------------------------------------------------------------------*/
25926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25927 ( NULL == pEventData->pEventData ))
25928 {
25929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25930 "%s: Invalid parameters", __func__);
25931 WDI_ASSERT(0);
25932 return WDI_STATUS_E_FAILURE;
25933 }
25934
25935 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25936
25937 /*-------------------------------------------------------------------------
25938 Extract response and send it to UMAC
25939 -------------------------------------------------------------------------*/
25940 halStatus = *((eHalStatus*)pEventData->pEventData);
25941 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25942
25943 /*Notify UMAC*/
25944 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25945
25946 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025947}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025948#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025949
25950/**
25951 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025952
25953 @param pWDICtx: pointer to the WLAN DAL context
25954 pEventData: pointer to the event information structure
25955
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 @see
25957 @return Result of the function call
25958*/
25959WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025960WDI_PackUpdateScanParamsReq
25961(
25962 WDI_ControlBlockType* pWDICtx,
25963 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25964 wpt_uint8** ppSendBuffer,
25965 wpt_uint16* pSize
25966)
25967{
25968 wpt_uint8* pSendBuffer = NULL;
25969 wpt_uint16 usDataOffset = 0;
25970 wpt_uint16 usSendSize = 0;
25971 tUpdateScanParams updateScanParams = {0};
25972
25973
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025975 "Begin WDI Update Scan Parameters Old Style Params");
25976 /*-----------------------------------------------------------------------
25977 Get message buffer
25978 -----------------------------------------------------------------------*/
25979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25980 sizeof(updateScanParams),
25981 &pSendBuffer, &usDataOffset, &usSendSize))||
25982 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25983 {
25984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025985 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025986 pwdiUpdateScanParams);
25987 WDI_ASSERT(0);
25988 return WDI_STATUS_E_FAILURE;
25989 }
25990
25991 //
25992 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25993 //
25994
25995 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25996 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25997
25998 updateScanParams.ucChannelCount =
25999 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26000 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26001 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26002 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26003
26004 wpalMemoryCopy( updateScanParams.aChannels,
26005 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26006 updateScanParams.ucChannelCount);
26007
26008
26009 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26010 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26011 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26012 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26013 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26014
26015 wpalMemoryCopy( pSendBuffer+usDataOffset,
26016 &updateScanParams,
26017 sizeof(updateScanParams));
26018
26019 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26020 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26021
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026023 "End Update Scan Parameters Old Style");
26024
26025 /*Set the output values*/
26026 *ppSendBuffer = pSendBuffer;
26027 *pSize = usSendSize;
26028
26029 return WDI_STATUS_SUCCESS;
26030}
26031
26032/**
26033 @brief Process Update Scan Params function
26034
26035 @param pWDICtx: pointer to the WLAN DAL context
26036 pEventData: pointer to the event information structure
26037
26038 @see
26039 @return Result of the function call
26040*/
26041WDI_Status
26042WDI_PackUpdateScanParamsReqEx
26043(
26044 WDI_ControlBlockType* pWDICtx,
26045 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26046 wpt_uint8** ppSendBuffer,
26047 wpt_uint16* pSize
26048)
26049{
26050 wpt_uint8* pSendBuffer = NULL;
26051 wpt_uint16 usDataOffset = 0;
26052 wpt_uint16 usSendSize = 0;
26053 tUpdateScanParamsEx updateScanParams = {0};
26054
26055
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026056 /*-----------------------------------------------------------------------
26057 Get message buffer
26058 -----------------------------------------------------------------------*/
26059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26060 sizeof(updateScanParams),
26061 &pSendBuffer, &usDataOffset, &usSendSize))||
26062 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26063 {
26064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026065 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026066 pwdiUpdateScanParams);
26067 WDI_ASSERT(0);
26068 return WDI_STATUS_E_FAILURE;
26069 }
26070
26071 //
26072 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26073 //
26074
26075 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26076 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26077
26078 updateScanParams.ucChannelCount =
26079 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26080 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26081 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26082 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26083
26084 wpalMemoryCopy( updateScanParams.aChannels,
26085 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26086 updateScanParams.ucChannelCount);
26087
26088
26089 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26090 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26091 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26092 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26093 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26094
26095 wpalMemoryCopy( pSendBuffer+usDataOffset,
26096 &updateScanParams,
26097 sizeof(updateScanParams));
26098
26099 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26100 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26101
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026102 /*Set the output values*/
26103 *ppSendBuffer = pSendBuffer;
26104 *pSize = usSendSize;
26105
26106 return WDI_STATUS_SUCCESS;
26107}
26108
26109/**
26110 @brief Process Update Scan Params function
26111
26112 @param pWDICtx: pointer to the WLAN DAL context
26113 pEventData: pointer to the event information structure
26114
26115 @see
26116 @return Result of the function call
26117*/
26118WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026119WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026120(
Jeff Johnson295189b2012-06-20 16:38:30 -070026121 WDI_ControlBlockType* pWDICtx,
26122 WDI_EventInfoType* pEventData
26123)
26124{
26125 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26126 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026127 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026129 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130
26131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 -------------------------------------------------------------------------*/
26134 if (( NULL == pEventData ) ||
26135 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26136 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26137 {
26138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 }
26143
26144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26145 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026146
26147 //
26148 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26149 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026150 if ( pWDICtx->wlanVersion.revision < 1 )
26151 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026152 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026153 &pSendBuffer, &usSendSize);
26154 }
26155 else
26156 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026157 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26158 &pSendBuffer, &usSendSize);
26159 }
26160
26161 if(WDI_STATUS_SUCCESS != wdiStatus)
26162 {
26163 //memory allocation failed
26164 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026165 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026166
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026168 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026171 wdiUpdateScanParamsCb, pEventData->pUserData,
26172 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026173}
26174
26175/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026176 @brief Process Update Channel Params function
26177
26178 @param pWDICtx: pointer to the WLAN DAL context
26179 pEventData: pointer to the event information structure
26180
26181 @see
26182 @return Result of the function call
26183*/
26184WDI_Status
26185WDI_ProcessUpdateChannelParamsReq
26186(
26187 WDI_ControlBlockType* pWDICtx,
26188 WDI_EventInfoType* pEventData
26189)
26190{
26191 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26192 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26193 wpt_uint8* pSendBuffer = NULL;
26194 wpt_uint16 usDataOffset = 0;
26195 wpt_uint16 usSendSize = 0;
26196 tUpdateChannelReqType *updateChannelParams;
26197 wpt_uint32 usUpdateChanParamSize;
26198 wpt_uint8 num_channels = 0;
26199
26200 /*-------------------------------------------------------------------------
26201 Sanity check
26202 -------------------------------------------------------------------------*/
26203 if (( NULL == pEventData ) ||
26204 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26205 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26206 {
26207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26208 "%s: Invalid parameters", __func__);
26209 WDI_ASSERT(0);
26210 return WDI_STATUS_E_FAILURE;
26211 }
26212 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26213 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26214 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26215 sizeof(tUpdateChannelParam)));
26216
26217 /*-----------------------------------------------------------------------
26218 Get message buffer
26219 -----------------------------------------------------------------------*/
26220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26221 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26222 &pSendBuffer, &usDataOffset, &usSendSize))||
26223 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26224 {
26225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26226 "Unable to get send buffer in Update Channel Params req %p",
26227 pwdiUpdateChanListParams);
26228 WDI_ASSERT(0);
26229 return WDI_STATUS_E_FAILURE;
26230 }
26231 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26232
26233 updateChannelParams->numChan = num_channels;
26234 wpalMemoryCopy(&updateChannelParams->chanParam,
26235 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26236 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26237
26238 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26239 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26240
26241 /*-------------------------------------------------------------------------
26242 Send Update channel request to fw
26243 -------------------------------------------------------------------------*/
26244 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26245 wdiUpdateChanParamsCb, pEventData->pUserData,
26246 WDI_UPDATE_CHAN_RESP);
26247}
26248
26249/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026251
26252 @param pWDICtx: pointer to the WLAN DAL context
26253 pEventData: pointer to the event information structure
26254
Jeff Johnson295189b2012-06-20 16:38:30 -070026255 @see
26256 @return Result of the function call
26257*/
26258WDI_Status
26259WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026260(
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 WDI_ControlBlockType* pWDICtx,
26262 WDI_EventInfoType* pEventData
26263)
26264{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026265 WDI_LowLevelIndType wdiInd;
26266 tpPrefNetwFoundParams pNetwFoundParams;
26267 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026268
26269
26270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 -------------------------------------------------------------------------*/
26273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26274 ( NULL == pEventData->pEventData ))
26275 {
26276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 }
26281
26282 /*-------------------------------------------------------------------------
26283 Extract indication and send it to UMAC
26284 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026285 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26286
26287 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26288 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26289 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26290
26291 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26292 {
26293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26294 "%s: fail to allocate memory", __func__);
26295 return WDI_STATUS_MEM_FAILURE;
26296 }
26297
26298 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26299 (pNetwFoundParams->ssId.length < 32 )?
26300 pNetwFoundParams->ssId.length : 32;
26301 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26302 pNetwFoundParams->ssId.ssId,
26303 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26304 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26305 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26306 pNetwFoundParams->frameLength;
26307 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26308 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26309 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026310
26311 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026312 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026313
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 // DEBUG
26315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026316 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026317 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026318 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026319 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026320 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026321 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26322
ltimariub77f24b2013-01-24 18:54:33 -080026323 if ( pWDICtx->wdiLowLevelIndCB )
26324 {
26325 /*Notify UMAC*/
26326 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26327 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026328
26329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026330}
26331
26332/**
26333 @brief Process PNO Rsp function (called when a
26334 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026335
26336 @param pWDICtx: pointer to the WLAN DAL context
26337 pEventData: pointer to the event information structure
26338
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 @see
26340 @return Result of the function call
26341*/
26342WDI_Status
26343WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026344(
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 WDI_ControlBlockType* pWDICtx,
26346 WDI_EventInfoType* pEventData
26347)
26348{
26349 WDI_Status wdiStatus;
26350 eHalStatus halStatus;
26351 WDI_PNOScanCb wdiPNOScanCb = NULL;
26352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26353
26354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 -------------------------------------------------------------------------*/
26357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26358 ( NULL == pEventData->pEventData ))
26359 {
26360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 }
26365
26366
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026368
26369 /*-------------------------------------------------------------------------
26370 Extract response and send it to UMAC
26371 -------------------------------------------------------------------------*/
26372 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026374
26375 /*Notify UMAC*/
26376 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26377
Jeff Johnsone7245742012-09-05 17:12:55 -070026378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026379}/*WDI_ProcessSetPreferredNetworkRsp*/
26380
26381/**
26382 @brief Process RSSI Filter Rsp function (called when a
26383 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026384
26385 @param pWDICtx: pointer to the WLAN DAL context
26386 pEventData: pointer to the event information structure
26387
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 @see
26389 @return Result of the function call
26390*/
26391WDI_Status
26392WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026393(
Jeff Johnson295189b2012-06-20 16:38:30 -070026394 WDI_ControlBlockType* pWDICtx,
26395 WDI_EventInfoType* pEventData
26396)
26397{
26398 WDI_Status wdiStatus;
26399 eHalStatus halStatus;
26400 WDI_RssiFilterCb wdiRssiFilterCb;
26401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26402
26403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026404 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026405 -------------------------------------------------------------------------*/
26406 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26407 ( NULL == pEventData->pEventData ))
26408 {
26409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 }
26414
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026416
26417 /*-------------------------------------------------------------------------
26418 Extract response and send it to UMAC
26419 -------------------------------------------------------------------------*/
26420 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026421 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026422
26423 /*Notify UMAC*/
26424 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26425
Jeff Johnsone7245742012-09-05 17:12:55 -070026426 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026427}/*WDI_ProcessSetRssiFilterRsp*/
26428
26429/**
26430 @brief Process Update Scan Params Rsp function (called when a
26431 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026432
26433 @param pWDICtx: pointer to the WLAN DAL context
26434 pEventData: pointer to the event information structure
26435
Jeff Johnson295189b2012-06-20 16:38:30 -070026436 @see
26437 @return Result of the function call
26438*/
26439WDI_Status
26440WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026441(
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 WDI_ControlBlockType* pWDICtx,
26443 WDI_EventInfoType* pEventData
26444)
26445{
26446 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026449 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26451
26452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 -------------------------------------------------------------------------*/
26455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26456 ( NULL == pEventData->pEventData ))
26457 {
26458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 }
26463
26464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026465 "%s: Process UPD scan params ptr : %p",
26466 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026467
Jeff Johnsone7245742012-09-05 17:12:55 -070026468 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026469
26470 /*-------------------------------------------------------------------------
26471 Extract response and send it to UMAC
26472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026473 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26474 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026475 sizeof(halUpdScanParams.status));
26476
26477 uStatus = halUpdScanParams.status;
26478
26479 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026481
26482 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026483 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026484
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026486
26487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026489 halUpdScanParams.status);
26490
26491 /*Notify UMAC*/
26492 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26493
Jeff Johnsone7245742012-09-05 17:12:55 -070026494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026495}
26496#endif // FEATURE_WLAN_SCAN_PNO
26497
26498#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026500WDI_8023MulticastListReq
26501(
26502 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26503 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26504 void* pUserData
26505)
26506{
26507 WDI_EventInfoType wdiEventData;
26508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26509
26510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026511 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026512
26513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 ------------------------------------------------------------------------*/
26516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26517 {
26518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26519 "WDI API call before module is initialized - Fail request");
26520
Jeff Johnsone7245742012-09-05 17:12:55 -070026521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026522 }
26523
26524 /*------------------------------------------------------------------------
26525 Fill in Event data and post to the Main FSM
26526 ------------------------------------------------------------------------*/
26527 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026528 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026529 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026530 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 wdiEventData.pUserData = pUserData;
26532
26533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26534}
26535
Jeff Johnsone7245742012-09-05 17:12:55 -070026536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026537WDI_ReceiveFilterSetFilterReq
26538(
26539 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26540 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26541 void* pUserData
26542)
26543{
26544 WDI_EventInfoType wdiEventData;
26545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26546
26547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026548 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026549
26550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026551 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 ------------------------------------------------------------------------*/
26553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26554 {
26555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26556 "WDI API call before module is initialized - Fail request");
26557
Jeff Johnsone7245742012-09-05 17:12:55 -070026558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026559 }
26560
26561 /*------------------------------------------------------------------------
26562 Fill in Event data and post to the Main FSM
26563 ------------------------------------------------------------------------*/
26564 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026565 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26566 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026567 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26568 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026569 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 wdiEventData.pUserData = pUserData;
26571
26572
26573 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26574}
26575
Jeff Johnsone7245742012-09-05 17:12:55 -070026576WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026577WDI_FilterMatchCountReq
26578(
26579 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26580 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26581 void* pUserData
26582)
26583{
26584 WDI_EventInfoType wdiEventData;
26585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26586
26587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026588 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026589
26590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026592 ------------------------------------------------------------------------*/
26593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26594 {
26595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26596 "WDI API call before module is initialized - Fail request");
26597
Jeff Johnsone7245742012-09-05 17:12:55 -070026598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026599 }
26600
26601 /*------------------------------------------------------------------------
26602 Fill in Event data and post to the Main FSM
26603 ------------------------------------------------------------------------*/
26604 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026605 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026606 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026607 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026608 wdiEventData.pUserData = pUserData;
26609
26610
26611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26612}
26613
Jeff Johnsone7245742012-09-05 17:12:55 -070026614WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026615WDI_ReceiveFilterClearFilterReq
26616(
26617 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26618 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26619 void* pUserData
26620)
26621{
26622 WDI_EventInfoType wdiEventData;
26623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26624
26625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026626 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026627
26628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026630 ------------------------------------------------------------------------*/
26631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26632 {
26633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26634 "WDI API call before module is initialized - Fail request");
26635
Jeff Johnsone7245742012-09-05 17:12:55 -070026636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026637 }
26638
26639 /*------------------------------------------------------------------------
26640 Fill in Event data and post to the Main FSM
26641 ------------------------------------------------------------------------*/
26642 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026643 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026644 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026645 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026646 wdiEventData.pUserData = pUserData;
26647
26648
26649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26650}
26651
26652/**
26653 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026654
26655 @param pWDICtx: pointer to the WLAN DAL context
26656 pEventData: pointer to the event information structure
26657
Jeff Johnson295189b2012-06-20 16:38:30 -070026658 @see
26659 @return Result of the function call
26660*/
26661WDI_Status
26662WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026663(
Jeff Johnson295189b2012-06-20 16:38:30 -070026664 WDI_ControlBlockType* pWDICtx,
26665 WDI_EventInfoType* pEventData
26666)
26667{
26668 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26669 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026671 wpt_uint16 usDataOffset = 0;
26672 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026673 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026674 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026675 wpt_uint8 ucCurrentBSSSesIdx = 0;
26676 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026677
26678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026679 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026680
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026681 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26682 if( NULL == pRcvFltMcAddrListType )
26683 {
26684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26685 "Failed to alloc in WDI_Process8023MulticastListReq");
26686 return WDI_STATUS_E_FAILURE;
26687 }
26688
Jeff Johnson295189b2012-06-20 16:38:30 -070026689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 -------------------------------------------------------------------------*/
26692 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026693 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026694 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026695 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026696 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26697 {
26698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026699 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026700 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026702 return WDI_STATUS_E_FAILURE;
26703 }
26704
26705 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26706 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26707 &pBSSSes);
26708 if ( NULL == pBSSSes )
26709 {
26710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026711 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026712 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026714 }
26715
26716 /*-----------------------------------------------------------------------
26717 Get message buffer
26718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26720 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026721 sizeof(tHalRcvFltMcAddrListType),
26722 &pSendBuffer, &usDataOffset, &usSendSize))||
26723 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26724 {
26725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26726 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026727 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026728 pEventData, pwdiFltPktSetMcListReqParamsType,
26729 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026730 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026733 }
26734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026735 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026737 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026739 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026740 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26741 sizeof(tSirMacAddr));
26742 }
26743
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026744 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026745 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026746 pRcvFltMcAddrListType,
26747 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026748
26749 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026750 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026751
26752
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026753 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026755 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026758 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026759 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026760}
26761
26762/**
26763 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026764
26765 @param pWDICtx: pointer to the WLAN DAL context
26766 pEventData: pointer to the event information structure
26767
Jeff Johnson295189b2012-06-20 16:38:30 -070026768 @see
26769 @return Result of the function call
26770*/
26771WDI_Status
26772WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026773(
Jeff Johnson295189b2012-06-20 16:38:30 -070026774 WDI_ControlBlockType* pWDICtx,
26775 WDI_EventInfoType* pEventData
26776)
26777{
26778 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26779 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026781 wpt_uint16 usDataOffset = 0;
26782 wpt_uint16 usSendSize = 0;
26783 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026784 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026785 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026786 wpt_uint8 ucCurrentBSSSesIdx = 0;
26787 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026788 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26789 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026790
26791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026792 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026793
26794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 -------------------------------------------------------------------------*/
26797 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026798 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026799 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026800 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026801 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26802 {
26803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 return WDI_STATUS_E_FAILURE;
26807 }
26808
26809 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26810 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26811 &pBSSSes);
26812 if ( NULL == pBSSSes )
26813 {
26814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026815 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 }
26818
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026819 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26820 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026821
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026822 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26823 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26824 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26825
26826 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26827 usSessRcvPktFilterCfgSize);
26828
26829 if(NULL == pSessRcvPktFilterCfg)
26830 {
26831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26832 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026833 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026834 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026835 WDI_ASSERT(0);
26836 return WDI_STATUS_E_FAILURE;
26837 }
26838
26839 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26840
26841 /*-----------------------------------------------------------------------
26842 Get message buffer
26843 -----------------------------------------------------------------------*/
26844
26845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26846 usSessRcvPktFilterCfgSize,
26847 &pSendBuffer, &usDataOffset, &usSendSize))||
26848 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26849 {
26850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26851 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026852 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026853 pEventData, pwdiSetRcvPktFilterReqInfo,
26854 wdiReceiveFilterSetFilterCb);
26855 WDI_ASSERT(0);
26856 wpalMemoryFree(pSessRcvPktFilterCfg);
26857 return WDI_STATUS_E_FAILURE;
26858 }
26859
26860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026861 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026862 usSendSize,pSessRcvPktFilterCfg);
26863
26864 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26865 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26866 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26867 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26868
26869 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26870
26871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26872 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26873 pSessRcvPktFilterCfg->filterType);
26874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26875 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26876 pSessRcvPktFilterCfg->coleasceTime);
26877
26878 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26879 {
26880 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26881 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26882 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26883 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26884 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26885 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26886 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26887 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26888
26889 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26890 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26891 8);
26892 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26893 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26894 8);
26895
26896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026897 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026898 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26899 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26900
26901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026902 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026903 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26904 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26905
26906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026907 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026908 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26909 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26910 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26911 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26912 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26913 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26914
26915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026916 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026917 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26918 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26919 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26920 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26921 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26922 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26923 }
26924
26925 wpalMemoryCopy( pSendBuffer+usDataOffset,
26926 pSessRcvPktFilterCfg,
26927 usSessRcvPktFilterCfgSize);
26928
26929
26930 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26931 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26932
26933 wpalMemoryFree(pSessRcvPktFilterCfg);
26934
26935 }
26936 /*If SLM_SESSIONIZATION is not supported then do this */
26937 else
26938 {
26939 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26940 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26941 * sizeof(tHalRcvPktFilterParams));
26942
26943 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026944 usRcvPktFilterCfgSize);
26945
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026946 if(NULL == pRcvPktFilterCfg)
26947 {
26948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26949 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026950 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026951 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026952 WDI_ASSERT(0);
26953 return WDI_STATUS_E_FAILURE;
26954 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026955
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026956 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026957
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026958 /*-----------------------------------------------------------------------
26959 Get message buffer
26960 -----------------------------------------------------------------------*/
26961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026962 usRcvPktFilterCfgSize,
26963 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026964 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26965 {
26966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026967 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026968 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026969 pEventData, pwdiSetRcvPktFilterReqInfo,
26970 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026971 WDI_ASSERT(0);
26972 wpalMemoryFree(pRcvPktFilterCfg);
26973 return WDI_STATUS_E_FAILURE;
26974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026977 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026978 usSendSize,usRcvPktFilterCfgSize);
26979
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026980 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26981 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26982 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26983 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026984
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026986 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026987 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026989 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026990 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026991
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026992 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26993 {
26994 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26995 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26996 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26997 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26998 pRcvPktFilterCfg->paramsData[i].dataOffset =
26999 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27000 pRcvPktFilterCfg->paramsData[i].dataLength =
27001 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027003 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027004 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27005 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027006 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27008 8);
27009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027011 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27014
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027016 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027017 pRcvPktFilterCfg->paramsData[i].dataOffset,
27018 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027019
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027021 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027022 pRcvPktFilterCfg->paramsData[i].compareData[0],
27023 pRcvPktFilterCfg->paramsData[i].compareData[1],
27024 pRcvPktFilterCfg->paramsData[i].compareData[2],
27025 pRcvPktFilterCfg->paramsData[i].compareData[3],
27026 pRcvPktFilterCfg->paramsData[i].compareData[4],
27027 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027028
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027030 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027031 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27032 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27033 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27034 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27035 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27036 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27037 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027039 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027040 pRcvPktFilterCfg,
27041 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027042
27043
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027044 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27045 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027048 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027049 wpalMemoryFree(pRcvPktFilterCfg);
27050 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027052 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027055 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027056 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027057}
27058
27059/**
27060 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027061
27062 @param pWDICtx: pointer to the WLAN DAL context
27063 pEventData: pointer to the event information structure
27064
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 @see
27066 @return Result of the function call
27067*/
27068WDI_Status
27069WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027070(
Jeff Johnson295189b2012-06-20 16:38:30 -070027071 WDI_ControlBlockType* pWDICtx,
27072 WDI_EventInfoType* pEventData
27073)
27074{
27075 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27076 NULL;
27077 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27078 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027080 wpt_uint16 usDataOffset = 0;
27081 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027082 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27083 wpt_uint8 ucCurrentBSSSesIdx = 0;
27084 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027085
27086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027087 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027088
27089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027091 -------------------------------------------------------------------------*/
27092 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027093 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027094 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027095 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27097 {
27098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 }
27103
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027104 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27105 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27106 &pBSSSes);
27107 if ( NULL == pBSSSes )
27108 {
27109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027110 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027111 return WDI_STATUS_E_FAILURE;
27112 }
27113
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 /*-----------------------------------------------------------------------
27115 Get message buffer
27116 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27118 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027119 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027120 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027121 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027122 {
27123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27124 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027125 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027126 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27127 wdiFilterMatchCountCb);
27128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027130 }
27131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027132 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27133 wpalMemoryCopy( pSendBuffer+usDataOffset,
27134 &rcvFltPktMatchCntReqParam,
27135 sizeof(rcvFltPktMatchCntReqParam));
27136
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 //
27138 // Don't need to fill send buffer other than header
27139 //
27140 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027141 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027142
27143
27144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27148 wdiFilterMatchCountCb,
27149 pEventData->pUserData,
27150 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027151}
27152
27153/**
27154 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027155
27156 @param pWDICtx: pointer to the WLAN DAL context
27157 pEventData: pointer to the event information structure
27158
Jeff Johnson295189b2012-06-20 16:38:30 -070027159 @see
27160 @return Result of the function call
27161*/
27162WDI_Status
27163WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027164(
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 WDI_ControlBlockType* pWDICtx,
27166 WDI_EventInfoType* pEventData
27167)
Jeff Johnsone7245742012-09-05 17:12:55 -070027168{
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27170 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 wpt_uint16 usDataOffset = 0;
27173 wpt_uint16 usSendSize = 0;
27174 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027175 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027176 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
27178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027179 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180
27181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027183 -------------------------------------------------------------------------*/
27184 if (( NULL == pEventData ) ||
27185 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27186 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027187 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027188 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27189 {
27190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 return WDI_STATUS_E_FAILURE;
27194 }
27195
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027196 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027197 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27198 &pBSSSes);
27199 if ( NULL == pBSSSes )
27200 {
27201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027202 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027204 }
27205
27206 /*-----------------------------------------------------------------------
27207 Get message buffer
27208 -----------------------------------------------------------------------*/
27209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027210 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027211 sizeof(tHalRcvFltPktClearParam),
27212 &pSendBuffer, &usDataOffset, &usSendSize))||
27213 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27214 {
27215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27216 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027217 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027218 pEventData, pwdiRcvFltPktClearReqParamsType,
27219 wdiRcvFltPktClearFilterCb);
27220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027222 }
27223
27224
27225 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027226 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027227 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027228 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027229
Jeff Johnsone7245742012-09-05 17:12:55 -070027230 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27231 wpalMemoryCopy( pSendBuffer+usDataOffset,
27232 &rcvFltPktClearParam,
27233 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027234
27235 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027236 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027237
27238
27239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027243 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027244 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027245}
27246
27247/**
27248 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027249
27250 @param pWDICtx: pointer to the WLAN DAL context
27251 pEventData: pointer to the event information structure
27252
Jeff Johnson295189b2012-06-20 16:38:30 -070027253 @see
27254 @return Result of the function call
27255*/
27256WDI_Status
27257WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027258(
Jeff Johnson295189b2012-06-20 16:38:30 -070027259 WDI_ControlBlockType* pWDICtx,
27260 WDI_EventInfoType* pEventData
27261)
27262{
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 eHalStatus halStatus;
27264 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027265 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27266 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27268
27269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027270 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027271
27272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027274 -------------------------------------------------------------------------*/
27275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27276 ( NULL == pEventData->pEventData ))
27277 {
27278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 }
27283
Jeff Johnsone7245742012-09-05 17:12:55 -070027284 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027285
27286 /*-------------------------------------------------------------------------
27287 Extract response and send it to UMAC
27288 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027289 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27290 {
27291 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27292 pEventData->pEventData,
27293 sizeof(halRcvFltPktSetMcListRsp));
27294
27295 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27296 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27297 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27298 halRcvFltPktSetMcListRsp.bssIdx;
27299 }
27300 else
27301 {
27302 halStatus = *((eHalStatus*)pEventData->pEventData);
27303 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27304 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027305
27306 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027307 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027308
Jeff Johnsone7245742012-09-05 17:12:55 -070027309 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027310}
27311
27312/**
27313 @brief Process Set Rsp function (called when a
27314 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027315
27316 @param pWDICtx: pointer to the WLAN DAL context
27317 pEventData: pointer to the event information structure
27318
Jeff Johnson295189b2012-06-20 16:38:30 -070027319 @see
27320 @return Result of the function call
27321*/
27322WDI_Status
27323WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027324(
Jeff Johnson295189b2012-06-20 16:38:30 -070027325 WDI_ControlBlockType* pWDICtx,
27326 WDI_EventInfoType* pEventData
27327)
27328{
Jeff Johnson295189b2012-06-20 16:38:30 -070027329 eHalStatus halStatus;
27330 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027331 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27332 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27334
27335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027336 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027337
27338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 -------------------------------------------------------------------------*/
27341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27342 ( NULL == pEventData->pEventData ))
27343 {
27344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027348 }
27349
27350 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027351 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027352
27353 /*-------------------------------------------------------------------------
27354 Extract response and send it to UMAC
27355 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027356 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27357 {
27358 wpalMemoryCopy( &halSetPktFilterRspParams,
27359 pEventData->pEventData,
27360 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027361
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027362 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27363 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27364 }
27365 else
27366 {
27367 halStatus = *((eHalStatus*)pEventData->pEventData);
27368 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27369 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027370 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027371 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027372
Jeff Johnsone7245742012-09-05 17:12:55 -070027373 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027374}
27375
27376/**
27377 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027378
27379 @param pWDICtx: pointer to the WLAN DAL context
27380 pEventData: pointer to the event information structure
27381
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 @see
27383 @return Result of the function call
27384*/
27385WDI_Status
27386WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027387(
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 WDI_ControlBlockType* pWDICtx,
27389 WDI_EventInfoType* pEventData
27390)
27391{
Jeff Johnson295189b2012-06-20 16:38:30 -070027392 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027394 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27395 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027396
27397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27398
27399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027400 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027401
27402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027404 -------------------------------------------------------------------------*/
27405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27406 ( NULL == pEventData->pEventData ))
27407 {
27408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027412 }
27413
Jeff Johnsone7245742012-09-05 17:12:55 -070027414 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027415
27416 /*-------------------------------------------------------------------------
27417 Extract response and send it to UMAC
27418 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027419 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27420 {
27421 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27422 pEventData->pEventData,
27423 sizeof(halRcvFltrPktMatachRsp));
27424
27425 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27426 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27427 }
27428 else
27429 {
27430 halStatus = *((eHalStatus*)pEventData->pEventData);
27431 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27432 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027433
27434 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027435 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027436
Jeff Johnsone7245742012-09-05 17:12:55 -070027437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027438}
27439
27440/**
27441 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027442
27443 @param pWDICtx: pointer to the WLAN DAL context
27444 pEventData: pointer to the event information structure
27445
Jeff Johnson295189b2012-06-20 16:38:30 -070027446 @see
27447 @return Result of the function call
27448*/
27449WDI_Status
27450WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027451(
Jeff Johnson295189b2012-06-20 16:38:30 -070027452 WDI_ControlBlockType* pWDICtx,
27453 WDI_EventInfoType* pEventData
27454)
27455{
Jeff Johnson295189b2012-06-20 16:38:30 -070027456 eHalStatus halStatus;
27457 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027458 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27459 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27461
27462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027463 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027464
27465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 -------------------------------------------------------------------------*/
27468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27469 ( NULL == pEventData->pEventData ))
27470 {
27471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 }
27476
27477 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027478 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027479
27480 /*-------------------------------------------------------------------------
27481 Extract response and send it to UMAC
27482 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027483 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27484 {
27485 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27486 pEventData->pEventData,
27487 sizeof(halRcvFltPktClearRspMsg));
27488
27489 wdiRcvFltPktClearRspParamsType.wdiStatus =
27490 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27491 wdiRcvFltPktClearRspParamsType.bssIdx =
27492 halRcvFltPktClearRspMsg.bssIdx;
27493 }
27494 else
27495 {
27496 halStatus = *((eHalStatus*)pEventData->pEventData);
27497 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027499
27500 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027501 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027502
Jeff Johnsone7245742012-09-05 17:12:55 -070027503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027504}
27505#endif // WLAN_FEATURE_PACKET_FILTERING
27506
27507/**
27508 @brief Process Shutdown Rsp function
27509 There is no shutdown response comming from HAL
27510 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027511
Jeff Johnson295189b2012-06-20 16:38:30 -070027512 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027513 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027514
27515 @see
27516 @return Result of the function call
27517*/
27518WDI_Status
27519WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027520(
Jeff Johnson295189b2012-06-20 16:38:30 -070027521 WDI_ControlBlockType* pWDICtx,
27522 WDI_EventInfoType* pEventData
27523)
27524{
27525 /*There is no shutdown response comming from HAL - function just kept for
27526 simmetry */
27527 WDI_ASSERT(0);
27528 return WDI_STATUS_SUCCESS;
27529}/*WDI_ProcessShutdownRsp*/
27530
27531/**
27532 @brief WDI_SetPowerParamsReq
27533
Jeff Johnsone7245742012-09-05 17:12:55 -070027534 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027535 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027536
Jeff Johnson295189b2012-06-20 16:38:30 -070027537 wdiPowerParamsCb: callback for passing back the response
27538 of the Set Power Params operation received from the
27539 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027540
Jeff Johnson295189b2012-06-20 16:38:30 -070027541 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027542 callback
27543
Jeff Johnson295189b2012-06-20 16:38:30 -070027544 @return Result of the function call
27545*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027547WDI_SetPowerParamsReq
27548(
27549 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27550 WDI_SetPowerParamsCb wdiPowerParamsCb,
27551 void* pUserData
27552)
27553{
27554 WDI_EventInfoType wdiEventData;
27555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27556
27557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027559 ------------------------------------------------------------------------*/
27560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27561 {
27562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27563 "WDI API call before module is initialized - Fail request");
27564
Jeff Johnsone7245742012-09-05 17:12:55 -070027565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027566 }
27567
27568 /*------------------------------------------------------------------------
27569 Fill in Event data and post to the Main FSM
27570 ------------------------------------------------------------------------*/
27571 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027572 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027573 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027574 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027575 wdiEventData.pUserData = pUserData;
27576
27577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27578}/*WDI_SetPowerParamsReq*/
27579
27580/**
27581 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027582
27583 @param pWDICtx: pointer to the WLAN DAL context
27584 pEventData: pointer to the event information structure
27585
Jeff Johnson295189b2012-06-20 16:38:30 -070027586 @see
27587 @return Result of the function call
27588*/
27589WDI_Status
27590WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027591(
Jeff Johnson295189b2012-06-20 16:38:30 -070027592 WDI_ControlBlockType* pWDICtx,
27593 WDI_EventInfoType* pEventData
27594)
27595{
27596 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27597 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027599 wpt_uint16 usDataOffset = 0;
27600 wpt_uint16 usSendSize = 0;
27601 tSetPowerParamsType powerParams;
27602
27603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 -------------------------------------------------------------------------*/
27606 if (( NULL == pEventData ) ||
27607 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27608 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27609 {
27610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027614 }
27615
27616 /*-----------------------------------------------------------------------
27617 Get message buffer
27618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027620 sizeof(powerParams),
27621 &pSendBuffer, &usDataOffset, &usSendSize))||
27622 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27623 {
27624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027625 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027629 }
27630
27631 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027632 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027633 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27634
27635 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027636 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027637 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27638
27639 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027640 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027641 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27642
27643 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027644 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027645 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27646
27647 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027648 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027649 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27650
27651 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027652 powerParams.uBETInterval =
27653 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027654
Yue Mac24062f2013-05-13 17:01:29 -070027655 /* MAX LI for modulated DTIM */
27656 powerParams.uMaxLIModulatedDTIM =
27657 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027658
27659 wpalMemoryCopy( pSendBuffer+usDataOffset,
27660 &powerParams,
27661 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027662
27663 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027664 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027665
27666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027667 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27670 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027671}
27672
27673/**
27674 @brief Process Power Params Rsp function (called when a
27675 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027676
27677 @param pWDICtx: pointer to the WLAN DAL context
27678 pEventData: pointer to the event information structure
27679
Jeff Johnson295189b2012-06-20 16:38:30 -070027680 @see
27681 @return Result of the function call
27682*/
27683WDI_Status
27684WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027685(
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 WDI_ControlBlockType* pWDICtx,
27687 WDI_EventInfoType* pEventData
27688)
27689{
27690 WDI_Status wdiStatus;
27691 eHalStatus halStatus;
27692 WDI_SetPowerParamsCb wdiPowerParamsCb;
27693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27694
27695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027697 -------------------------------------------------------------------------*/
27698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27699 ( NULL == pEventData->pEventData ))
27700 {
27701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027705 }
27706
Jeff Johnsone7245742012-09-05 17:12:55 -070027707 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027708
27709 /*-------------------------------------------------------------------------
27710 Extract response and send it to UMAC
27711 -------------------------------------------------------------------------*/
27712 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027713 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027714
27715 /*Notify UMAC*/
27716 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27717
Jeff Johnsone7245742012-09-05 17:12:55 -070027718 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027719}/*WDI_ProcessSetPowerParamsRsp*/
27720
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027721/**
27722 @brief WDI_dhcpStartInd
27723 Host will send an event to the FW when DHCP is initiated
27724
27725 @param
27726 WDI_DHCPInd: DHCP Indication
27727 @see
27728 @return Result of the function call
27729*/
27730WDI_Status
27731WDI_dhcpStartInd
27732(
27733 WDI_DHCPInd *wdiDHCPInd
27734)
27735{
27736 WDI_EventInfoType wdiEventData;
27737
27738 /*------------------------------------------------------------------------
27739 Sanity Check
27740 ------------------------------------------------------------------------*/
27741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27742 {
27743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27744 "WDI API call before module is initialized - Fail request");
27745
27746 return WDI_STATUS_E_NOT_ALLOWED;
27747 }
27748
27749 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27750 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027751 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027752 wdiEventData.pCBfnc = NULL;
27753 wdiEventData.pUserData = NULL;
27754
27755 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27756}
27757
27758
27759/**
27760 @brief WDI_dhcpStopInd
27761 Host will send an event to the FW when DHCP is completed
27762
27763 @param
27764 WDI_DHCPInd: DHCP Indication
27765 @see
27766 @return Result of the function call
27767*/
27768WDI_Status
27769WDI_dhcpStopInd
27770(
27771 WDI_DHCPInd *wdiDHCPInd
27772)
27773{
27774 WDI_EventInfoType wdiEventData;
27775
27776 /*------------------------------------------------------------------------
27777 Sanity Check
27778 ------------------------------------------------------------------------*/
27779 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27780 {
27781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27782 "WDI API call before module is initialized - Fail request");
27783
27784 return WDI_STATUS_E_NOT_ALLOWED;
27785 }
27786
27787 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27788 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027789 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027790 wdiEventData.pCBfnc = NULL;
27791 wdiEventData.pUserData = NULL;
27792
27793 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27794}
27795
27796
27797/**
27798 @brief Process DHCP Start Indication message and post it to HAL
27799
27800 @param pWDICtx: pointer to the WLAN DAL context
27801 pEventData: pointer to the event information structure
27802
27803 @see
27804 @return Result of the function call
27805*/
27806WDI_Status
27807WDI_ProcessDHCPStartInd
27808(
27809 WDI_ControlBlockType* pWDICtx,
27810 WDI_EventInfoType* pEventData
27811)
27812{
27813 wpt_uint8* pSendBuffer = NULL;
27814 wpt_uint16 usDataOffset = 0;
27815 wpt_uint16 usSendSize = 0;
27816 wpt_uint16 usLen = 0;
27817 WDI_DHCPInd* pwdiDHCPInd = NULL;
27818 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027819 WDI_Status wdiStatus;
27820
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027821
27822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27823
27824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27825 "%s", __func__);
27826
27827 /*-------------------------------------------------------------------------
27828 Sanity check
27829 -------------------------------------------------------------------------*/
27830 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27831 {
27832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27833 "%s: Invalid parameters", __func__);
27834 WDI_ASSERT(0);
27835 return WDI_STATUS_E_FAILURE;
27836 }
27837 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27838 /*-----------------------------------------------------------------------
27839 Get message buffer
27840 -----------------------------------------------------------------------*/
27841
27842 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27843 WDI_DHCP_START_IND,
27844 sizeof(tDHCPInfo),
27845 &pSendBuffer, &usDataOffset, &usSendSize))||
27846 ( usSendSize < (usDataOffset + usLen )))
27847 {
27848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27849 "Unable to get send buffer in DHCP Start req %p ",
27850 pEventData);
27851 WDI_ASSERT(0);
27852 return WDI_STATUS_E_FAILURE;
27853 }
27854
Sandeep Puligillaee789512014-02-13 19:14:52 +053027855 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027856 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27857 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27858 WDI_MAC_ADDR_LEN);
27859
27860 pWDICtx->pReqStatusUserData = NULL;
27861 pWDICtx->pfncRspCB = NULL;
27862
27863 /*-------------------------------------------------------------------------
27864 Send DHCP Start Indication to HAL
27865 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027866 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27867 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027868}/*WDI_ProcessDHCPStartInd*/
27869
27870/**
27871 @brief Process DHCP Stop indication message and post it to HAL
27872
27873 @param pWDICtx: pointer to the WLAN DAL context
27874 pEventData: pointer to the event information structure
27875
27876 @see
27877 @return Result of the function call
27878*/
27879WDI_Status
27880WDI_ProcessDHCPStopInd
27881(
27882 WDI_ControlBlockType* pWDICtx,
27883 WDI_EventInfoType* pEventData
27884)
27885{
27886 wpt_uint8* pSendBuffer = NULL;
27887 wpt_uint16 usDataOffset = 0;
27888 wpt_uint16 usSendSize = 0;
27889 wpt_uint16 usLen = 0;
27890 WDI_DHCPInd* pwdiDHCPInd = NULL;
27891 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027892 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027893
27894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27895
27896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27897 "%s", __func__);
27898
27899 /*-------------------------------------------------------------------------
27900 Sanity check
27901 -------------------------------------------------------------------------*/
27902
27903 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27904 {
27905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27906 "%s: Invalid parameters", __func__);
27907 WDI_ASSERT(0);
27908 return WDI_STATUS_E_FAILURE;
27909 }
27910 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27911 /*-----------------------------------------------------------------------
27912 Get message buffer
27913 -----------------------------------------------------------------------*/
27914
27915 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27916 WDI_DHCP_STOP_IND,
27917 sizeof(tDHCPInfo),
27918 &pSendBuffer, &usDataOffset, &usSendSize))||
27919 ( usSendSize < (usDataOffset + usLen )))
27920 {
27921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27922 "Unable to get send buffer in DHCP Start req %p ",
27923 pEventData);
27924 WDI_ASSERT(0);
27925 return WDI_STATUS_E_FAILURE;
27926 }
27927
Sandeep Puligillaee789512014-02-13 19:14:52 +053027928 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027929 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27930 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27931 WDI_MAC_ADDR_LEN);
27932
27933 pWDICtx->pReqStatusUserData = NULL;
27934 pWDICtx->pfncRspCB = NULL;
27935 /*-------------------------------------------------------------------------
27936 Send DHCP Stop indication to HAL
27937 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027938 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27939 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027940
27941}/*WDI_ProcessDHCPStopInd*/
27942
27943
Jeff Johnson295189b2012-06-20 16:38:30 -070027944#ifdef WLAN_FEATURE_GTK_OFFLOAD
27945/**
27946 @brief WDI_GTKOffloadReq will be called when the upper MAC
27947 wants to set GTK Rekey Counter while in power save. Upon
27948 the call of this API the WLAN DAL will pack and send a
27949 HAL GTK offload request message to the lower RIVA
27950 sub-system if DAL is in state STARTED.
27951
27952 In state BUSY this request will be queued. Request won't
27953 be allowed in any other state.
27954
27955 WDI_PostAssocReq must have been called.
27956
27957 @param pwdiGtkOffloadParams: the GTK offload as specified
27958 by the Device Interface
27959
27960 wdiGtkOffloadCb: callback for passing back the response
27961 of the GTK offload operation received from the device
27962
27963 pUserData: user data will be passed back with the
27964 callback
27965
27966 @see WDI_PostAssocReq
27967 @return Result of the function call
27968*/
27969WDI_Status
27970WDI_GTKOffloadReq
27971(
27972 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27973 WDI_GtkOffloadCb wdiGtkOffloadCb,
27974 void* pUserData
27975)
27976{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027977 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27979
27980 /*------------------------------------------------------------------------
27981 Sanity Check
27982 ------------------------------------------------------------------------*/
27983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27984 {
27985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27986 "WDI API call before module is initialized - Fail request");
27987
27988 return WDI_STATUS_E_NOT_ALLOWED;
27989 }
27990
27991 /*------------------------------------------------------------------------
27992 Fill in Event data and post to the Main FSM
27993 ------------------------------------------------------------------------*/
27994 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27995 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027996 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027997 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27998 wdiEventData.pUserData = pUserData;
27999
28000 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28001}
28002
28003
28004/**
28005 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28006 MAC wants to get GTK Rekey Counter while in power save.
28007 Upon the call of this API the WLAN DAL will pack and
28008 send a HAL GTK offload request message to the lower RIVA
28009 sub-system if DAL is in state STARTED.
28010
28011 In state BUSY this request will be queued. Request won't
28012 be allowed in any other state.
28013
28014 WDI_PostAssocReq must have been called.
28015
28016 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28017 Information Message as specified by the
28018 Device Interface
28019
28020 wdiGtkOffloadGetInfoCb: callback for passing back the
28021 response of the GTK offload operation received from the
28022 device
28023
28024 pUserData: user data will be passed back with the
28025 callback
28026
28027 @see WDI_PostAssocReq
28028 @return Result of the function call
28029*/
28030WDI_Status
28031WDI_GTKOffloadGetInfoReq
28032(
28033 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28034 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28035 void* pUserData
28036)
28037{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028038 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28040
28041 /*------------------------------------------------------------------------
28042 Sanity Check
28043 ------------------------------------------------------------------------*/
28044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28045 {
28046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28047 "WDI API call before module is initialized - Fail request");
28048
28049 return WDI_STATUS_E_NOT_ALLOWED;
28050 }
28051
28052 /*------------------------------------------------------------------------
28053 Fill in Event data and post to the Main FSM
28054 ------------------------------------------------------------------------*/
28055 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28056 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28057 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28058 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28059 wdiEventData.pUserData = pUserData;
28060
28061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28062}
28063
28064
28065/**
28066 @brief Process set GTK Offload Request function
28067
28068 @param pWDICtx: pointer to the WLAN DAL context
28069 pEventData: pointer to the event information structure
28070
28071 @see
28072 @return Result of the function call
28073*/
28074WDI_Status
28075WDI_ProcessGTKOffloadReq
28076(
28077 WDI_ControlBlockType* pWDICtx,
28078 WDI_EventInfoType* pEventData
28079)
28080{
28081 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28082 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28083 wpt_uint8* pSendBuffer = NULL;
28084 wpt_uint16 usDataOffset = 0;
28085 wpt_uint16 usSendSize = 0;
28086 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028087 wpt_uint8 ucCurrentSessionId = 0;
28088 WDI_BSSSessionType* pBSSSes = NULL;
28089
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28091
28092 /*-------------------------------------------------------------------------
28093 Sanity check
28094 -------------------------------------------------------------------------*/
28095 if (( NULL == pEventData ) ||
28096 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28097 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28098 {
28099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028101 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028102 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028103 }
28104
28105 /*-----------------------------------------------------------------------
28106 Get message buffer
28107 -----------------------------------------------------------------------*/
28108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28109 sizeof(gtkOffloadReqParams),
28110 &pSendBuffer, &usDataOffset, &usSendSize))||
28111 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28112 {
28113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028114 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28116 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028117 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028118 }
28119
28120 //
28121 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28122 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028123 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28124 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28125 &pBSSSes);
28126 if ( NULL == pBSSSes )
28127 {
28128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028129 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028130 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028131 }
28132
28133 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28134
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28136 // Copy KCK
28137 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28138 // Copy KEK
28139 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28140 // Copy KeyReplayCounter
28141 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28142
28143 wpalMemoryCopy( pSendBuffer+usDataOffset,
28144 &gtkOffloadReqParams,
28145 sizeof(gtkOffloadReqParams));
28146
28147 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28148 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28149
28150 /*-------------------------------------------------------------------------
28151 Send Get STA Request to HAL
28152 -------------------------------------------------------------------------*/
28153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28154 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028155
28156fail:
28157 // Release the message buffer so we don't leak
28158 wpalMemoryFree(pSendBuffer);
28159
28160failRequest:
28161 //WDA should have failure check to avoid the memory leak
28162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028163}
28164
28165
28166/**
28167 @brief Process GTK Offload Get Information Request function
28168
28169 @param pWDICtx: pointer to the WLAN DAL context
28170 pEventData: pointer to the event information structure
28171
28172 @see
28173 @return Result of the function call
28174*/
28175WDI_Status
28176WDI_ProcessGTKOffloadGetInfoReq
28177(
28178 WDI_ControlBlockType* pWDICtx,
28179 WDI_EventInfoType* pEventData
28180)
28181{
28182 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28183 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28184 wpt_uint8* pSendBuffer = NULL;
28185 wpt_uint16 usDataOffset = 0;
28186 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028187 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28188 wpt_uint8 ucCurrentSessionId = 0;
28189 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028190
28191 /*-------------------------------------------------------------------------
28192 Sanity check
28193 -------------------------------------------------------------------------*/
28194 if (( NULL == pEventData ) ||
28195 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28196 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28197 {
28198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028200 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028201 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028202 }
28203
28204 /*-----------------------------------------------------------------------
28205 Get message buffer
28206 -----------------------------------------------------------------------*/
28207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028208 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028210 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028211 {
28212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028213 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028214 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28215 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028216 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028218 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28219 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28220 &pBSSSes);
28221 if ( NULL == pBSSSes )
28222 {
28223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028224 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028225 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028226 }
28227 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028228
28229 //
28230 // Don't need to fill send buffer other than header
28231 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028232 wpalMemoryCopy( pSendBuffer+usDataOffset,
28233 &halGtkOffloadGetInfoReqParams,
28234 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028235
28236 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28237 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28238
28239 /*-------------------------------------------------------------------------
28240 Send Get STA Request to HAL
28241 -------------------------------------------------------------------------*/
28242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28243 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028244fail:
28245 // Release the message buffer so we don't leak
28246 wpalMemoryFree(pSendBuffer);
28247
28248failRequest:
28249 //WDA should have failure check to avoid the memory leak
28250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028251}
28252
28253/**
28254 @brief Process host offload Rsp function (called when a
28255 response is being received over the bus from HAL)
28256
28257 @param pWDICtx: pointer to the WLAN DAL context
28258 pEventData: pointer to the event information structure
28259
28260 @see
28261 @return Result of the function call
28262*/
28263WDI_Status
28264WDI_ProcessGtkOffloadRsp
28265(
28266 WDI_ControlBlockType* pWDICtx,
28267 WDI_EventInfoType* pEventData
28268)
28269{
Jeff Johnson295189b2012-06-20 16:38:30 -070028270 eHalStatus halStatus;
28271 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028272 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28273 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028274
28275 /*-------------------------------------------------------------------------
28276 Sanity check
28277 -------------------------------------------------------------------------*/
28278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28279 ( NULL == pEventData->pEventData))
28280 {
28281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028283 WDI_ASSERT(0);
28284 return WDI_STATUS_E_FAILURE;
28285 }
28286
Wilson Yang00256342013-10-10 23:13:38 -070028287 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28288
Jeff Johnson295189b2012-06-20 16:38:30 -070028289 /*-------------------------------------------------------------------------
28290 Extract response and send it to UMAC
28291 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028292 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28293 {
28294 wpalMemoryCopy( &halGtkOffloadRspParams,
28295 pEventData->pEventData,
28296 sizeof(halGtkOffloadRspParams));
28297
28298 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028299 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028300 wdiGtkOffloadRsparams.bssIdx =
28301 halGtkOffloadRspParams.bssIdx;
28302 }
28303 else
28304 {
28305 halStatus = *((eHalStatus*)pEventData->pEventData);
28306 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28307 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028308
28309 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028310 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028311
28312 return WDI_STATUS_SUCCESS;
28313}
28314
28315/**
28316 @brief Process GTK Offload Get Information Response function
28317
28318 @param pWDICtx: pointer to the WLAN DAL context
28319 pEventData: pointer to the event information structure
28320
28321 @see
28322 @return Result of the function call
28323*/
28324WDI_Status
28325WDI_ProcessGTKOffloadGetInfoRsp
28326(
28327 WDI_ControlBlockType* pWDICtx,
28328 WDI_EventInfoType* pEventData
28329)
28330{
Jeff Johnson295189b2012-06-20 16:38:30 -070028331 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028332 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028333 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28334 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028335 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028336
Jeff Johnson295189b2012-06-20 16:38:30 -070028337
28338 /*-------------------------------------------------------------------------
28339 Sanity check
28340 -------------------------------------------------------------------------*/
28341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28342 ( NULL == pEventData->pEventData ))
28343 {
28344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028346 WDI_ASSERT(0);
28347 return WDI_STATUS_E_FAILURE;
28348 }
28349
Wilson Yang00256342013-10-10 23:13:38 -070028350 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28351
28352 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028353 Extract response and send it to UMAC
28354 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028355 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28356 {
28357 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28358 pEventData->pEventData,
28359 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028361 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028362 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028363 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28364 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28365 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28366 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28367 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28368 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28369 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28370 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028371
28372 wpalMutexAcquire(&pWDICtx->wptMutex);
28373 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28374 &pBSSSes);
28375
28376 if ( NULL == pBSSSes )
28377 {
28378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28379 "Association sequence for this BSS does not exist or "
28380 "association no longer in progress - mysterious HAL response");
28381 wpalMutexRelease(&pWDICtx->wptMutex);
28382 return WDI_STATUS_E_NOT_ALLOWED;
28383 }
28384
28385 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28386 sizeof (wpt_macAddr));
28387 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028388 }
28389 else
28390 {
28391 halStatus = *((eHalStatus*)pEventData->pEventData);
28392 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28393 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028394 /*Notify UMAC*/
28395 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28396 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028397 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028398
28399 return WDI_STATUS_SUCCESS;
28400}
28401#endif // WLAN_FEATURE_GTK_OFFLOAD
28402
28403#ifdef WLAN_WAKEUP_EVENTS
28404WDI_Status
28405WDI_ProcessWakeReasonInd
28406(
28407 WDI_ControlBlockType* pWDICtx,
28408 WDI_EventInfoType* pEventData
28409)
28410{
28411 WDI_LowLevelIndType *pWdiInd;
28412 tpWakeReasonParams pWakeReasonParams;
28413 wpt_uint32 allocSize = 0;
28414
28415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028416 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028417
28418 /*-------------------------------------------------------------------------
28419 Sanity check
28420 -------------------------------------------------------------------------*/
28421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28422 ( NULL == pEventData->pEventData ))
28423 {
28424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028426 WDI_ASSERT( 0 );
28427 return WDI_STATUS_E_FAILURE;
28428 }
28429
28430 /*-------------------------------------------------------------------------
28431 Extract indication and send it to UMAC
28432 -------------------------------------------------------------------------*/
28433 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28434
28435 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28436
28437 //Allocate memory for WDI_WakeReasonIndType structure
28438 pWdiInd = wpalMemoryAllocate(allocSize) ;
28439
28440 if(NULL == pWdiInd)
28441 {
28442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028443 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028444 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028445 WDI_ASSERT(0);
28446 return WDI_STATUS_E_FAILURE;
28447 }
28448
28449 wpalMemoryZero(pWdiInd, allocSize);
28450
28451 /* Fill in the indication parameters*/
28452 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28453 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28454 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28455 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28456 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28457 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28458 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28459 &(pWakeReasonParams->aDataStart[0]),
28460 pWakeReasonParams->ulStoredDataLen);
28461
ltimariub77f24b2013-01-24 18:54:33 -080028462
28463 if ( pWDICtx->wdiLowLevelIndCB )
28464 {
28465 /*Notify UMAC*/
28466 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28467 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028468
28469 //Free memory allocated for WDI_WakeReasonIndType structure
28470 wpalMemoryFree(pWdiInd);
28471
28472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028473 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028474
28475 return WDI_STATUS_SUCCESS;
28476}
28477#endif // WLAN_WAKEUP_EVENTS
28478
28479void WDI_GetWcnssCompiledApiVersion
28480(
28481 WDI_WlanVersionType *pWcnssApiVersion
28482)
28483{
28484 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28485 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28486 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28487 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28488}
28489
28490/**
28491 @brief Process Set TM Level Rsp function (called when a
28492 response is being received over the bus from HAL)
28493
28494 @param pWDICtx: pointer to the WLAN DAL context
28495 pEventData: pointer to the event information structure
28496
28497 @see
28498 @return Result of the function call
28499*/
28500WDI_Status
28501WDI_ProcessSetTmLevelRsp
28502(
28503 WDI_ControlBlockType* pWDICtx,
28504 WDI_EventInfoType* pEventData
28505)
28506{
28507 WDI_Status wdiStatus;
28508 eHalStatus halStatus;
28509 WDI_SetTmLevelCb wdiSetTmLevelCb;
28510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28511
28512 /*-------------------------------------------------------------------------
28513 Sanity check
28514 -------------------------------------------------------------------------*/
28515 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28516 ( NULL == pEventData->pEventData ))
28517 {
28518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028520 WDI_ASSERT(0);
28521 return WDI_STATUS_E_FAILURE;
28522 }
28523
28524 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28525
28526 /*-------------------------------------------------------------------------
28527 Extract response and send it to UMAC
28528 -------------------------------------------------------------------------*/
28529 halStatus = *((eHalStatus*)pEventData->pEventData);
28530 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28531
28532 /*Notify UMAC*/
28533 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28534
28535 return WDI_STATUS_SUCCESS;
28536}/*WDI_ProcessSetTmLevelRsp*/
28537
28538/**
28539 @brief Process Set Thermal Mitigation level Changed request
28540
28541 @param pWDICtx: pointer to the WLAN DAL context
28542 pEventData: pointer to the event information structure
28543
28544 @see
28545 @return Result of the function call
28546*/
28547WDI_Status
28548WDI_ProcessSetTmLevelReq
28549(
28550 WDI_ControlBlockType* pWDICtx,
28551 WDI_EventInfoType* pEventData
28552)
28553{
28554 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28555 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28556 wpt_uint8* pSendBuffer = NULL;
28557 wpt_uint16 usDataOffset = 0;
28558 wpt_uint16 usSendSize = 0;
28559 tSetThermalMitgationType halTmMsg;
28560
28561 /*-------------------------------------------------------------------------
28562 Sanity check
28563 -------------------------------------------------------------------------*/
28564 if (( NULL == pEventData ) ||
28565 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28566 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28567 {
28568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028570 WDI_ASSERT(0);
28571 return WDI_STATUS_E_FAILURE;
28572 }
28573
28574 /*-----------------------------------------------------------------------
28575 Get message buffer
28576 -----------------------------------------------------------------------*/
28577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28578 sizeof(halTmMsg),
28579 &pSendBuffer, &usDataOffset, &usSendSize))||
28580 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28581 {
28582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028583 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028584 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28585 WDI_ASSERT(0);
28586 return WDI_STATUS_E_FAILURE;
28587 }
28588
28589 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28590 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28591
28592 wpalMemoryCopy( pSendBuffer+usDataOffset,
28593 &halTmMsg,
28594 sizeof(halTmMsg));
28595
28596 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28597 pWDICtx->pfncRspCB = NULL;
28598 /*-------------------------------------------------------------------------
28599 Send Get STA Request to HAL
28600 -------------------------------------------------------------------------*/
28601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28602 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28603}
28604
28605/* Fill the value from the global features enabled array to the global capabilities
28606 * bitmap struct
28607 */
28608static void
28609FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28610{
28611 wpt_int8 i;
28612 for (i=0; i<len; i++)
28613 {
28614 setFeatCaps(fCaps, enabledFeat[i]);
28615 }
28616}
28617
28618/**
28619 @brief WDI_featureCapsExchangeReq
28620 Post feature capability bitmap exchange event.
28621 Host will send its own capability to FW in this req and
28622 expect FW to send its capability back as a bitmap in Response
28623
28624 @param
28625
28626 wdiFeatureCapsExchangeCb: callback called on getting the response.
28627 It is kept to mantain similarity between WDI reqs and if needed, can
28628 be used in future. Currently, It is set to NULL
28629
28630 pUserData: user data will be passed back with the
28631 callback
28632
28633 @see
28634 @return Result of the function call
28635*/
28636WDI_Status
28637WDI_featureCapsExchangeReq
28638(
28639 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28640 void* pUserData
28641)
28642{
28643 WDI_EventInfoType wdiEventData;
28644 wpt_int32 fCapsStructSize;
28645
28646 /*------------------------------------------------------------------------
28647 Sanity Check
28648 ------------------------------------------------------------------------*/
28649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28650 {
28651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28652 "WDI API call before module is initialized - Fail request");
28653
28654 return WDI_STATUS_E_NOT_ALLOWED;
28655 }
28656
28657 /* Allocate memory separately for global variable carrying FW caps */
28658 fCapsStructSize = sizeof(tWlanFeatCaps);
28659 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28660 if ( NULL == gpHostWlanFeatCaps )
28661 {
28662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028663 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028664 WDI_ASSERT(0);
28665 return WDI_STATUS_MEM_FAILURE;
28666 }
28667
28668 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28669
28670 /*------------------------------------------------------------------------
28671 Fill in Event data and post to the Main FSM
28672 ------------------------------------------------------------------------*/
28673 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28674 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028676 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028677 gpHostWlanFeatCaps->featCaps[0],
28678 gpHostWlanFeatCaps->featCaps[1],
28679 gpHostWlanFeatCaps->featCaps[2],
28680 gpHostWlanFeatCaps->featCaps[3]
28681 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28683 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028684 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28685 wdiEventData.pEventData = gpHostWlanFeatCaps;
28686 wdiEventData.uEventDataSize = fCapsStructSize;
28687 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28688 wdiEventData.pUserData = pUserData;
28689
28690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28691}
28692
28693/**
Yathish9f22e662012-12-10 14:21:35 -080028694 @brief Disable Active mode offload in Host
28695
28696 @param void
28697 @see
28698 @return void
28699*/
28700void
28701WDI_disableCapablityFeature(wpt_uint8 feature_index)
28702{
28703 supportEnabledFeatures[feature_index] = 0;
28704 return;
28705}
28706
28707/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028708 @brief Process Host-FW Capability Exchange Request function
28709
28710 @param pWDICtx: pointer to the WLAN DAL context
28711 pEventData: pointer to the event information structure
28712
28713 @see
28714 @return Result of the function call
28715*/
28716WDI_Status
28717WDI_ProcessFeatureCapsExchangeReq
28718(
28719 WDI_ControlBlockType* pWDICtx,
28720 WDI_EventInfoType* pEventData
28721)
28722{
28723 wpt_uint8* pSendBuffer = NULL;
28724 wpt_uint16 usDataOffset = 0;
28725 wpt_uint16 usSendSize = 0;
28726 wpt_uint16 usLen = 0;
28727
28728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28729
28730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028731 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028732
28733 /*-------------------------------------------------------------------------
28734 Sanity check
28735 -------------------------------------------------------------------------*/
28736 /* Call back function is NULL since not required for cap exchange req */
28737 if (( NULL == pEventData ) ||
28738 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28739 {
28740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028742 WDI_ASSERT(0);
28743 return WDI_STATUS_E_FAILURE;
28744 }
28745
28746 /*-----------------------------------------------------------------------
28747 Get message buffer
28748 -----------------------------------------------------------------------*/
28749 usLen = sizeof(tWlanFeatCaps);
28750
28751 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28752 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28753 usLen,
28754 &pSendBuffer, &usDataOffset, &usSendSize))||
28755 ( usSendSize < (usDataOffset + usLen )))
28756 {
28757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028758 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028759 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28760 WDI_ASSERT(0);
28761 return WDI_STATUS_E_FAILURE;
28762 }
28763
28764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028765 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028766 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28767 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28768 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28769 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28770 );
28771
28772 /* Copy host caps after the offset in the send buffer */
28773 wpalMemoryCopy( pSendBuffer+usDataOffset,
28774 (tWlanFeatCaps *)pEventData->pEventData,
28775 usLen);
28776
28777 /*-------------------------------------------------------------------------
28778 Send Start Request to HAL
28779 -------------------------------------------------------------------------*/
28780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28781 (WDI_StartRspCb)pEventData->pCBfnc,
28782 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28783
28784}/*WDI_ProcessFeatureCapsExchangeReq*/
28785
28786/**
28787 @brief Process Host-FW Capability Exchange Response function
28788
28789 @param pWDICtx: pointer to the WLAN DAL context
28790 pEventData: pointer to the event information structure
28791
28792 @see
28793 @return Result of the function call
28794*/
28795WDI_Status
28796WDI_ProcessFeatureCapsExchangeRsp
28797(
28798 WDI_ControlBlockType* pWDICtx,
28799 WDI_EventInfoType* pEventData
28800)
28801{
28802 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28803 wpt_int32 fCapsStructSize;
28804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28805
28806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028807 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028808
28809 /*-------------------------------------------------------------------------
28810 Sanity check
28811 -------------------------------------------------------------------------*/
28812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28813 ( NULL == pEventData->pEventData ))
28814 {
28815 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028818 WDI_ASSERT(0);
28819 return WDI_STATUS_E_FAILURE;
28820 }
28821
28822 /* Allocate memory separately for global variable carrying FW caps */
28823 fCapsStructSize = sizeof(tWlanFeatCaps);
28824 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28825 if ( NULL == gpFwWlanFeatCaps )
28826 {
28827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028828 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028829 WDI_ASSERT(0);
28830 return WDI_STATUS_MEM_FAILURE;
28831 }
28832
28833 /*-------------------------------------------------------------------------
28834 Unpack HAL Response Message - the header was already extracted by the
28835 main Response Handling procedure
28836 -------------------------------------------------------------------------*/
28837 /*-------------------------------------------------------------------------
28838 Extract response and send it to UMAC
28839 -------------------------------------------------------------------------*/
28840
28841 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28842 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028844 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028845 gpFwWlanFeatCaps->featCaps[0],
28846 gpFwWlanFeatCaps->featCaps[1],
28847 gpFwWlanFeatCaps->featCaps[2],
28848 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028849 );
28850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28851 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028852 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28853
28854 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28855 if (wdiFeatureCapsExchangeCb != NULL)
28856 wdiFeatureCapsExchangeCb(NULL, NULL);
28857
28858 return WDI_STATUS_SUCCESS;
28859}
28860
Mohit Khanna4a70d262012-09-11 16:30:12 -070028861#ifdef WLAN_FEATURE_11AC
28862WDI_Status
28863WDI_ProcessUpdateVHTOpModeRsp
28864(
28865 WDI_ControlBlockType* pWDICtx,
28866 WDI_EventInfoType* pEventData
28867)
28868{
28869 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28870 WDI_Status wdiStatus;
28871 eHalStatus halStatus;
28872
28873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28874
28875 /*-------------------------------------------------------------------------
28876 Sanity check
28877 -------------------------------------------------------------------------*/
28878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28879 ( NULL == pEventData->pEventData))
28880 {
28881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028882 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028883 WDI_ASSERT(0);
28884 return WDI_STATUS_E_FAILURE;
28885 }
28886 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28887
28888 /*-------------------------------------------------------------------------
28889 Extract response and send it to UMAC
28890 -------------------------------------------------------------------------*/
28891 halStatus = *((eHalStatus*)pEventData->pEventData);
28892 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28893
28894 /*Notify UMAC*/
28895 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28896
28897 return WDI_STATUS_SUCCESS;
28898}
28899#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028900/**
28901 @brief WDI_getHostWlanFeatCaps
28902 WDI API that returns whether the feature passed to it as enum value in
28903 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28904 variable storing host capability bitmap to find this. This can be used by
28905 other moduels to decide certain things like call different APIs based on
28906 whether a particular feature is supported.
28907
28908 @param
28909
28910 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28911
28912 @see
28913 @return
28914 0 - if the feature is NOT supported in host
28915 any non-zero value - if the feature is SUPPORTED in host.
28916*/
28917wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28918{
28919 wpt_uint8 featSupported = 0;
28920 if (gpHostWlanFeatCaps != NULL)
28921 {
28922 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28923 }
28924 else
28925 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028927 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028928 }
28929 return featSupported;
28930}
28931
28932/**
28933 @brief WDI_getFwWlanFeatCaps
28934 WDI API that returns whether the feature passed to it as enum value in
28935 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28936 variable storing host capability bitmap to find this. This can be used by
28937 other moduels to decide certain things like call different APIs based on
28938 whether a particular feature is supported.
28939
28940 @param
28941
28942 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28943 in wlan_hal_msg.h.
28944
28945 @see
28946 @return
28947 0 - if the feature is NOT supported in FW
28948 any non-zero value - if the feature is SUPPORTED in FW.
28949*/
28950wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28951{
28952 wpt_uint8 featSupported = 0;
28953 if (gpFwWlanFeatCaps != NULL)
28954 {
28955 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28956 }
28957 else
28958 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028960 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028961 }
28962 return featSupported;
28963}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028964
28965#ifdef WLAN_FEATURE_11AC
28966WDI_Status
28967WDI_ProcessUpdateVHTOpModeReq
28968(
28969 WDI_ControlBlockType* pWDICtx,
28970 WDI_EventInfoType* pEventData
28971)
28972{
28973 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28974 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28975 wpt_uint8* pSendBuffer = NULL;
28976 wpt_uint16 usDataOffset = 0;
28977 wpt_uint16 usSendSize = 0;
28978
28979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28980
28981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028982 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028983
28984 /*-------------------------------------------------------------------------
28985 Sanity check
28986 -------------------------------------------------------------------------*/
28987 if (( NULL == pEventData ) ||
28988 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28989 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28990 {
28991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028992 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028993 WDI_ASSERT(0);
28994 return WDI_STATUS_E_FAILURE;
28995 }
28996
28997 /*-----------------------------------------------------------------------
28998 Get message buffer
28999 -----------------------------------------------------------------------*/
29000 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29001 sizeof(WDI_UpdateVHTOpMode),
29002 &pSendBuffer, &usDataOffset, &usSendSize))||
29003 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29004 {
29005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29006 "Unable to get send buffer in update vht opMode req");
29007 WDI_ASSERT(0);
29008 return WDI_STATUS_E_FAILURE;
29009 }
29010
29011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029012 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029013
29014 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29015 sizeof(WDI_UpdateVHTOpMode));
29016
29017 /*-------------------------------------------------------------------------
29018 Send Start Request to HAL
29019 -------------------------------------------------------------------------*/
29020 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29021 wdiVHTOpModeCb,
29022 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29023
29024}
29025
29026WDI_Status
29027WDI_UpdateVHTOpModeReq
29028(
29029 WDI_UpdateVHTOpMode *pData,
29030 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29031 void* pUserData
29032)
29033{
29034 WDI_EventInfoType wdiEventData;
29035
29036 /*------------------------------------------------------------------------
29037 Sanity Check
29038 ------------------------------------------------------------------------*/
29039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29040 {
29041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29042 "WDI API call before module is initialized - Fail request");
29043
29044 return WDI_STATUS_E_NOT_ALLOWED;
29045 }
29046
29047 /*------------------------------------------------------------------------
29048 Fill in Event data and post to the Main FSM
29049 ------------------------------------------------------------------------*/
29050 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29051 wdiEventData.pEventData = pData;
29052 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29053 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29054 wdiEventData.pUserData = pUserData;
29055
29056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029057 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029058
29059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29060
29061}
29062#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029063
29064/**
29065 @brief WDI_TransportChannelDebug -
29066 Display DXE Channel debugging information
29067 User may request to display DXE channel snapshot
29068 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029069
Jeff Johnsonb88db982012-12-10 13:34:59 -080029070 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029071 @param debugFlags : Enable stall detect features
29072 defined by WPAL_DeviceDebugFlags
29073 These features may effect
29074 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029075 @see
29076 @return none
29077*/
29078void WDI_TransportChannelDebug
29079(
29080 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029081 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029082)
29083{
Mihir Shete40a55652014-03-02 14:14:47 +053029084 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029085 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029086}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029087/**
29088 @brief WDI_SsrTimerCB
29089 Callback function for SSR timer, if this is called then the graceful
29090 shutdown for Riva did not happen.
29091
29092 @param pUserData : user data to timer
29093
29094 @see
29095 @return none
29096*/
29097void
29098WDI_SsrTimerCB
29099(
29100 void *pUserData
29101)
29102{
29103 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29105
29106 if (NULL == pWDICtx )
29107 {
29108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029109 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029110 WDI_ASSERT(0);
29111 return;
29112 }
29113 wpalRivaSubystemRestart();
29114
29115 return;
29116
29117}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029118
29119/**
29120 @brief WDI_SetEnableSSR -
29121 This API is called to enable/disable SSR on WDI timeout.
29122
29123 @param enableSSR : enable/disable SSR
29124
29125 @see
29126 @return none
29127*/
29128void WDI_SetEnableSSR(wpt_boolean enableSSR)
29129{
29130 gWDICb.bEnableSSR = enableSSR;
29131}
Leo Chang9056f462013-08-01 19:21:11 -070029132
29133
29134#ifdef FEATURE_WLAN_LPHB
29135/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029136 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029137 This function will be invoked when FW detects low power
29138 heart beat failure
29139
29140 @param pWDICtx : wdi context
29141 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029142 @see
29143 @return Result of the function call
29144*/
29145WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029146WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029147(
29148 WDI_ControlBlockType* pWDICtx,
29149 WDI_EventInfoType* pEventData
29150)
29151{
29152 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029153 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29155
29156 /*-------------------------------------------------------------------------
29157 Sanity check
29158 -------------------------------------------------------------------------*/
29159 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29160 (NULL == pEventData->pEventData))
29161 {
29162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29163 "%s: Invalid parameters", __func__);
29164 WDI_ASSERT(0);
29165 return WDI_STATUS_E_FAILURE;
29166 }
29167
29168 /*-------------------------------------------------------------------------
29169 Extract indication and send it to UMAC
29170 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029171 wpalMemoryCopy(&lphbIndicationParam,
29172 pEventData->pEventData,
29173 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029174
Leo Changd9df8aa2013-09-26 13:32:26 -070029175 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029176 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029177 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029178 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029179 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029180 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029181 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029182 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029183 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029184 /*Notify UMAC*/
29185 if (pWDICtx->wdiLowLevelIndCB)
29186 {
29187 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29188 }
29189
29190 return WDI_STATUS_SUCCESS;
29191}
29192
29193/**
29194 @brief WDI_ProcessLphbCfgRsp -
29195 LPHB configuration response from FW
29196
29197 @param pWDICtx : wdi context
29198 pEventData : indication data
29199
29200 @see
29201 @return Result of the function call
29202*/
29203WDI_Status WDI_ProcessLphbCfgRsp
29204(
29205 WDI_ControlBlockType* pWDICtx,
29206 WDI_EventInfoType* pEventData
29207)
29208{
29209 WDI_Status wdiStatus;
29210 eHalStatus halStatus;
29211 WDI_LphbCfgCb wdiLphbCfgCb;
29212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29213
29214 /*-------------------------------------------------------------------------
29215 Sanity check
29216 -------------------------------------------------------------------------*/
29217 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29218 (NULL == pEventData->pEventData))
29219 {
29220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29221 "%s: Invalid parameters", __func__);
29222 WDI_ASSERT(0);
29223 return WDI_STATUS_E_FAILURE;
29224 }
29225
29226 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29227
29228 /*-------------------------------------------------------------------------
29229 Extract response and send it to UMAC
29230 -------------------------------------------------------------------------*/
29231 halStatus = *((eHalStatus*)pEventData->pEventData);
29232 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29233
29234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29235 "LPHB Cfg Rsp Return status %d", wdiStatus);
29236 /*Notify UMAC*/
29237 if (NULL != wdiLphbCfgCb)
29238 {
29239 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29240 }
29241
29242 return WDI_STATUS_SUCCESS;
29243}
29244
29245/**
29246 @brief WDI_ProcessLPHBConfReq -
29247 LPHB configuration request to FW
29248
29249 @param pWDICtx : wdi context
29250 pEventData : indication data
29251
29252 @see
29253 @return none
29254*/
29255WDI_Status WDI_ProcessLPHBConfReq
29256(
29257 WDI_ControlBlockType* pWDICtx,
29258 WDI_EventInfoType* pEventData
29259)
29260{
29261 WDI_LPHBReq *pLphbReqParams;
29262 WDI_Status wdiStatus;
29263 wpt_uint8* pSendBuffer = NULL;
29264 wpt_uint16 usDataOffset = 0;
29265 wpt_uint16 usSendSize = 0;
29266 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29268
29269 /*-------------------------------------------------------------------------
29270 Sanity check
29271 -------------------------------------------------------------------------*/
29272 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29273 {
29274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29275 "%s: Invalid parameters in Suspend ind",__func__);
29276 WDI_ASSERT(0);
29277 return WDI_STATUS_E_FAILURE;
29278 }
29279
29280 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29281
29282 /*-----------------------------------------------------------------------
29283 Get message buffer
29284 -----------------------------------------------------------------------*/
29285 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29286 WDI_LPHB_CFG_REQ,
29287 sizeof(tHalLowPowerHeartBeatReqMsg),
29288 &pSendBuffer, &usDataOffset, &usSendSize))||
29289 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29290 {
29291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29292 "Unable to get send buffer in LPHB Ind ");
29293 WDI_ASSERT(0);
29294 return WDI_STATUS_E_FAILURE;
29295 }
29296
29297 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29298 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29299
29300 halLphbReqRarams->lowPowerHeartBeatCmdType =
29301 (tANI_U16)(++pLphbReqParams->cmd);
29302 switch ((tANI_U16)pLphbReqParams->cmd)
29303 {
29304 case WDI_LPHB_SET_EN_PARAMS_INDID:
29305 halLphbReqRarams->sessionIdx =
29306 pLphbReqParams->params.lphbEnableReq.session;
29307 halLphbReqRarams->options.control.heartBeatEnable =
29308 pLphbReqParams->params.lphbEnableReq.enable;
29309 halLphbReqRarams->options.control.heartBeatType =
29310 pLphbReqParams->params.lphbEnableReq.item;
29311 break;
29312
29313 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29314 halLphbReqRarams->sessionIdx =
29315 pLphbReqParams->params.lphbTcpParamReq.session;
29316 halLphbReqRarams->options.tcpParams.timeOutSec =
29317 pLphbReqParams->params.lphbTcpParamReq.timeout;
29318 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29319 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29320 sizeof(v_U32_t));
29321 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29322 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29323 sizeof(v_U32_t));
29324
29325 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29326 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29327 WDI_MAC_ADDR_LEN);
29328
29329 halLphbReqRarams->options.tcpParams.hostPort =
29330 pLphbReqParams->params.lphbTcpParamReq.src_port;
29331 halLphbReqRarams->options.tcpParams.destPort =
29332 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029333 halLphbReqRarams->options.tcpParams.timePeriodSec =
29334 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29335 halLphbReqRarams->options.tcpParams.tcpSn =
29336 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029337 break;
29338
29339 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29340 halLphbReqRarams->sessionIdx =
29341 pLphbReqParams->params.lphbTcpFilterReq.session;
29342 halLphbReqRarams->options.tcpUdpFilter.offset =
29343 pLphbReqParams->params.lphbTcpFilterReq.offset;
29344 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29345 pLphbReqParams->params.lphbTcpFilterReq.length;
29346 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29347 pLphbReqParams->params.lphbTcpFilterReq.filter,
29348 WDI_LPHB_FILTER_LEN);
29349 break;
29350
29351 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29352 halLphbReqRarams->sessionIdx =
29353 pLphbReqParams->params.lphbUdpParamReq.session;
29354 halLphbReqRarams->options.udpParams.timeOutSec =
29355 pLphbReqParams->params.lphbUdpParamReq.timeout;
29356 halLphbReqRarams->options.udpParams.timePeriodSec =
29357 pLphbReqParams->params.lphbUdpParamReq.interval;
29358 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29359 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29360 sizeof(v_U32_t));
29361 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29362 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29363 sizeof(v_U32_t));
29364
29365 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29366 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29367 WDI_MAC_ADDR_LEN);
29368
29369 halLphbReqRarams->options.udpParams.hostPort =
29370 pLphbReqParams->params.lphbUdpParamReq.src_port;
29371 halLphbReqRarams->options.udpParams.destPort =
29372 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29373 break;
29374
29375 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29376 halLphbReqRarams->sessionIdx =
29377 pLphbReqParams->params.lphbUdpFilterReq.session;
29378 halLphbReqRarams->options.tcpUdpFilter.offset =
29379 pLphbReqParams->params.lphbUdpFilterReq.offset;
29380 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29381 pLphbReqParams->params.lphbUdpFilterReq.length;
29382 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29383 pLphbReqParams->params.lphbUdpFilterReq.filter,
29384 WDI_LPHB_FILTER_LEN);
29385 break;
29386
29387 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29388 /* NA */
29389 break;
29390
29391 default:
29392 break;
29393 }
29394
29395 /*-------------------------------------------------------------------------
29396 Send Suspend Request to HAL
29397 -------------------------------------------------------------------------*/
29398 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29399 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29400
29401 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29402 usSendSize, pWDICtx->pfncRspCB,
29403 pWDICtx->pReqStatusUserData,
29404 WDI_LPHB_CFG_RESP);
29405
29406 return wdiStatus;
29407}
29408
29409/**
29410 @brief WDI_LPHBConfReq -
29411 LPHB configuration request API
29412
29413 @param lphbconfParam : configuration parameter
29414 usrData : client context
29415 lphbCfgCb : callback function pointer
29416
29417 @see
29418 @return Success or fail status code
29419*/
29420WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29421 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29422{
29423 WDI_EventInfoType wdiEventData;
29424
29425 /*------------------------------------------------------------------------
29426 Sanity Check
29427 ------------------------------------------------------------------------*/
29428 if (eWLAN_PAL_FALSE == gWDIInitialized)
29429 {
29430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29431 "WDI API call before module is initialized - Fail request");
29432
29433 return WDI_STATUS_E_NOT_ALLOWED;
29434 }
29435
29436 /*------------------------------------------------------------------------
29437 Fill in Event data and post to the Main FSM
29438 ------------------------------------------------------------------------*/
29439 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29440 wdiEventData.pEventData = lphbconfParam;
29441 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29442 wdiEventData.pCBfnc = lphbCfgCb;
29443 wdiEventData.pUserData = usrData;
29444
29445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29446}
29447#endif /* FEATURE_WLAN_LPHB */
29448
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029449/**
29450 @brief WDI_ProcessIbssPeerInactivityInd
29451 Process peer inactivity indication coming from HAL
29452
29453 @param pWDICtx: pointer to the WLAN DAL context
29454 pEventData: pointer to the event information structure
29455 @see
29456 @return Result of the function call
29457*/
29458WDI_Status
29459WDI_ProcessIbssPeerInactivityInd
29460(
29461 WDI_ControlBlockType* pWDICtx,
29462 WDI_EventInfoType* pEventData
29463)
29464{
29465 WDI_LowLevelIndType wdiInd;
29466 tIbssPeerInactivityIndMsg halIbssIndMsg;
29467
29468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29469
29470 /*-------------------------------------------------------------------------
29471 Sanity check
29472 -------------------------------------------------------------------------*/
29473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29474 ( NULL == pEventData->pEventData ))
29475 {
29476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29477 "%s: Invalid parameters", __func__);
29478 WDI_ASSERT( 0 );
29479 return WDI_STATUS_E_FAILURE;
29480 }
29481
29482 /*-------------------------------------------------------------------------
29483 Extract indication and send it to UMAC
29484 -------------------------------------------------------------------------*/
29485 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29486 pEventData->pEventData,
29487 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29488
29489 /*Fill in the indication parameters*/
29490 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29491
29492 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29493 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29494
29495 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29496 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29497
29498 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29499 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29500 sizeof(tSirMacAddr));
29501
29502 /*Notify UMAC*/
29503 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29504
29505 return WDI_STATUS_SUCCESS;
29506
29507} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029508
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029509/**
29510*@brief WDI_RateUpdateInd will be called when the upper MAC
29511 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029512
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029513
29514 @param wdiRateUpdateIndParams:
29515
29516
29517 @see
29518 @return Result of the function call
29519*/
29520WDI_Status
29521WDI_RateUpdateInd
29522(
29523 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29524)
29525{
29526 WDI_EventInfoType wdiEventData;
29527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29528
29529 /*------------------------------------------------------------------------
29530 Sanity Check
29531 ------------------------------------------------------------------------*/
29532 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29533 {
29534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29535 "WDI API call before module is initialized - Fail request");
29536
29537 return WDI_STATUS_E_NOT_ALLOWED;
29538 }
29539
29540 /*------------------------------------------------------------------------
29541 Fill in Event data and post to the Main FSM
29542 ------------------------------------------------------------------------*/
29543 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29544 wdiEventData.pEventData = wdiRateUpdateIndParams;
29545 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29546 wdiEventData.pCBfnc = NULL;
29547 wdiEventData.pUserData = NULL;
29548
29549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29550
29551}/* WDI_RateUpdateInd */
29552
29553/**
29554 @brief Process Rate Update Indication and post it to HAL
29555
29556 @param pWDICtx: pointer to the WLAN DAL context
29557 pEventData: pointer to the event information structure
29558
29559 @see
29560 @return Result of the function call
29561*/
29562WDI_Status
29563WDI_ProcessRateUpdateInd
29564(
29565 WDI_ControlBlockType* pWDICtx,
29566 WDI_EventInfoType* pEventData
29567)
29568{
29569 wpt_uint8* pSendBuffer = NULL;
29570 wpt_uint16 usDataOffset = 0;
29571 wpt_uint16 usSendSize = 0;
29572 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29573 tHalRateUpdateInd *pRateUpdateInd;
29574 WDI_Status wdiStatus;
29575
29576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29577
29578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29579 "%s", __func__);
29580
29581 /*-------------------------------------------------------------------------
29582 Sanity check
29583 -------------------------------------------------------------------------*/
29584 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29585 {
29586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29587 "%s: Invalid parameters", __func__);
29588 WDI_ASSERT(0);
29589 return WDI_STATUS_E_FAILURE;
29590 }
29591 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29592 /*-----------------------------------------------------------------------
29593 Get message buffer
29594 -----------------------------------------------------------------------*/
29595
29596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29597 WDI_RATE_UPDATE_IND,
29598 sizeof(tHalRateUpdateParams),
29599 &pSendBuffer, &usDataOffset, &usSendSize))||
29600 ( usSendSize < (usDataOffset +
29601 sizeof(tHalRateUpdateParams) )))
29602 {
29603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29604 "Unable to get send buffer in Rate Update Indication %p ",
29605 pEventData);
29606 WDI_ASSERT(0);
29607 return WDI_STATUS_E_FAILURE;
29608 }
29609
29610 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29611
29612 /* Copy the bssid */
29613 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29614 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29615
29616 /* Copy the tx flags */
29617 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29618 pwdiRateUpdateInd->ucastDataRateTxFlag;
29619 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29620 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29621 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29622 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29623 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29624 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29625
29626 /* Copy the tx rates */
29627 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29628 pwdiRateUpdateInd->ucastDataRate;
29629 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29630 pwdiRateUpdateInd->reliableMcastDataRate;
29631 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29632 pwdiRateUpdateInd->mcastDataRate24GHz;
29633 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29634 pwdiRateUpdateInd->mcastDataRate5GHz;
29635
29636 /*-------------------------------------------------------------------------
29637 Send Rate Update Indication to HAL
29638 -------------------------------------------------------------------------*/
29639 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29640 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29641
29642 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29643
29644 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29645 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29646
29647} /* WDI_ProcessRateUpdateInd */
29648
29649#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029650/**
29651 @brief Process stop batch indication from WDA
29652
29653 @param pWDICtx: pointer to the WLAN DAL context
29654 pEventData: pointer to the event information structure
29655
29656 @see
29657 @return Result of the function call
29658*/
29659WDI_Status
29660WDI_ProcessStopBatchScanInd
29661(
29662 WDI_ControlBlockType* pWDICtx,
29663 WDI_EventInfoType* pEventData
29664)
29665{
29666 wpt_uint8* pSendBuffer = NULL;
29667 wpt_uint16 usDataOffset = 0;
29668 wpt_uint16 usSendSize = 0;
29669 WDI_Status wdiStatus;
29670 tHalBatchScanStopIndParam *pHalInd = NULL;
29671 WDI_StopBatchScanIndType *pWdiInd = NULL;
29672
29673
29674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29675
29676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29677 "%s", __func__);
29678
29679 /*-------------------------------------------------------------------------
29680 Sanity check
29681 -------------------------------------------------------------------------*/
29682
29683 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29684 {
29685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29686 "%s: Invalid parameters", __func__);
29687 WDI_ASSERT(0);
29688 return WDI_STATUS_E_FAILURE;
29689 }
29690 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29691 /*-----------------------------------------------------------------------
29692 Get message buffer
29693 -----------------------------------------------------------------------*/
29694
29695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29696 WDI_STOP_BATCH_SCAN_IND,
29697 sizeof(tHalBatchScanStopIndParam),
29698 &pSendBuffer, &usDataOffset, &usSendSize))||
29699 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29700 {
29701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29702 "Unable to get send buffer in stop batch scan ind %p ",
29703 pEventData);
29704 WDI_ASSERT(0);
29705 return WDI_STATUS_E_FAILURE;
29706 }
29707
29708 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29709 pHalInd->param = pWdiInd->param;
29710
29711 pWDICtx->pReqStatusUserData = NULL;
29712 pWDICtx->pfncRspCB = NULL;
29713 /*-------------------------------------------------------------------------
29714 Send Stop batch scan indication to HAL
29715 -------------------------------------------------------------------------*/
29716 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29717 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29718}
29719
29720/**
29721 @brief This API is called to trigger batch scan results from FW
29722
29723 @param pWDICtx: pointer to the WLAN DAL context
29724 pEventData: pointer to the event information structure
29725
29726 @see
29727 @return Result of the function call
29728*/
29729WDI_Status
29730WDI_ProcessTriggerBatchScanResultInd
29731(
29732 WDI_ControlBlockType* pWDICtx,
29733 WDI_EventInfoType* pEventData
29734)
29735{
29736 WDI_Status wdiStatus;
29737 wpt_uint8* pSendBuffer = NULL;
29738 wpt_uint16 usDataOffset = 0;
29739 wpt_uint16 usSendSize = 0;
29740 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29741 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29742
29743
29744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29745
29746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29747 "%s", __func__);
29748
29749 /*-------------------------------------------------------------------------
29750 Sanity check
29751 -------------------------------------------------------------------------*/
29752
29753 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29754 {
29755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29756 "%s: Invalid parameters", __func__);
29757 WDI_ASSERT(0);
29758 return WDI_STATUS_E_FAILURE;
29759 }
29760 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29761 /*-----------------------------------------------------------------------
29762 Get message buffer
29763 -----------------------------------------------------------------------*/
29764
29765 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29766 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29767 sizeof(tHalBatchScanTriggerResultParam),
29768 &pSendBuffer, &usDataOffset, &usSendSize))||
29769 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29770 {
29771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29772 "Unable to get send buffer in stop batch scan ind %p ",
29773 pEventData);
29774 WDI_ASSERT(0);
29775 return WDI_STATUS_E_FAILURE;
29776 }
29777
29778 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29779 pHalInd->param = pWdiInd->param;
29780
29781 pWDICtx->pReqStatusUserData = NULL;
29782 pWDICtx->pfncRspCB = NULL;
29783 /*-------------------------------------------------------------------------
29784 Send trigger batch scan result indication to HAL
29785 -------------------------------------------------------------------------*/
29786 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29787 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29788}
29789
29790
29791/**
29792 @brief Process set batch scan response from FW
29793
29794 @param pWDICtx: pointer to the WLAN DAL context
29795 pEventData: pointer to the event information structure
29796
29797 @see
29798 @return Result of the function call
29799*/
29800WDI_Status
29801WDI_ProcessSetBatchScanRsp
29802(
29803 WDI_ControlBlockType* pWDICtx,
29804 WDI_EventInfoType* pEventData
29805)
29806{
29807 WDI_SetBatchScanCb wdiSetBatchScanCb;
29808 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29809
29810 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29812
29813 /*sanity check*/
29814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29815 ( NULL == pEventData->pEventData))
29816 {
29817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29818 "%s: Invalid parameters", __func__);
29819 WDI_ASSERT(0);
29820 return WDI_STATUS_E_FAILURE;
29821 }
29822
29823 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29824 if ( NULL == wdiSetBatchScanCb)
29825 {
29826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29827 "%s: call back function is NULL", __func__);
29828 WDI_ASSERT(0);
29829 return WDI_STATUS_E_FAILURE;
29830 }
29831
29832 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29833
29834 if (NULL == pSetBatchScanRsp)
29835 {
29836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029837 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029838 pWDICtx, pEventData, pEventData->pEventData);
29839 WDI_ASSERT(0);
29840 return WDI_STATUS_E_FAILURE;
29841 }
29842
Sunil Duttbd736ed2014-05-26 21:19:41 +053029843 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029844 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29845
29846 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29847
Sunil Duttbd736ed2014-05-26 21:19:41 +053029848 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029849 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29850
29851 wpalMemoryFree(pSetBatchScanRsp);
29852
29853 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029854}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029855
29856/**
29857 @brief Process batch scan result indication from FW
29858
29859 @param pWDICtx: pointer to the WLAN DAL context
29860 pEventData: pointer to the event information structure
29861
29862 @see
29863 @return Result of the function call
29864*/
29865WDI_Status
29866WDI_ProcessBatchScanResultInd
29867(
29868 WDI_ControlBlockType* pWDICtx,
29869 WDI_EventInfoType* pEventData
29870)
29871{
29872 void *pBatchScanResultInd;
29873 WDI_LowLevelIndType wdiInd;
29874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29875
Sunil Duttbd736ed2014-05-26 21:19:41 +053029876 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29878 ( NULL == pEventData->pEventData))
29879 {
29880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29881 "%s: Invalid parameters", __func__);
29882 WDI_ASSERT(0);
29883 return WDI_STATUS_E_FAILURE;
29884 }
29885
Sunil Duttbd736ed2014-05-26 21:19:41 +053029886 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029887 pBatchScanResultInd = (void *)pEventData->pEventData;
29888
Sunil Duttbd736ed2014-05-26 21:19:41 +053029889 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029890 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29891
29892 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29893
Sunil Duttbd736ed2014-05-26 21:19:41 +053029894 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029895 if (pWDICtx->wdiLowLevelIndCB)
29896 {
29897 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29898 }
29899 else
29900 {
29901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29902 "%s: WDILowLevelIndCb is null", __func__);
29903 WDI_ASSERT(0);
29904 return WDI_STATUS_E_FAILURE;
29905 }
29906
29907 return WDI_STATUS_SUCCESS;
29908} /*End of WDI_ProcessBatchScanResultInd*/
29909
Sunil Duttbd736ed2014-05-26 21:19:41 +053029910#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29911/**
29912 @brief Process Link Layer Statistics Result indication from FW
29913
29914 @param pWDICtx: pointer to the WLAN DAL context
29915 pEventData: pointer to the event information structure
29916
29917 @see
29918 @return Result of the function call
29919*/
29920WDI_Status
29921WDI_ProcessLinkLayerStatsResultsInd
29922(
29923 WDI_ControlBlockType* pWDICtx,
29924 WDI_EventInfoType* pEventData
29925)
29926{
29927 void *pLinkLayerStatsInd;
29928 WDI_LowLevelIndType wdiInd;
29929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29930
29931 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29932 "%s: Event RESULTS Indication", __func__);
29933
29934 /* sanity check */
29935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29936 ( NULL == pEventData->pEventData))
29937 {
29938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29939 "%s: Invalid parameters", __func__);
29940 WDI_ASSERT(0);
29941 return WDI_STATUS_E_FAILURE;
29942 }
29943
29944 /* extract response and send it to UMAC */
29945 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29946
29947 /* Fill in the indication parameters */
29948 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29949
29950 wdiInd.wdiIndicationData.pLinkLayerStatsResults = pLinkLayerStatsInd;
29951
29952 /* Notify UMAC */
29953 if (pWDICtx->wdiLowLevelIndCB)
29954 {
29955 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29956 }
29957 else
29958 {
29959 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29960 "%s: WDILowLevelIndCb is null", __func__);
29961 WDI_ASSERT(0);
29962 return WDI_STATUS_E_FAILURE;
29963 }
29964
29965 return WDI_STATUS_SUCCESS;
29966} /* End of WDI_ProcessLinkLayerStatsResultsInd */
29967#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
29968
Rajeev79dbe4c2013-10-05 11:03:42 +053029969/**
29970 @brief WDI_ProcessSetBatchScanReq -
29971 Set batch scan request to FW
29972
29973 @param pWDICtx : wdi context
29974 pEventData : indication data
29975
29976 @see
29977 @return none
29978*/
29979WDI_Status WDI_ProcessSetBatchScanReq
29980(
29981 WDI_ControlBlockType* pWDICtx,
29982 WDI_EventInfoType* pEventData
29983)
29984{
29985 WDI_SetBatchScanReqType *pWdiReq;
29986 WDI_Status wdiStatus;
29987 wpt_uint8* pSendBuffer = NULL;
29988 wpt_uint16 usDataOffset = 0;
29989 wpt_uint16 usSendSize = 0;
29990 tHalBatchScanSetParams *pHalReq;
29991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29992
29993 /*sanity check*/
29994 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29995 {
29996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29997 "%s: Invalid parameters in set batch scan request", __func__);
29998 WDI_ASSERT(0);
29999 return WDI_STATUS_E_FAILURE;
30000 }
30001
30002
30003 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30004
30005
30006 /*get message buffer*/
30007 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30008 WDI_SET_BATCH_SCAN_REQ,
30009 sizeof(tHalBatchScanSetParams),
30010 &pSendBuffer, &usDataOffset, &usSendSize))||
30011 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30012 {
30013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30014 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30015 WDI_ASSERT(0);
30016 return WDI_STATUS_E_FAILURE;
30017 }
30018
30019 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30020
30021 pHalReq->rtt = pWdiReq->rtt;
30022 pHalReq->rfBand = pWdiReq->rfBand;
30023 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30024 pHalReq->scanInterval = pWdiReq->scanFrequency;
30025 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30026
30027 /*send set batch scan request to fw*/
30028 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30029 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30030
30031 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30032 usSendSize, pWDICtx->pfncRspCB,
30033 pWDICtx->pReqStatusUserData,
30034 WDI_SET_BATCH_SCAN_RESP);
30035
30036 return wdiStatus;
30037}
30038
30039/**
30040 @brief WDI_SetBatchScanReq
30041 This API is called to set batch scan request in FW
30042
30043 @param pBatchScanReqParam : pointer to set batch scan re param
30044 usrData : Client context
30045 setBatchScanRspCb : set batch scan resp callback
30046 @see
30047 @return SUCCESS or FAIL
30048*/
30049WDI_Status WDI_SetBatchScanReq
30050(
30051 void *pBatchScanReqParam,
30052 void *usrData,
30053 WDI_SetBatchScanCb setBatchScanRspCb
30054)
30055{
30056 WDI_EventInfoType wdiEventData;
30057
30058 /*sanity check*/
30059 if (eWLAN_PAL_FALSE == gWDIInitialized)
30060 {
30061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30062 "WDI API call before module is initialized - Fail request");
30063
30064 return WDI_STATUS_E_NOT_ALLOWED;
30065 }
30066
30067 /* fill in event data and post to the main FSM */
30068 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30069 wdiEventData.pEventData = pBatchScanReqParam;
30070 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30071 wdiEventData.pCBfnc = setBatchScanRspCb;
30072 wdiEventData.pUserData = usrData;
30073
30074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30075}
30076
30077/**
30078 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30079
30080 @param None
30081
30082 @see
30083
30084 @return Status of the request
30085*/
30086WDI_Status
30087WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30088{
30089 WDI_EventInfoType wdiEventData;
30090
30091 /*-------------------------------------------------------------------------
30092 Sanity Check
30093 ------------------------------------------------------------------------*/
30094 if (eWLAN_PAL_FALSE == gWDIInitialized)
30095 {
30096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30097 "WDI API call before module is initialized - Fail request!");
30098
30099 return WDI_STATUS_E_NOT_ALLOWED;
30100 }
30101
30102 /*-------------------------------------------------------------------------
30103 Fill in Event data and post to the Main FSM
30104 ------------------------------------------------------------------------*/
30105 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30106 wdiEventData.pEventData = pWdiReq;
30107 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30108 wdiEventData.pCBfnc = NULL;
30109 wdiEventData.pUserData = NULL;
30110
30111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30112}
30113
30114/**
30115 @brief WDI_TriggerBatchScanResultInd
30116 This API is called to pull batch scan result from FW
30117
30118 @param pWdiReq : pointer to get batch scan ind param
30119 @see
30120 @return SUCCESS or FAIL
30121*/
30122WDI_Status WDI_TriggerBatchScanResultInd
30123(
30124 WDI_TriggerBatchScanResultIndType *pWdiReq
30125)
30126{
30127 WDI_EventInfoType wdiEventData;
30128 /*-------------------------------------------------------------------------
30129 Sanity Check
30130 ------------------------------------------------------------------------*/
30131 if (eWLAN_PAL_FALSE == gWDIInitialized)
30132 {
30133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30134 "WDI API call before module is initialized - Fail request!");
30135
30136 return WDI_STATUS_E_NOT_ALLOWED;
30137 }
30138
30139 /*-------------------------------------------------------------------------
30140 Fill in Event data and post to the Main FSM
30141 ------------------------------------------------------------------------*/
30142 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30143 wdiEventData.pEventData = pWdiReq;
30144 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30145 wdiEventData.pCBfnc = NULL;
30146 wdiEventData.pUserData = NULL;
30147
30148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30149}
Rajeev79dbe4c2013-10-05 11:03:42 +053030150#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030151
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030152/**
30153 @brief Process Update Channel Rsp function (called when a response is
30154 being received over the bus from HAL)
30155
30156 @param pWDICtx: pointer to the WLAN DAL context
30157 pEventData: pointer to the event information structure
30158
30159 @see
30160 @return Result of the function call
30161*/
30162WDI_Status
30163WDI_ProcessUpdateChanRsp
30164(
30165 WDI_ControlBlockType* pWDICtx,
30166 WDI_EventInfoType* pEventData
30167)
30168{
30169 WDI_Status wdiStatus;
30170 eHalStatus halStatus;
30171 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30173
30174 /*-------------------------------------------------------------------------
30175 Sanity check
30176 -------------------------------------------------------------------------*/
30177 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30178 ( NULL == pEventData->pEventData))
30179 {
30180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30181 "%s: Invalid parameters", __func__);
30182 WDI_ASSERT(0);
30183 return WDI_STATUS_E_FAILURE;
30184 }
30185
30186 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30187
30188 /*-------------------------------------------------------------------------
30189 Extract response and send it to UMAC
30190 -------------------------------------------------------------------------*/
30191 halStatus = *((eHalStatus*)pEventData->pEventData);
30192 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30193
30194 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30195
30196 return WDI_STATUS_SUCCESS;
30197}/*WDI_ProcessUpdateChanRsp*/
30198
Leo Chang0b0e45a2013-12-15 15:18:55 -080030199#ifdef FEATURE_WLAN_CH_AVOID
30200/**
30201 @brief v -WDI_ProcessChAvoidInd
30202
30203
30204 @param pWDICtx : wdi context
30205 pEventData : indication data
30206 @see
30207 @return Result of the function call
30208*/
30209WDI_Status
30210WDI_ProcessChAvoidInd
30211(
30212 WDI_ControlBlockType* pWDICtx,
30213 WDI_EventInfoType* pEventData
30214)
30215{
30216 WDI_LowLevelIndType wdiInd;
30217 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30218 wpt_uint16 rangeLoop;
30219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30220
30221 /*-------------------------------------------------------------------------
30222 Sanity check
30223 -------------------------------------------------------------------------*/
30224 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30225 (NULL == pEventData->pEventData))
30226 {
30227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30228 "%s: Invalid parameters", __func__);
30229 WDI_ASSERT(0);
30230 return WDI_STATUS_E_FAILURE;
30231 }
30232
30233 /*-------------------------------------------------------------------------
30234 Extract indication and send it to UMAC
30235 -------------------------------------------------------------------------*/
30236 wpalMemoryCopy(&chAvoidIndicationParam,
30237 pEventData->pEventData,
30238 sizeof(tHalAvoidFreqRangeIndParams));
30239
30240 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30241 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30242 chAvoidIndicationParam.avoidCnt;
30243 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30244 (void *)chAvoidIndicationParam.avoidRange,
30245 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30246 sizeof(WDI_ChAvoidFreqType));
30247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30248 "%s: band count %d", __func__,
30249 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30250 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30251 {
30252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30253 "%s: srart freq %d, end freq %d", __func__,
30254 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30255 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30256 }
30257
30258 /*Notify UMAC*/
30259 if (pWDICtx->wdiLowLevelIndCB)
30260 {
30261 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30262 }
30263
30264 return WDI_STATUS_SUCCESS;
30265}
30266#endif /* FEATURE_WLAN_CH_AVOID */
30267
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030268/**
30269 @brief Process OBSS Start scan result indication
30270
30271 @param pWDICtx: pointer to the WLAN DAL context
30272 pEventData: pointer to the event information structure
30273
30274 @see
30275 @return Result of the function call
30276*/
30277WDI_Status
30278WDI_ProcessHT40OBSSScanInd
30279(
30280 WDI_ControlBlockType* pWDICtx,
30281 WDI_EventInfoType* pEventData
30282)
30283{
30284 wpt_uint8* pSendBuffer = NULL;
30285 wpt_uint16 usDataOffset = 0;
30286 wpt_uint16 usSendSize = 0;
30287 wpt_uint16 usLen = 0;
30288 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30289 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30290 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30291 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30292
30293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30294
30295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30296 "%s", __func__);
30297
30298 /*-------------------------------------------------------------------------
30299 Sanity check
30300 -------------------------------------------------------------------------*/
30301 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30302 {
30303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30304 "%s: Invalid parameters", __func__);
30305 WDI_ASSERT(0);
30306 return WDI_STATUS_E_FAILURE;
30307 }
30308 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30309
30310 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30311 /*-----------------------------------------------------------------------
30312 Get message buffer
30313 -----------------------------------------------------------------------*/
30314
30315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30316 WDI_START_HT40_OBSS_SCAN_IND,
30317 sizeof(tHT40ObssScanIndType),
30318 &pSendBuffer, &usDataOffset, &usSendSize))||
30319 ( usSendSize < (usDataOffset + usLen )))
30320 {
30321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30322 "Unable to get send buffer in HT40 OBSS Start req %p ",
30323 pEventData);
30324 WDI_ASSERT(0);
30325 return WDI_STATUS_E_FAILURE;
30326 }
30327 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30328 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30329 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30330 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30331 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30332 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30333 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30334 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30335 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30336 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30337 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30338 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30339 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30340 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30341 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30342 pHT40ObssScanInd->OBSSScanActivityThreshold =
30343 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30344 pHT40ObssScanInd->selfStaIdx =
30345 pwdiHT40OBSSScanInd->selfStaIdx;
30346 pHT40ObssScanInd->bssIdx =
30347 pwdiHT40OBSSScanInd->bssIdx;
30348 pHT40ObssScanInd->fortyMHZIntolerent =
30349 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30350 pHT40ObssScanInd->channelCount =
30351 pwdiHT40OBSSScanInd->channelCount;
30352
30353 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30354 WDI_ROAM_SCAN_MAX_CHANNELS);
30355 pHT40ObssScanInd->ieFieldLen =
30356 pwdiHT40OBSSScanInd->ieFieldLen;
30357
30358 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30359 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30360 pWDICtx->pReqStatusUserData = NULL;
30361 pWDICtx->pfncRspCB = NULL;
30362
30363 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30364 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30365
30366 /*-------------------------------------------------------------------------
30367 Send OBSS Start Indication to HAL
30368 -------------------------------------------------------------------------*/
30369 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30370 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30371
30372} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30373
30374
30375/**
30376 @brief wdi_HT40OBSSScanInd
30377 This API is called to start OBSS scan
30378
30379 @param pWdiReq : pointer to get ind param
30380 @see
30381 @return SUCCESS or FAIL
30382*/
30383WDI_Status WDI_HT40OBSSScanInd
30384(
30385 WDI_HT40ObssScanParamsType *pWdiReq
30386)
30387{
30388 WDI_EventInfoType wdiEventData;
30389
30390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30391 "%s", __func__);
30392 /*-------------------------------------------------------------------------
30393 Sanity Check
30394 ------------------------------------------------------------------------*/
30395 if (eWLAN_PAL_FALSE == gWDIInitialized)
30396 {
30397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30398 "WDI API call before module is initialized - Fail request!");
30399
30400 return WDI_STATUS_E_NOT_ALLOWED;
30401 }
30402
30403 /*-------------------------------------------------------------------------
30404 Fill in Event data and post to the Main FSM
30405 ------------------------------------------------------------------------*/
30406 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30407 wdiEventData.pEventData = pWdiReq;
30408 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30409 wdiEventData.pCBfnc = NULL;
30410 wdiEventData.pUserData = NULL;
30411
30412
30413 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30414}
30415
30416/**
30417 @brief Process OBSS Stop scan result
30418
30419 @param pWDICtx: pointer to the WLAN DAL context
30420 pEventData: pointer to the event information structure
30421
30422 @see
30423 @return Result of the function call
30424*/
30425WDI_Status
30426WDI_ProcessHT40OBSSStopScanInd
30427(
30428 WDI_ControlBlockType* pWDICtx,
30429 WDI_EventInfoType* pEventData
30430)
30431{
30432 wpt_uint8* pSendBuffer = NULL;
30433 wpt_uint16 usDataOffset = 0;
30434 wpt_uint16 usSendSize = 0;
30435 wpt_uint16 usLen = 0;
30436 wpt_uint8 *wdiBssIdx = 0;
30437 tANI_U8 *bssIdx = 0;
30438 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30439
30440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30441
30442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30443 "%s", __func__);
30444
30445 /*-------------------------------------------------------------------------
30446 Sanity check
30447 -------------------------------------------------------------------------*/
30448 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30449 {
30450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30451 "%s: Invalid parameters", __func__);
30452 WDI_ASSERT(0);
30453 return WDI_STATUS_E_FAILURE;
30454 }
30455 bssIdx = (wpt_uint8*)pEventData->pEventData;
30456 /*-----------------------------------------------------------------------
30457 Get message buffer
30458 -----------------------------------------------------------------------*/
30459
30460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30461 WDI_STOP_HT40_OBSS_SCAN_IND,
30462 sizeof(tANI_U8),
30463 &pSendBuffer, &usDataOffset, &usSendSize))||
30464 ( usSendSize < (usDataOffset + usLen )))
30465 {
30466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30467 "Unable to get send buffer in HT40 OBSS Start req %p ",
30468 pEventData);
30469 WDI_ASSERT(0);
30470 return WDI_STATUS_E_FAILURE;
30471 }
30472
30473 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30474 bssIdx = wdiBssIdx;
30475
30476 pWDICtx->pReqStatusUserData = NULL;
30477 pWDICtx->pfncRspCB = NULL;
30478
30479 /*-------------------------------------------------------------------------
30480 Send DHCP Start Indication to HAL
30481 -------------------------------------------------------------------------*/
30482 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30483 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30484} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30485
30486/**
30487 @brief WDI_HT40OBSSStopScanInd
30488 This API is called to start OBSS scan
30489 @param pWdiReq : pointer to get ind param
30490 @see
30491 @return SUCCESS or FAIL
30492*/
30493WDI_Status WDI_HT40OBSSStopScanInd
30494(
30495 wpt_uint8 bssIdx
30496)
30497{
30498 WDI_EventInfoType wdiEventData;
30499
30500 /*-------------------------------------------------------------------------
30501 Sanity Check
30502 ------------------------------------------------------------------------*/
30503 if (eWLAN_PAL_FALSE == gWDIInitialized)
30504 {
30505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30506 "WDI API call before module is initialized - Fail request!");
30507
30508 return WDI_STATUS_E_NOT_ALLOWED;
30509 }
30510
30511 /*-------------------------------------------------------------------------
30512 Fill in Event data and post to the Main FSM
30513 ------------------------------------------------------------------------*/
30514 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30515 wdiEventData.pEventData = &bssIdx;
30516 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30517 wdiEventData.pCBfnc = NULL;
30518 wdiEventData.pUserData = NULL;
30519
30520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30521}
30522
c_hpothu86041002014-04-14 19:06:51 +053030523WDI_Status
30524WDI_printRegInfo
30525(
30526 WDI_ControlBlockType* pWDICtx,
30527 WDI_EventInfoType* pEventData
30528)
30529{
30530 tHalRegDebugInfo *pRegTable;
30531 tHalRegDebugInfoParams *pRegParams;
30532 uint32 cnt=0;
30533
30534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30535 "%s: ", __func__);
30536 /*-------------------------------------------------------------------------
30537 Sanity check
30538 -------------------------------------------------------------------------*/
30539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30540 ( NULL == pEventData->pEventData))
30541 {
30542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30543 "%s: Invalid parameters", __func__);
30544 WDI_ASSERT(0);
30545 return WDI_STATUS_E_FAILURE;
30546 }
30547
30548 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30549
30550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30551 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30552 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30553
30554 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30555
30556 if (pRegParams->regCount <= 0)
30557 {
30558 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30559 "%s incorrect parameters passed", __func__);
30560 return WDI_STATUS_E_FAILURE;
30561 }
30562
30563 while(pRegParams->regCount--)
30564 {
30565 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30566 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30567 cnt++;
30568 }
30569
30570 return WDI_STATUS_SUCCESS;
30571}
c_hpothu92367912014-05-01 15:18:17 +053030572
30573/*
30574 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30575 * send the response to PE with beacon miss count
30576 * received from WDI.
30577 */
30578WDI_Status
30579WDI_ProcessGetBcnMissRateRsp
30580(
30581 WDI_ControlBlockType* pWDICtx,
30582 WDI_EventInfoType* pEventData
30583)
30584{
30585 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30586 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30587
30588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30589 "In %s",__func__);
30590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30591
30592 /*-------------------------------------------------------------------------
30593 Sanity check
30594 -------------------------------------------------------------------------*/
30595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30596 ( NULL == pEventData->pEventData))
30597 {
30598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30599 "%s: Invalid parameters", __func__);
30600 WDI_ASSERT(0);
30601 return WDI_STATUS_E_FAILURE;
30602 }
30603
30604 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30605 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30606
30607 /*Notify UMAC*/
30608 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30609 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30610 return WDI_STATUS_SUCCESS;
30611}
30612
30613/*
30614 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30615 * Request to WDI to get missed beacon rate.
30616 */
30617WDI_Status
30618WDI_ProcessGetBcnMissRateReq
30619(
30620 WDI_ControlBlockType* pWDICtx,
30621 WDI_EventInfoType* pEventData
30622)
30623{
30624 wpt_uint8* pSendBuffer = NULL;
30625 wpt_uint16 usDataOffset = 0;
30626 wpt_uint16 usSendSize = 0;
30627 wpt_uint8 ucCurrentBSSSesIdx = 0;
30628 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053030629 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30630 tHalBcnMissRateReqParams halBcnMissRateReq;
30631
30632/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30633
30634 /*-------------------------------------------------------------------------
30635 Sanity check
30636 -------------------------------------------------------------------------*/
30637 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30638 ( NULL == pEventData->pCBfnc ) )
30639 {
30640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30641 "%s: Invalid parameters", __func__);
30642 WDI_ASSERT(0);
30643 return WDI_STATUS_E_FAILURE;
30644 }
30645
30646 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30647
30648 wpalMutexAcquire(&pWDICtx->wptMutex);
30649
30650 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30651 pEventData->pEventData, &pBSSSes);
30652 if ( NULL == pBSSSes )
30653 {
30654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30655 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053030656 MAC_ADDRESS_STR, __func__,
30657 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053030658 wpalMutexRelease(&pWDICtx->wptMutex);
30659 return WDI_STATUS_E_NOT_ALLOWED;
30660 }
30661 wpalMutexRelease(&pWDICtx->wptMutex);
30662
30663 /*-----------------------------------------------------------------------
30664 Get message buffer
30665 -----------------------------------------------------------------------*/
30666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30667 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30668 sizeof(tHalBcnMissRateReqParams),
30669 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30670 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30671 {
30672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30673 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30674 pEventData);
30675 WDI_ASSERT(0);
30676 return WDI_STATUS_E_FAILURE;
30677 }
30678
30679 pWDICtx->wdiReqStatusCB = NULL;
30680 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30681
30682 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30683
30684 wpalMemoryCopy( pSendBuffer+usDataOffset,
30685 &halBcnMissRateReq,
30686 sizeof(tHalBcnMissRateReqParams));
30687 /*-------------------------------------------------------------------------
30688 Send Get STA Request to HAL
30689 -------------------------------------------------------------------------*/
30690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30691 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30692}
30693
30694/**
30695 @brief WDI_GetBcnMissRate
30696
30697 @param pUserData: user data will be passed back with the
30698 callback
30699 WDI_GetBcnMissRateCb: callback for passing back the response
30700 of the get stats operation received from the device
30701 bssid: bssid, to send bssIdx to FW
30702
30703 @return SUCCESS or FAIL
30704*/
30705WDI_Status WDI_GetBcnMissRate( void *pUserData,
30706 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30707 tANI_U8 *bssid )
30708{
30709 WDI_EventInfoType wdiEventData;
30710
30711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30712
30713 /*------------------------------------------------------------------------
30714 Sanity Check
30715 ------------------------------------------------------------------------*/
30716 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30717 {
30718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30719 "WDI API call before module is initialized - Fail request");
30720
30721 return WDI_STATUS_E_NOT_ALLOWED;
30722 }
30723
30724 /*------------------------------------------------------------------------
30725 Fill in Event data and post to the Main FSM
30726 ------------------------------------------------------------------------*/
30727 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30728 wdiEventData.pEventData = bssid;
30729 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30730 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30731 wdiEventData.pUserData = pUserData;
30732
30733 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30734}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030735#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30736
30737/**
30738 @brief WDI_LLStatsSetReq
30739 This API is called to set link layer stats request in FW
30740
30741 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30742 wdiLLStatsSetRspCb : set link layer stats resp callback
30743 usrData : Client context
30744 @see
30745 @return SUCCESS or FAIL
30746*/
30747WDI_Status
30748WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30749 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30750 void* pUserData)
30751{
30752 WDI_EventInfoType wdiEventData;
30753
30754 /*------------------------------------------------------------------------
30755 Sanity Check
30756 ------------------------------------------------------------------------*/
30757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30758 {
30759 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30760 "WDI API call before module is initialized - Fail request");
30761
30762 return WDI_STATUS_E_NOT_ALLOWED;
30763 }
30764
30765 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30766 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30767 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30768 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30769 wdiEventData.pUserData = pUserData;
30770
30771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30772}
30773
30774/**
30775 @brief WDI_ProcessLLStatsSetReq -
30776 Set Link Layer Stats request to FW
30777
30778 @param pWDICtx : wdi context
30779 pEventData : indication data
30780
30781 @see
30782 @return none
30783*/
30784WDI_Status
30785WDI_ProcessLLStatsSetReq
30786(
30787 WDI_ControlBlockType* pWDICtx,
30788 WDI_EventInfoType* pEventData
30789)
30790{
30791 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30792 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30793 wpt_uint8* pSendBuffer = NULL;
30794 wpt_uint16 usSendSize = 0;
30795 wpt_uint16 usDataOffset = 0;
30796 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30797
30798 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30799 ( NULL == pEventData->pCBfnc ))
30800 {
30801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30802 "%s: Invalid parameters", __func__);
30803 WDI_ASSERT(0);
30804 return WDI_STATUS_E_FAILURE;
30805 }
30806
30807 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30808 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30809
30810 /*-----------------------------------------------------------------------
30811 Get message buffer
30812 ! TO DO : proper conversion into the HAL Message Request Format
30813 -----------------------------------------------------------------------*/
30814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30815 pWDICtx,
30816 WDI_LL_STATS_SET_REQ,
30817 sizeof(tHalMacLlSetStatsReqParams),
30818 &pSendBuffer, &usDataOffset,
30819 &usSendSize))||
30820 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30821 {
30822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30823 "Unable to get send buffer in %s %p %p %p", __func__,
30824 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30825 WDI_ASSERT(0);
30826 return WDI_STATUS_E_FAILURE;
30827 }
30828
30829
30830
30831 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
30832 halLLStatsSetParams.sta_id = pwdiLLStatsSetReqParams->staId;
30833 halLLStatsSetParams.mpdu_size_threshold =
30834 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30835 halLLStatsSetParams.aggressive_statistics_gathering =
30836 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30837
30838 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30839 " halLLStatsSetParams.req_id = %u",
30840 halLLStatsSetParams.req_id);
30841 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30842 " halLLStatsSetParams.sta_id = %u",
30843 halLLStatsSetParams.sta_id);
30844 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30845 " halLLStatsSetParams.mpdu_size_threshold = %u",
30846 halLLStatsSetParams.mpdu_size_threshold);
30847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30848 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30849 halLLStatsSetParams.aggressive_statistics_gathering);
30850
30851 wpalMemoryCopy(pSendBuffer+usDataOffset,
30852 &halLLStatsSetParams,
30853 sizeof(halLLStatsSetParams));
30854
30855 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30856
30857 /*-------------------------------------------------------------------------
30858 Send Clear Link Layer Stats Request to HAL
30859 -------------------------------------------------------------------------*/
30860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30861 wdiLLStatsSetCb, pEventData->pUserData,
30862 WDI_LL_STATS_SET_RSP);
30863}
30864
30865/**
30866 @brief WDI_LLStatsGetReq
30867 This API is called to get link layer stats request in FW
30868
30869 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30870 wdiLLStatsGetRspCb : get link layer stats resp callback
30871 usrData : Client context
30872 @see
30873 @return SUCCESS or FAIL
30874*/
30875WDI_Status
30876WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30877 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30878 void* pUserData)
30879{
30880 WDI_EventInfoType wdiEventData;
30881
30882 /*------------------------------------------------------------------------
30883 Sanity Check
30884 ------------------------------------------------------------------------*/
30885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30886 {
30887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30888 "WDI API call before module is initialized - Fail request");
30889
30890 return WDI_STATUS_E_NOT_ALLOWED;
30891 }
30892
30893 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30894 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30895 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30896 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30897 wdiEventData.pUserData = pUserData;
30898
30899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30900}
30901
30902/**
30903 @brief WDI_ProcessLLStatsGetReq -
30904 Get Link Layer Stats request to FW
30905
30906 @param pWDICtx : wdi context
30907 pEventData : indication data
30908
30909 @see
30910 @return none
30911*/
30912WDI_Status
30913WDI_ProcessLLStatsGetReq
30914(
30915 WDI_ControlBlockType* pWDICtx,
30916 WDI_EventInfoType* pEventData
30917)
30918{
30919 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30920 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30921 wpt_uint8* pSendBuffer = NULL;
30922 wpt_uint16 usSendSize = 0;
30923 wpt_uint16 usDataOffset = 0;
30924 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30925
30926 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30927 ( NULL == pEventData->pCBfnc ))
30928 {
30929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30930 "%s: Invalid parameters", __func__);
30931 WDI_ASSERT(0);
30932 return WDI_STATUS_E_FAILURE;
30933 }
30934
30935 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30936 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30937
30938 /*-----------------------------------------------------------------------
30939 Get message buffer
30940 ! TO DO : proper conversion into the HAL Message Request Format
30941 -----------------------------------------------------------------------*/
30942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30943 pWDICtx,
30944 WDI_LL_STATS_GET_REQ,
30945 sizeof(tHalMacLlGetStatsReqParams),
30946 &pSendBuffer, &usDataOffset,
30947 &usSendSize))||
30948 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30949 {
30950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30951 "Unable to get send buffer in %s %p %p %p", __func__,
30952 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30953 WDI_ASSERT(0);
30954 return WDI_STATUS_E_FAILURE;
30955 }
30956
30957 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
30958 halLLStatsGetParams.sta_id = pwdiLLStatsGetReqParams->staId;
30959 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
30960
30961 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30962 " halLLStatsGetParams.req_id = %u",
30963 halLLStatsGetParams.req_id);
30964 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30965 " halLLStatsGetParams.staId = %u",
30966 halLLStatsGetParams.sta_id);
30967 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30968 " halLLStatsGetParams.Mask = %u",
30969 halLLStatsGetParams.param_id_mask);
30970
30971 wpalMemoryCopy(pSendBuffer+usDataOffset,
30972 &halLLStatsGetParams,
30973 sizeof(halLLStatsGetParams));
30974
30975 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30976
30977 /*-------------------------------------------------------------------------
30978 Send Clear Link Layer Stats Request to HAL
30979 -------------------------------------------------------------------------*/
30980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30981 wdiLLStatsGetCb, pEventData->pUserData,
30982 WDI_LL_STATS_GET_RSP);
30983}
30984
30985/**
30986 @brief WDI_LLStatsClearReq
30987 This API is called to clear link layer stats request in FW
30988
30989 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
30990 wdiLLStatsSetRspCb : clear link layer stats resp callback
30991 usrData : Client context
30992 @see
30993 @return SUCCESS or FAIL
30994*/
30995WDI_Status
30996WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
30997 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
30998 void* pUserData)
30999{
31000 WDI_EventInfoType wdiEventData;
31001
31002 /*------------------------------------------------------------------------
31003 Sanity Check
31004 ------------------------------------------------------------------------*/
31005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31006 {
31007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31008 "WDI API call before module is initialized - Fail request");
31009
31010 return WDI_STATUS_E_NOT_ALLOWED;
31011 }
31012
31013 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31014 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31015 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31016 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31017 wdiEventData.pUserData = pUserData;
31018
31019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31020 "%s:%d Enter", __func__, __LINE__);
31021
31022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31023}
31024
31025/**
31026 @brief WDI_ProcessLLStatsClearReq -
31027 Clear Link Layer Stats request to FW
31028
31029 @param pWDICtx : wdi context
31030 pEventData : indication data
31031
31032 @see
31033 @return none
31034*/
31035WDI_Status
31036WDI_ProcessLLStatsClearReq
31037(
31038 WDI_ControlBlockType* pWDICtx,
31039 WDI_EventInfoType* pEventData
31040)
31041{
31042 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31043 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31044 wpt_uint8* pSendBuffer = NULL;
31045 wpt_uint16 usSendSize = 0;
31046 wpt_uint16 usDataOffset = 0;
31047 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31048
31049 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31050 ( NULL == pEventData->pCBfnc ))
31051 {
31052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31053 "%s: Invalid parameters", __func__);
31054 WDI_ASSERT(0);
31055 return WDI_STATUS_E_FAILURE;
31056 }
31057
31058 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31059 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31060
31061 /*-----------------------------------------------------------------------
31062 Get message buffer
31063 ! TO DO : proper conversion into the HAL Message Request Format
31064 -----------------------------------------------------------------------*/
31065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31066 pWDICtx,
31067 WDI_LL_STATS_CLEAR_REQ,
31068 sizeof(tHalMacLlClearStatsReqParams),
31069 &pSendBuffer, &usDataOffset,
31070 &usSendSize))||
31071 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31072 {
31073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31074 "Unable to get send buffer in %s %p %p %p", __func__,
31075 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31076 WDI_ASSERT(0);
31077 return WDI_STATUS_E_FAILURE;
31078 }
31079
31080 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
31081 halLLStatsClearParams.sta_id = pwdiLLStatsClearReqParams->staId;
31082 halLLStatsClearParams.stats_clear_req_mask =
31083 pwdiLLStatsClearReqParams->statsClearReqMask;
31084 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31085
31086 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31087 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31089 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31090 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31091 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31092 halLLStatsClearParams.stats_clear_req_mask);
31093 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31094 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31095
31096 wpalMemoryCopy(pSendBuffer+usDataOffset,
31097 &halLLStatsClearParams,
31098 sizeof(halLLStatsClearParams));
31099
31100 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31101
31102 /*-------------------------------------------------------------------------
31103 Send Clear Link Layer Stats Request to HAL
31104 -------------------------------------------------------------------------*/
31105 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31106 wdiLLStatsClearCb, pEventData->pUserData,
31107 WDI_LL_STATS_CLEAR_RSP);
31108}
31109#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031110
31111#ifdef WLAN_FEATURE_EXTSCAN
31112
31113/**
31114 @brief Process EXTSCAN BUffer full indication from FW
31115
31116 @param pWDICtx: pointer to the WLAN DAL context
31117 pEventData: pointer to the event information structure
31118
31119 @see
31120 @return Result of the function call
31121*/
31122WDI_Status
31123WDI_ProcessEXTScanProgressInd
31124(
31125 WDI_ControlBlockType* pWDICtx,
31126 WDI_EventInfoType* pEventData
31127)
31128{
31129 WDI_LowLevelIndType wdiInd;
31130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31131
31132 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31133 "%s: ", __func__);
31134
31135 /* sanity check */
31136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31137 ( NULL == pEventData->pEventData))
31138 {
31139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31140 "%s: Invalid parameters", __func__);
31141 WDI_ASSERT(0);
31142 return WDI_STATUS_E_FAILURE;
31143 }
31144
31145 /* Fill in the indication parameters */
31146 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31147
31148 /* extract response and send it to UMAC */
31149 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31150
31151 /* Notify UMAC */
31152 if (pWDICtx->wdiLowLevelIndCB)
31153 {
31154 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31155 }
31156 else
31157 {
31158 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31159 "%s: WDILowLevelIndCb is null", __func__);
31160 WDI_ASSERT(0);
31161 return WDI_STATUS_E_FAILURE;
31162 }
31163 return WDI_STATUS_SUCCESS;
31164
31165} /* End of WDI_ProcessEXTScanProgressInd */
31166
31167
31168/**
31169 @brief Process EXTScan Scan Available indication from FW
31170
31171 @param pWDICtx: pointer to the WLAN DAL context
31172 pEventData: pointer to the event information structure
31173
31174 @see
31175 @return Result of the function call
31176*/
31177WDI_Status
31178WDI_ProcessEXTScanScanAvailableInd
31179(
31180 WDI_ControlBlockType* pWDICtx,
31181 WDI_EventInfoType* pEventData
31182)
31183{
31184 WDI_LowLevelIndType wdiInd;
31185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31186
31187 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31188 "%s: ", __func__);
31189
31190 /* sanity check */
31191 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31192 ( NULL == pEventData->pEventData))
31193 {
31194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31195 "%s: Invalid parameters", __func__);
31196 WDI_ASSERT(0);
31197 return WDI_STATUS_E_FAILURE;
31198 }
31199
31200
31201
31202 /* Fill in the indication parameters */
31203 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31204
31205 /* extract response and send it to UMAC */
31206 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31207
31208 /* Notify UMAC */
31209 if (pWDICtx->wdiLowLevelIndCB)
31210 {
31211 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31212 }
31213 else
31214 {
31215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31216 "%s: WDILowLevelIndCb is null", __func__);
31217 WDI_ASSERT(0);
31218 return WDI_STATUS_E_FAILURE;
31219 }
31220 return WDI_STATUS_SUCCESS;
31221} /* End of WDI_ProcessEXTScanScanDoneInd */
31222
31223/**
31224 @brief Process EXTScan Result Indication indication from FW
31225
31226 @param pWDICtx: pointer to the WLAN DAL context
31227 pEventData: pointer to the event information structure
31228
31229 @see
31230 @return Result of the function call
31231*/
31232WDI_Status
31233WDI_ProcessEXTScanResultInd
31234(
31235 WDI_ControlBlockType* pWDICtx,
31236 WDI_EventInfoType* pEventData
31237)
31238{
31239 WDI_LowLevelIndType wdiInd;
31240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31241
31242 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31243 "%s: ", __func__);
31244
31245 /* sanity check */
31246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31247 ( NULL == pEventData->pEventData))
31248 {
31249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31250 "%s: Invalid parameters", __func__);
31251 WDI_ASSERT(0);
31252 return WDI_STATUS_E_FAILURE;
31253 }
31254
31255 /* Fill in the indication parameters */
31256 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31257
31258 /* extract response and send it to UMAC */
31259 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31260
31261 /* Notify UMAC */
31262 if (pWDICtx->wdiLowLevelIndCB)
31263 {
31264 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31265 }
31266 else
31267 {
31268 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31269 "%s: WDILowLevelIndCb is null", __func__);
31270 WDI_ASSERT(0);
31271 return WDI_STATUS_E_FAILURE;
31272 }
31273 return WDI_STATUS_SUCCESS;
31274} /* End of WDI_ProcessEXTScanResultInd */
31275
31276/**
31277 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31278
31279 @param pWDICtx: pointer to the WLAN DAL context
31280 pEventData: pointer to the event information structure
31281
31282 @see
31283 @return Result of the function call
31284*/
31285WDI_Status
31286WDI_ProcessEXTScanBssidHotListResultInd
31287(
31288 WDI_ControlBlockType* pWDICtx,
31289 WDI_EventInfoType* pEventData
31290)
31291{
31292 WDI_LowLevelIndType wdiInd;
31293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31294
31295 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31296 "%s: ", __func__);
31297
31298 /* sanity check */
31299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31300 ( NULL == pEventData->pEventData))
31301 {
31302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31303 "%s: Invalid parameters", __func__);
31304 WDI_ASSERT(0);
31305 return WDI_STATUS_E_FAILURE;
31306 }
31307
31308 /* Fill in the indication parameters */
31309 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31310
31311 /* extract response and send it to UMAC */
31312 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31313
31314 /* Notify UMAC */
31315 if (pWDICtx->wdiLowLevelIndCB)
31316 {
31317 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31318 }
31319 else
31320 {
31321 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31322 "%s: WDILowLevelIndCb is null", __func__);
31323 WDI_ASSERT(0);
31324 return WDI_STATUS_E_FAILURE;
31325 }
31326 return WDI_STATUS_SUCCESS;
31327} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31328
31329/**
31330 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31331
31332 @param pWDICtx: pointer to the WLAN DAL context
31333 pEventData: pointer to the event information structure
31334
31335 @see
31336 @return Result of the function call
31337*/
31338WDI_Status
31339WDI_ProcessEXTScanSignfRssiResultInd
31340(
31341 WDI_ControlBlockType* pWDICtx,
31342 WDI_EventInfoType* pEventData
31343)
31344{
31345 WDI_LowLevelIndType wdiInd;
31346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31347
31348 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31349 "%s: ", __func__);
31350
31351 /* sanity check */
31352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31353 ( NULL == pEventData->pEventData))
31354 {
31355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31356 "%s: Invalid parameters", __func__);
31357 WDI_ASSERT(0);
31358 return WDI_STATUS_E_FAILURE;
31359 }
31360
31361 /* Fill in the indication parameters */
31362 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
31363
31364 /* extract response and send it to UMAC */
31365 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31366
31367 /* Notify UMAC */
31368 if (pWDICtx->wdiLowLevelIndCB)
31369 {
31370 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31371 }
31372 else
31373 {
31374 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31375 "%s: WDILowLevelIndCb is null", __func__);
31376 WDI_ASSERT(0);
31377 return WDI_STATUS_E_FAILURE;
31378 }
31379 return WDI_STATUS_SUCCESS;
31380} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
31381
31382/**
31383 @brief WDI_EXTScanGetCapabilitiesReq
31384
31385 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
31386 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
31387 of the Req operation received from the device
31388 pUserData: user data will be passed back with the callback
31389
31390 @return SUCCESS or FAIL
31391*/
31392WDI_Status
31393WDI_EXTScanGetCapabilitiesReq(
31394 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
31395 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
31396 void* pUserData)
31397{
31398 WDI_EventInfoType wdiEventData;
31399
31400 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31401 "%s: %d ",__func__, __LINE__);
31402 /*------------------------------------------------------------------------
31403 Sanity Check
31404 ------------------------------------------------------------------------*/
31405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31406 {
31407 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31408 "WDI API call before module is initialized - Fail request");
31409
31410 return WDI_STATUS_E_NOT_ALLOWED;
31411 }
31412
31413 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
31414 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
31415 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
31416 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
31417 wdiEventData.pUserData = pUserData;
31418
31419 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31420}
31421
31422/**
31423 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
31424 Extended Scan Get Capability request to FW
31425
31426 @param pWDICtx : wdi context
31427 pEventData : indication data
31428
31429 @see
31430 @return none
31431*/
31432WDI_Status
31433WDI_ProcessEXTScanGetCapabilitiesReq
31434(
31435 WDI_ControlBlockType* pWDICtx,
31436 WDI_EventInfoType* pEventData
31437)
31438{
31439 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
31440 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
31441 wpt_uint8* pSendBuffer = NULL;
31442 wpt_uint16 usSendSize = 0;
31443 wpt_uint16 usDataOffset = 0;
31444 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
31445
31446 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31447 "%s: %d Enter",__func__, __LINE__);
31448
31449 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31450 ( NULL == pEventData->pCBfnc ))
31451 {
31452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31453 "%s: Invalid parameters", __func__);
31454 WDI_ASSERT(0);
31455 return WDI_STATUS_E_FAILURE;
31456 }
31457
31458 pwdiEXTScanGetCapabilitiesReqParams =
31459 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
31460 wdiEXTScanGetCapabilitiesRspCb =
31461 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
31462
31463 /*-----------------------------------------------------------------------
31464 Get message buffer
31465 ! TO DO : proper conversion into the HAL Message Request Format
31466 -----------------------------------------------------------------------*/
31467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31468 pWDICtx,
31469 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
31470 sizeof(halEXTScanGetCapReqParams),
31471 &pSendBuffer, &usDataOffset,
31472 &usSendSize))||
31473 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
31474 {
31475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31476 "Unable to get send buffer in %s %p %p %p", __func__,
31477 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
31478 wdiEXTScanGetCapabilitiesRspCb);
31479 WDI_ASSERT(0);
31480 return WDI_STATUS_E_FAILURE;
31481 }
31482
31483 halEXTScanGetCapReqParams.requestId =
31484 pwdiEXTScanGetCapabilitiesReqParams->requestId;
31485 halEXTScanGetCapReqParams.sessionId =
31486 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
31487
31488 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31489 " requestId %u "
31490 " sessionId %u ",
31491 halEXTScanGetCapReqParams.requestId,
31492 halEXTScanGetCapReqParams.sessionId);
31493
31494 wpalMemoryCopy(pSendBuffer+usDataOffset,
31495 &halEXTScanGetCapReqParams,
31496 sizeof(halEXTScanGetCapReqParams));
31497
31498 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31499
31500
31501 /*-------------------------------------------------------------------------
31502 Send EXTScan Stop Request to HAL
31503 -------------------------------------------------------------------------*/
31504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31505 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
31506 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
31507}
31508
31509/**
31510 @brief WDI_EXTScanGetCachedResultsReq
31511
31512 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
31513 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
31514 of the Req operation received from the device
31515 pUserData: user data will be passed back with the callback
31516
31517 @return SUCCESS or FAIL
31518*/
31519
31520WDI_Status
31521WDI_EXTScanGetCachedResultsReq(
31522 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
31523 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
31524 void* pUserData)
31525{
31526 WDI_EventInfoType wdiEventData;
31527
31528 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31529 "%s: %d Enter",__func__, __LINE__);
31530 /*------------------------------------------------------------------------
31531 Sanity Check
31532 ------------------------------------------------------------------------*/
31533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31534 {
31535 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31536 "WDI API call before module is initialized - Fail request");
31537
31538 return WDI_STATUS_E_NOT_ALLOWED;
31539 }
31540
31541 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
31542 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
31543 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
31544 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
31545 wdiEventData.pUserData = pUserData;
31546
31547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31548}
31549
31550/**
31551 @brief WDI_ProcessEXTScanGetCachedResultsReq -
31552 Extended Scan Get Cached Result request to FW
31553
31554 @param pWDICtx : wdi context
31555 pEventData : indication data
31556
31557 @see
31558 @return none
31559*/
31560WDI_Status
31561WDI_ProcessEXTScanGetCachedResultsReq
31562(
31563 WDI_ControlBlockType* pWDICtx,
31564 WDI_EventInfoType* pEventData
31565)
31566{
31567 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
31568 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
31569 wpt_uint8* pSendBuffer = NULL;
31570 wpt_uint16 usSendSize = 0;
31571 wpt_uint16 usDataOffset = 0;
31572 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
31573
31574 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31575 "%s: %d Enter",__func__, __LINE__);
31576
31577 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31578 ( NULL == pEventData->pCBfnc ))
31579 {
31580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31581 "%s: Invalid parameters", __func__);
31582 WDI_ASSERT(0);
31583 return WDI_STATUS_E_FAILURE;
31584 }
31585
31586 pwdiEXTScanGetCachedResultsReqParams =
31587 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
31588 wdiEXTScanGetCachedResultsCb =
31589 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
31590
31591 /*-----------------------------------------------------------------------
31592 Get message buffer
31593 ! TO DO : proper conversion into the HAL Message Request Format
31594 -----------------------------------------------------------------------*/
31595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31596 pWDICtx,
31597 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
31598 sizeof(tHalExtScanGetScanReq),
31599 &pSendBuffer, &usDataOffset,
31600 &usSendSize))||
31601 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
31602 {
31603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31604 "Unable to get send buffer in %s %p %p %p", __func__,
31605 pEventData, pwdiEXTScanGetCachedResultsReqParams,
31606 wdiEXTScanGetCachedResultsCb);
31607 WDI_ASSERT(0);
31608 return WDI_STATUS_E_FAILURE;
31609 }
31610
31611 halEXTScanGetScanReqParams.requestId =
31612 pwdiEXTScanGetCachedResultsReqParams->requestId;
31613 halEXTScanGetScanReqParams.sessionId =
31614 pwdiEXTScanGetCachedResultsReqParams->sessionId;
31615 halEXTScanGetScanReqParams.flush =
31616 pwdiEXTScanGetCachedResultsReqParams->flush;
31617
31618 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31619 " requestId %u "
31620 " sessionId %u "
31621 " flush %u ",
31622 halEXTScanGetScanReqParams.requestId,
31623 halEXTScanGetScanReqParams.sessionId,
31624 halEXTScanGetScanReqParams.flush);
31625
31626 wpalMemoryCopy(pSendBuffer+usDataOffset,
31627 &halEXTScanGetScanReqParams,
31628 sizeof(halEXTScanGetScanReqParams));
31629
31630 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31631
31632
31633 /*-------------------------------------------------------------------------
31634 Send EXTScan Stop Request to HAL
31635 -------------------------------------------------------------------------*/
31636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31637 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
31638 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
31639}
31640
31641/**
31642 @brief WDI_EXTScanStopReq
31643
31644 @param WDI_EXTScanStopReqParams: Req parameter for the FW
31645 WDI_EXTScanStopRspCb: callback for passing back the response
31646 of the Req operation received from the device
31647 pUserData: user data will be passed back with the callback
31648
31649 @return SUCCESS or FAIL
31650*/
31651WDI_Status
31652WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
31653 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
31654 void* pUserData)
31655{
31656 WDI_EventInfoType wdiEventData;
31657
31658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31659 "%s: %d ",__func__, __LINE__);
31660 /*------------------------------------------------------------------------
31661 Sanity Check
31662 ------------------------------------------------------------------------*/
31663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31664 {
31665 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31666 "WDI API call before module is initialized - Fail request");
31667
31668 return WDI_STATUS_E_NOT_ALLOWED;
31669 }
31670
31671 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
31672 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
31673 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
31674 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
31675 wdiEventData.pUserData = pUserData;
31676
31677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31678}
31679
31680/**
31681 @brief WDI_ProcessEXTScanStopReq -
31682 Extended Scan Stop request to FW
31683
31684 @param pWDICtx : wdi context
31685 pEventData : indication data
31686
31687 @see
31688 @return none
31689*/
31690WDI_Status
31691WDI_ProcessEXTScanStopReq
31692(
31693 WDI_ControlBlockType* pWDICtx,
31694 WDI_EventInfoType* pEventData
31695)
31696{
31697 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
31698 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
31699 wpt_uint8* pSendBuffer = NULL;
31700 wpt_uint16 usSendSize = 0;
31701 wpt_uint16 usDataOffset = 0;
31702 tHalExtScanStopReq halEXTScanStopReqParams;
31703
31704 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31705 "%s: %d ",__func__, __LINE__);
31706
31707 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31708 ( NULL == pEventData->pCBfnc ))
31709 {
31710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31711 "%s: Invalid parameters", __func__);
31712 WDI_ASSERT(0);
31713 return WDI_STATUS_E_FAILURE;
31714 }
31715
31716 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
31717 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
31718
31719 /*-----------------------------------------------------------------------
31720 Get message buffer
31721 ! TO DO : proper conversion into the HAL Message Request Format
31722 -----------------------------------------------------------------------*/
31723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31724 pWDICtx,
31725 WDI_EXTSCAN_STOP_REQ,
31726 sizeof(tHalExtScanStopReq),
31727 &pSendBuffer, &usDataOffset,
31728 &usSendSize))||
31729 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
31730 {
31731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31732 "Unable to get send buffer in %s %p %p %p", __func__,
31733 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
31734 WDI_ASSERT(0);
31735 return WDI_STATUS_E_FAILURE;
31736 }
31737
31738 halEXTScanStopReqParams.requestId =
31739 pwdiEXTScanStopReqParams->requestId;
31740 halEXTScanStopReqParams.sessionId =
31741 pwdiEXTScanStopReqParams->sessionId;
31742
31743 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31744 " halEXTScanStopReqParams.requestId %u "
31745 " halEXTScanStopReqParams.sessionId %u ",
31746 halEXTScanStopReqParams.requestId,
31747 halEXTScanStopReqParams.sessionId);
31748
31749 wpalMemoryCopy(pSendBuffer+usDataOffset,
31750 &halEXTScanStopReqParams,
31751 sizeof(halEXTScanStopReqParams));
31752
31753 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31754
31755
31756 /*-------------------------------------------------------------------------
31757 Send EXTScan Stop Request to HAL
31758 -------------------------------------------------------------------------*/
31759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31760 wdiEXTScanStopCb, pEventData->pUserData,
31761 WDI_EXTSCAN_STOP_RSP);
31762}
31763
31764/**
31765 @brief WDI_EXTScanStartReq
31766
31767 @param WDI_EXTScanStartReqParams: Req parameter for the FW
31768 WDI_EXTScanStartRspCb: callback for passing back the response
31769 of the Req operation received from the device
31770 pUserData: user data will be passed back with the callback
31771
31772 @return SUCCESS or FAIL
31773*/
31774WDI_Status
31775WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
31776 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
31777 void* pUserData)
31778{
31779 WDI_EventInfoType wdiEventData;
31780
31781 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31782 "%s: %d Enter",__func__, __LINE__);
31783 /*------------------------------------------------------------------------
31784 Sanity Check
31785 ------------------------------------------------------------------------*/
31786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31787 {
31788 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31789 "WDI API call before module is initialized - Fail request");
31790
31791 return WDI_STATUS_E_NOT_ALLOWED;
31792 }
31793
31794 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
31795 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
31796 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
31797 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
31798 wdiEventData.pUserData = pUserData;
31799
31800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31801}
31802
31803/**
31804 @brief WDI_ProcessEXTScanStartReq -
31805 Extended Scan Start Request to FW
31806
31807 @param pWDICtx : wdi context
31808 pEventData : indication data
31809
31810 @see
31811 @return none
31812*/
31813WDI_Status
31814WDI_ProcessEXTScanStartReq
31815(
31816 WDI_ControlBlockType* pWDICtx,
31817 WDI_EventInfoType* pEventData
31818)
31819{
31820 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
31821 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
31822 wpt_uint8* pSendBuffer = NULL;
31823 wpt_uint16 usSendSize = 0;
31824 wpt_uint16 usDataOffset = 0;
31825 tpHalExtScanStartReq pHalExtScanStartReqParams;
31826 int i = 0;
31827 int j = 0;
31828
31829 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31830 "%s: %d Enter",__func__, __LINE__);
31831
31832 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31833 ( NULL == pEventData->pCBfnc ))
31834 {
31835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31836 "%s: Invalid parameters", __func__);
31837 WDI_ASSERT(0);
31838 return WDI_STATUS_E_FAILURE;
31839 }
31840
31841 pwdiEXTScanStartReqParams =
31842 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
31843 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
31844
31845 /*-----------------------------------------------------------------------
31846 Get message buffer
31847 ! TO DO : proper conversion into the HAL Message Request Format
31848 -----------------------------------------------------------------------*/
31849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31850 pWDICtx,
31851 WDI_EXTSCAN_START_REQ,
31852 sizeof(tHalExtScanStartReq),
31853 &pSendBuffer, &usDataOffset,
31854 &usSendSize))||
31855 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
31856 {
31857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31858 "Unable to get send buffer in %s %p %p %p", __func__,
31859 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
31860 WDI_ASSERT(0);
31861 return WDI_STATUS_E_FAILURE;
31862 }
31863
31864 pHalExtScanStartReqParams =
31865 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
31866
31867 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
31868 pHalExtScanStartReqParams->maxApPerScan =
31869 pwdiEXTScanStartReqParams->maxAPperScan;
31870 pHalExtScanStartReqParams->reportThreshold =
31871 pwdiEXTScanStartReqParams->reportThreshold;
31872 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
31873 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
31874 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
31875
31876 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
31877 {
31878 pHalExtScanStartReqParams->bucketData[i].bucketId =
31879 pwdiEXTScanStartReqParams->buckets[i].bucket;
31880 pHalExtScanStartReqParams->bucketData[i].channelBand =
31881 pwdiEXTScanStartReqParams->buckets[i].band;
31882 pHalExtScanStartReqParams->bucketData[i].period =
31883 pwdiEXTScanStartReqParams->buckets[i].period;
31884 pHalExtScanStartReqParams->bucketData[i].reportEvents =
31885 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
31886 pHalExtScanStartReqParams->bucketData[i].numChannels =
31887 pwdiEXTScanStartReqParams->buckets[i].numChannels;
31888
31889 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
31890 {
31891 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
31892 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
31893 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
31894 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
31895 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
31896 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
31897 }
31898
31899 }
31900
31901
31902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31903 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
31904 " sessionId %u numBuckets%u ",
31905 pHalExtScanStartReqParams->basePeriod,
31906 pHalExtScanStartReqParams->maxApPerScan,
31907 pHalExtScanStartReqParams->reportThreshold,
31908 pHalExtScanStartReqParams->requestId,
31909 pHalExtScanStartReqParams->sessionId,
31910 pHalExtScanStartReqParams->numBuckets);
31911
31912 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
31913 {
31914 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
31915 " %d) bucketId %u channelBand %u period %u "
31916 " reportEvents %u numChannels %u ",i,
31917 pHalExtScanStartReqParams->bucketData[i].bucketId,
31918 pHalExtScanStartReqParams->bucketData[i].channelBand,
31919 pHalExtScanStartReqParams->bucketData[i].period,
31920 pHalExtScanStartReqParams->bucketData[i].reportEvents,
31921 pHalExtScanStartReqParams->bucketData[i].numChannels);
31922
31923 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
31924 {
31925 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31926 "%d) channel %u dwellTimeMs %u passive %u ",j,
31927 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
31928 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
31929 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
31930 }
31931
31932 }
31933
Dino Mycle41bdc942014-06-10 11:30:24 +053031934 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31935
31936 /*-------------------------------------------------------------------------
31937 Send EXTSCAN Start Request to HAL
31938 -------------------------------------------------------------------------*/
31939 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31940 wdiEXTScanStartCb, pEventData->pUserData,
31941 WDI_EXTSCAN_START_RSP);
31942}
31943
31944/**
31945 @brief WDI_EXTScanSetBSSIDHotlistReq
31946
31947 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
31948 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
31949 of the Req operation received from the device
31950 pUserData: user data will be passed back with the callback
31951
31952 @return SUCCESS or FAIL
31953*/
31954WDI_Status
31955WDI_EXTScanSetBSSIDHotlistReq(
31956 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
31957 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
31958 void* pUserData)
31959{
31960 WDI_EventInfoType wdiEventData;
31961
31962 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31963 "%s: %d Enter ",__func__, __LINE__);
31964 /*------------------------------------------------------------------------
31965 Sanity Check
31966 ------------------------------------------------------------------------*/
31967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31968 {
31969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31970 "WDI API call before module is initialized - Fail request");
31971
31972 return WDI_STATUS_E_NOT_ALLOWED;
31973 }
31974
31975 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
31976 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
31977 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
31978 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
31979 wdiEventData.pUserData = pUserData;
31980
31981 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31982}
31983
31984/**
31985 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
31986 Extended Scan Set BSSSID Hotlist Request to FW
31987
31988 @param pWDICtx : wdi context
31989 pEventData : indication data
31990
31991 @see
31992 @return none
31993*/
31994WDI_Status
31995WDI_ProcessEXTScanSetBSSIDHotlistReq
31996(
31997 WDI_ControlBlockType* pWDICtx,
31998 WDI_EventInfoType* pEventData
31999)
32000{
32001 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32002 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32003 wpt_uint8* pSendBuffer = NULL;
32004 wpt_uint16 usSendSize = 0;
32005 wpt_uint16 usDataOffset = 0;
32006 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32007 int i;
32008
32009 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32010 "%s: %d Enter",__func__, __LINE__);
32011
32012 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32013 ( NULL == pEventData->pCBfnc ))
32014 {
32015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32016 "%s: Invalid parameters", __func__);
32017 WDI_ASSERT(0);
32018 return WDI_STATUS_E_FAILURE;
32019 }
32020
32021 pwdiEXTScanSetBSSIDHotlistReqParams =
32022 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32023 wdiEXTScanSetBSSIDHotlistRspCb =
32024 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32025
32026 /*-----------------------------------------------------------------------
32027 Get message buffer
32028 ! TO DO : proper conversion into the HAL Message Request Format
32029 -----------------------------------------------------------------------*/
32030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32031 pWDICtx,
32032 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32033 sizeof(tHalBssidHotlistSetReq),
32034 &pSendBuffer, &usDataOffset,
32035 &usSendSize))||
32036 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32037 {
32038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32039 "Unable to get send buffer in %s %p %p %p", __func__,
32040 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32041 wdiEXTScanSetBSSIDHotlistRspCb);
32042 WDI_ASSERT(0);
32043 return WDI_STATUS_E_FAILURE;
32044 }
32045 pHalBssidHotlistSetReqParams =
32046 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32047
32048 pHalBssidHotlistSetReqParams->requestId =
32049 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32050
32051 pHalBssidHotlistSetReqParams->sessionId =
32052 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32053
32054 pHalBssidHotlistSetReqParams->numAp =
32055 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32056
32057 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32058
32059 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32060 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32061 WDI_MAC_ADDR_LEN);
32062
32063 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32064 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32065
32066 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32067 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32068
32069 pHalBssidHotlistSetReqParams->ap[i].channel =
32070 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32071
32072 }
32073
32074 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32075 "ReqID %u sessionId %u numAp %u ",
32076 pHalBssidHotlistSetReqParams->requestId,
32077 pHalBssidHotlistSetReqParams->sessionId,
32078 pHalBssidHotlistSetReqParams->numAp);
32079
32080 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32081
32082 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32083 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32084 __func__, __LINE__, i,
32085 pHalBssidHotlistSetReqParams->ap[i].bssid,
32086 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32087 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32088 pHalBssidHotlistSetReqParams->ap[i].channel);
32089
32090 }
32091
32092 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32093
32094
32095 /*-------------------------------------------------------------------------
32096 Send EXTScan Stop Request to HAL
32097 -------------------------------------------------------------------------*/
32098 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32099 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32100 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32101}
32102
32103/**
32104 @brief WDI_EXTScanResetBSSIDHotlistReq
32105
32106 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32107 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32108 of the Req operation received from the device
32109 pUserData: user data will be passed back with the callback
32110
32111 @return SUCCESS or FAIL
32112*/
32113WDI_Status
32114WDI_EXTScanResetBSSIDHotlistReq(
32115 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32116 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32117 void* pUserData)
32118{
32119 WDI_EventInfoType wdiEventData;
32120
32121 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32122 "%s: %d",__func__, __LINE__);
32123 /*------------------------------------------------------------------------
32124 Sanity Check
32125 ------------------------------------------------------------------------*/
32126 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32127 {
32128 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32129 "WDI API call before module is initialized - Fail request");
32130
32131 return WDI_STATUS_E_NOT_ALLOWED;
32132 }
32133
32134 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32135 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32136 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32137 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32138 wdiEventData.pUserData = pUserData;
32139
32140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32141}
32142
32143/**
32144 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32145 Extended Scan reset BSSID hotlist Request to FW
32146
32147 @param pWDICtx : wdi context
32148 pEventData : indication data
32149
32150 @see
32151 @return none
32152*/
32153WDI_Status
32154WDI_ProcessEXTScanResetBSSIDHotlistReq
32155(
32156 WDI_ControlBlockType* pWDICtx,
32157 WDI_EventInfoType* pEventData
32158)
32159{
32160 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32161 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32162 wpt_uint8* pSendBuffer = NULL;
32163 wpt_uint16 usSendSize = 0;
32164 wpt_uint16 usDataOffset = 0;
32165 tpHalHotlistResetReq pHalHotlistResetReqParams;
32166
32167 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32168 "%s: %d",__func__, __LINE__);
32169
32170 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32171 ( NULL == pEventData->pCBfnc ))
32172 {
32173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32174 "%s: Invalid parameters", __func__);
32175 WDI_ASSERT(0);
32176 return WDI_STATUS_E_FAILURE;
32177 }
32178
32179 pwdiEXTScanResetBSSIDHotlistReqParams =
32180 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32181 wdiEXTScanResetBSSIDHotlistRspCb =
32182 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32183
32184 /*-----------------------------------------------------------------------
32185 Get message buffer
32186 ! TO DO : proper conversion into the HAL Message Request Format
32187 -----------------------------------------------------------------------*/
32188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32189 pWDICtx,
32190 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32191 sizeof(tHalHotlistResetReq),
32192 &pSendBuffer, &usDataOffset,
32193 &usSendSize))||
32194 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32195 {
32196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32197 "Unable to get send buffer in %s %p %p %p", __func__,
32198 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32199 wdiEXTScanResetBSSIDHotlistRspCb);
32200 WDI_ASSERT(0);
32201 return WDI_STATUS_E_FAILURE;
32202 }
32203 pHalHotlistResetReqParams =
32204 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32205
32206 pHalHotlistResetReqParams->requestId =
32207 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32208
32209 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32210
32211 /*-------------------------------------------------------------------------
32212 Send EXTScan Stop Request to HAL
32213 -------------------------------------------------------------------------*/
32214 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32215 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32216 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32217}
32218
32219/**
32220 @brief WDI_EXTScanSetSignfRSSIChangeReq
32221
32222 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32223 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32224 of the Req operation received from the device
32225 pUserData: user data will be passed back with the callback
32226
32227 @return SUCCESS or FAIL
32228*/
32229WDI_Status
32230WDI_EXTScanSetSignfRSSIChangeReq(
32231 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32232 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32233 void* pUserData)
32234{
32235 WDI_EventInfoType wdiEventData;
32236
32237 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32238 "%s: %d ",__func__, __LINE__);
32239 /*------------------------------------------------------------------------
32240 Sanity Check
32241 ------------------------------------------------------------------------*/
32242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32243 {
32244 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32245 "WDI API call before module is initialized - Fail request");
32246
32247 return WDI_STATUS_E_NOT_ALLOWED;
32248 }
32249
32250 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32251 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32252 wdiEventData.uEventDataSize =
32253 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32254 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32255 wdiEventData.pUserData = pUserData;
32256
32257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32258}
32259
32260/**
32261 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32262 Extended Scan set Significant RSSI change Request to FW
32263
32264 @param pWDICtx : wdi context
32265 pEventData : indication data
32266
32267 @see
32268 @return none
32269*/
32270WDI_Status
32271WDI_ProcessEXTScanSetSignifRSSIChangeReq
32272(
32273 WDI_ControlBlockType* pWDICtx,
32274 WDI_EventInfoType* pEventData
32275)
32276{
32277 WDI_EXTScanSetSignfRSSIChangeReqParams*
32278 pwdiEXTScanSetSignfRSSIChangeReqParams;
32279 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32280 wpt_uint8* pSendBuffer = NULL;
32281 wpt_uint16 usSendSize = 0;
32282 wpt_uint16 usDataOffset = 0;
32283 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32284 int i;
32285
32286 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32287 "%s: %d Enter",__func__, __LINE__);
32288
32289 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32290 ( NULL == pEventData->pCBfnc ))
32291 {
32292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32293 "%s: Invalid parameters", __func__);
32294 WDI_ASSERT(0);
32295 return WDI_STATUS_E_FAILURE;
32296 }
32297
32298 pwdiEXTScanSetSignfRSSIChangeReqParams =
32299 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32300 wdiEXTScanSetSignfRSSIChangeRspCb =
32301 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32302
32303 /*-----------------------------------------------------------------------
32304 Get message buffer
32305 ! TO DO : proper conversion into the HAL Message Request Format
32306 -----------------------------------------------------------------------*/
32307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32308 pWDICtx,
32309 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32310 sizeof(tHalSigRssiSetReq),
32311 &pSendBuffer, &usDataOffset,
32312 &usSendSize))||
32313 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32314 {
32315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32316 "Unable to get send buffer in %s %p %p %p", __func__,
32317 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32318 wdiEXTScanSetSignfRSSIChangeRspCb);
32319 WDI_ASSERT(0);
32320 return WDI_STATUS_E_FAILURE;
32321 }
32322
32323 pHalSigRssiSetReqParams =
32324 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32325
32326 pHalSigRssiSetReqParams->requestId =
32327 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32328 pHalSigRssiSetReqParams->sessionId =
32329 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32330 pHalSigRssiSetReqParams->rssiSampleSize =
32331 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32332 pHalSigRssiSetReqParams->lostApSampleSize =
32333 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32334 pHalSigRssiSetReqParams->minBreaching =
32335 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32336 pHalSigRssiSetReqParams->numAp =
32337 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32338
32339
32340 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
32341
32342 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
32343 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
32344 WDI_MAC_ADDR_LEN);
32345
32346 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
32347 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
32348
32349 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
32350 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
32351
32352 pHalSigRssiSetReqParams->ap[i].channel =
32353 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
32354
32355 }
32356
32357
32358 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32359 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
32360 " minBreaching %u numAp %u ",
32361 pHalSigRssiSetReqParams->requestId,
32362 pHalSigRssiSetReqParams->sessionId,
32363 pHalSigRssiSetReqParams->rssiSampleSize,
32364 pHalSigRssiSetReqParams->lostApSampleSize,
32365 pHalSigRssiSetReqParams->minBreaching,
32366 pHalSigRssiSetReqParams->numAp);
32367
32368 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
32369
32370 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32371 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32372 i,
32373 pHalSigRssiSetReqParams->ap[i].bssid,
32374 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
32375 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
32376 pHalSigRssiSetReqParams->ap[i].channel);
32377
32378 }
32379
32380 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32381
32382
32383 /*-------------------------------------------------------------------------
32384 Send EXTScan Stop Request to HAL
32385 -------------------------------------------------------------------------*/
32386 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32387 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
32388 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
32389}
32390
32391/**
32392 @brief WDI_EXTScanResetSignfRSSIChangeReq
32393
32394 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
32395 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
32396 of the Req operation received from the device
32397 pUserData: user data will be passed back with the callback
32398
32399 @return SUCCESS or FAIL
32400*/
32401WDI_Status
32402WDI_EXTScanResetSignfRSSIChangeReq(
32403 WDI_EXTScanResetSignfRSSIChangeReqParams*
32404 pwdiEXTScanResetSignfRSSIChangeReqParams,
32405 WDI_EXTScanResetSignfRSSIChangeRspCb
32406 wdiEXTScanResetSignfRSSIChangeRspCb,
32407 void* pUserData)
32408{
32409 WDI_EventInfoType wdiEventData;
32410
32411 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32412 "%s: %d ",__func__, __LINE__);
32413 /*------------------------------------------------------------------------
32414 Sanity Check
32415 ------------------------------------------------------------------------*/
32416 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32417 {
32418 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32419 "WDI API call before module is initialized - Fail request");
32420
32421 return WDI_STATUS_E_NOT_ALLOWED;
32422 }
32423
32424 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
32425 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
32426 wdiEventData.uEventDataSize =
32427 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
32428 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
32429 wdiEventData.pUserData = pUserData;
32430
32431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32432}
32433
32434/**
32435 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
32436 Extended Scana reset Significant RSSI change Request to FW
32437
32438 @param pWDICtx : wdi context
32439 pEventData : indication data
32440
32441 @see
32442 @return none
32443*/
32444WDI_Status
32445WDI_ProcessEXTScanResetSignfRSSIChangeReq
32446(
32447 WDI_ControlBlockType* pWDICtx,
32448 WDI_EventInfoType* pEventData
32449)
32450{
32451 WDI_EXTScanResetSignfRSSIChangeReqParams*
32452 pwdiEXTScanResetSignfRSSIChangeReqParams;
32453 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32454 wpt_uint8* pSendBuffer = NULL;
32455 wpt_uint16 usSendSize = 0;
32456 wpt_uint16 usDataOffset = 0;
32457 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
32458
32459 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32460 "%s: %d ",__func__, __LINE__);
32461
32462 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32463 ( NULL == pEventData->pCBfnc ))
32464 {
32465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32466 "%s: Invalid parameters", __func__);
32467 WDI_ASSERT(0);
32468 return WDI_STATUS_E_FAILURE;
32469 }
32470
32471 pwdiEXTScanResetSignfRSSIChangeReqParams =
32472 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
32473 wdiEXTScanResetSignfRSSIChangeRspCb =
32474 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32475
32476 /*-----------------------------------------------------------------------
32477 Get message buffer
32478 ! TO DO : proper conversion into the HAL Message Request Format
32479 -----------------------------------------------------------------------*/
32480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32481 pWDICtx,
32482 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
32483 sizeof(tHalSigRssiResetReq),
32484 &pSendBuffer, &usDataOffset,
32485 &usSendSize))||
32486 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
32487 {
32488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32489 "Unable to get send buffer in %s %p %p %p", __func__,
32490 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
32491 wdiEXTScanResetSignfRSSIChangeRspCb);
32492 WDI_ASSERT(0);
32493 return WDI_STATUS_E_FAILURE;
32494 }
32495 pHalSigRssiResetReqParams =
32496 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
32497
32498 pHalSigRssiResetReqParams->requestId =
32499 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
32500
32501 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32502
32503
32504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32505 wdiEXTScanResetSignfRSSIChangeRspCb,
32506 pEventData->pUserData,
32507 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
32508}
32509
32510/**
32511 @brief Process Extended Scan Start Rsp function (called when a response
32512 is being received over the bus from HAL)
32513
32514 @param pWDICtx: pointer to the WLAN DAL context
32515 pEventData: pointer to the event information structure
32516
32517 @see
32518 @return Result of the function call
32519*/
32520WDI_Status
32521WDI_ProcessEXTScanStartRsp
32522(
32523 WDI_ControlBlockType* pWDICtx,
32524 WDI_EventInfoType* pEventData
32525)
32526{
32527 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
32528
32529 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32530 "%s: %d",__func__, __LINE__);
32531 /*-------------------------------------------------------------------------
32532 Sanity check
32533 -------------------------------------------------------------------------*/
32534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32535 ( NULL == pEventData->pEventData))
32536 {
32537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32538 "%s: Invalid parameters", __func__);
32539 WDI_ASSERT(0);
32540 return WDI_STATUS_E_FAILURE;
32541 }
32542
32543 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32544 if ( NULL == wdiEXTScanStartRspCb)
32545 {
32546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32547 "%s: Callback function Invalid", __func__);
32548 WDI_ASSERT(0);
32549 return WDI_STATUS_E_FAILURE;
32550 }
32551
32552 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
32553
32554 return WDI_STATUS_SUCCESS;
32555}
32556
32557
32558/**
32559 @brief Process Extended Scan Stop Rsp function (called when a response
32560 is being received over the bus from HAL)
32561
32562 @param pWDICtx: pointer to the WLAN DAL context
32563 pEventData: pointer to the event information structure
32564
32565 @see
32566 @return Result of the function call
32567*/
32568WDI_Status
32569WDI_ProcessEXTScanStopRsp
32570(
32571 WDI_ControlBlockType* pWDICtx,
32572 WDI_EventInfoType* pEventData
32573)
32574{
32575 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
32576
32577 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32578 "%s: %d",__func__, __LINE__);
32579
32580
32581 /*-------------------------------------------------------------------------
32582 Sanity check
32583 -------------------------------------------------------------------------*/
32584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32585 ( NULL == pEventData->pEventData))
32586 {
32587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32588 "%s: Invalid parameters", __func__);
32589 WDI_ASSERT(0);
32590 return WDI_STATUS_E_FAILURE;
32591 }
32592
32593 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32594 if ( NULL == wdiEXTScanStopRspCb)
32595 {
32596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32597 "%s: Callback function Invalid", __func__);
32598 WDI_ASSERT(0);
32599 return WDI_STATUS_E_FAILURE;
32600 }
32601
32602 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32603
32604 return WDI_STATUS_SUCCESS;
32605}
32606
32607/**
32608 @brief Process Extended Scan Get Cached Rsp function (called when a response
32609 is being received over the bus from HAL)
32610
32611 @param pWDICtx: pointer to the WLAN DAL context
32612 pEventData: pointer to the event information structure
32613
32614 @see
32615 @return Result of the function call
32616*/
32617WDI_Status
32618WDI_ProcessEXTScanGetCachedResultsRsp
32619(
32620 WDI_ControlBlockType* pWDICtx,
32621 WDI_EventInfoType* pEventData
32622)
32623{
32624 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
32625
32626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32627 "%s: %d Enter",__func__, __LINE__);
32628
32629
32630 /*-------------------------------------------------------------------------
32631 Sanity check
32632 -------------------------------------------------------------------------*/
32633 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32634 ( NULL == pEventData->pEventData))
32635 {
32636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32637 "%s: Invalid parameters", __func__);
32638 WDI_ASSERT(0);
32639 return WDI_STATUS_E_FAILURE;
32640 }
32641
32642 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
32643 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
32644 {
32645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32646 "%s: Callback function Invalid", __func__);
32647 WDI_ASSERT(0);
32648 return WDI_STATUS_E_FAILURE;
32649 }
32650
32651 wdiEXTScanGetCachedResultsRspCb(
32652 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32653
32654 return WDI_STATUS_SUCCESS;
32655}
32656
32657/**
32658 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
32659 is being received over the bus from HAL)
32660
32661 @param pWDICtx: pointer to the WLAN DAL context
32662 pEventData: pointer to the event information structure
32663
32664 @see
32665 @return Result of the function call
32666*/
32667WDI_Status
32668WDI_ProcessEXTScanGetCapabilitiesRsp
32669(
32670 WDI_ControlBlockType* pWDICtx,
32671 WDI_EventInfoType* pEventData
32672)
32673{
32674 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32675
32676 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32677 "%s: %d ",__func__, __LINE__);
32678
32679
32680 /*-------------------------------------------------------------------------
32681 Sanity check
32682 -------------------------------------------------------------------------*/
32683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32684 ( NULL == pEventData->pEventData))
32685 {
32686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32687 "%s: Invalid parameters", __func__);
32688 WDI_ASSERT(0);
32689 return WDI_STATUS_E_FAILURE;
32690 }
32691
32692 wdiEXTScanGetCapabilitiesRspCb =
32693 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
32694 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
32695 {
32696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32697 "%s: Callback function Invalid", __func__);
32698 WDI_ASSERT(0);
32699 return WDI_STATUS_E_FAILURE;
32700 }
32701
32702 wdiEXTScanGetCapabilitiesRspCb(
32703 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32704
32705 return WDI_STATUS_SUCCESS;
32706}
32707
32708/**
32709 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
32710 response is being received over the bus from HAL)
32711
32712 @param pWDICtx: pointer to the WLAN DAL context
32713 pEventData: pointer to the event information structure
32714
32715 @see
32716 @return Result of the function call
32717*/
32718WDI_Status
32719WDI_ProcessEXTScanSetHotlistBSSIDRsp
32720(
32721 WDI_ControlBlockType* pWDICtx,
32722 WDI_EventInfoType* pEventData
32723)
32724{
32725 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32726
32727 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32728 "%s: %d ",__func__, __LINE__);
32729
32730
32731 /*-------------------------------------------------------------------------
32732 Sanity check
32733 -------------------------------------------------------------------------*/
32734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32735 ( NULL == pEventData->pEventData))
32736 {
32737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32738 "%s: Invalid parameters", __func__);
32739 WDI_ASSERT(0);
32740 return WDI_STATUS_E_FAILURE;
32741 }
32742
32743 wdiEXTScanSetBSSIDHotlistRspCb =
32744 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32745 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
32746 {
32747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32748 "%s: Callback function Invalid", __func__);
32749 WDI_ASSERT(0);
32750 return WDI_STATUS_E_FAILURE;
32751 }
32752
32753 wdiEXTScanSetBSSIDHotlistRspCb(
32754 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32755
32756 return WDI_STATUS_SUCCESS;
32757}
32758
32759/**
32760 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
32761 when a response is being received over the bus from HAL)
32762
32763 @param pWDICtx: pointer to the WLAN DAL context
32764 pEventData: pointer to the event information structure
32765
32766 @see
32767 @return Result of the function call
32768*/
32769WDI_Status
32770WDI_ProcessEXTScanResetHotlistBSSIDRsp
32771(
32772 WDI_ControlBlockType* pWDICtx,
32773 WDI_EventInfoType* pEventData
32774)
32775{
32776 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32777
32778 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32779 "%s: %d ",__func__, __LINE__);
32780
32781
32782 /*-------------------------------------------------------------------------
32783 Sanity check
32784 -------------------------------------------------------------------------*/
32785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32786 ( NULL == pEventData->pEventData))
32787 {
32788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32789 "%s: Invalid parameters", __func__);
32790 WDI_ASSERT(0);
32791 return WDI_STATUS_E_FAILURE;
32792 }
32793
32794 wdiEXTScanResetBSSIDHotlistRspCb =
32795 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
32796 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
32797 {
32798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32799 "%s: Callback function Invalid", __func__);
32800 WDI_ASSERT(0);
32801 return WDI_STATUS_E_FAILURE;
32802 }
32803
32804 wdiEXTScanResetBSSIDHotlistRspCb(
32805 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32806
32807 return WDI_STATUS_SUCCESS;
32808}
32809
32810/**
32811 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
32812 when a response is being received over the bus from HAL)
32813
32814 @param pWDICtx: pointer to the WLAN DAL context
32815 pEventData: pointer to the event information structure
32816
32817 @see
32818 @return Result of the function call
32819*/
32820WDI_Status
32821WDI_ProcessEXTScanSetSignfRSSIChangeRsp
32822(
32823 WDI_ControlBlockType* pWDICtx,
32824 WDI_EventInfoType* pEventData
32825)
32826{
32827 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32828
32829 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32830 "%s: %d",__func__, __LINE__);
32831
32832
32833 /*-------------------------------------------------------------------------
32834 Sanity check
32835 -------------------------------------------------------------------------*/
32836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32837 ( NULL == pEventData->pEventData))
32838 {
32839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32840 "%s: Invalid parameters", __func__);
32841 WDI_ASSERT(0);
32842 return WDI_STATUS_E_FAILURE;
32843 }
32844
32845 wdiEXTScanSetSignfRSSIChangeRspCb =
32846 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32847 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
32848 {
32849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32850 "%s: Callback function Invalid", __func__);
32851 WDI_ASSERT(0);
32852 return WDI_STATUS_E_FAILURE;
32853 }
32854
32855 wdiEXTScanSetSignfRSSIChangeRspCb(
32856 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32857
32858 return WDI_STATUS_SUCCESS;
32859}
32860
32861/**
32862 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
32863 (called when a response is being received over the bus from HAL)
32864
32865 @param pWDICtx: pointer to the WLAN DAL context
32866 pEventData: pointer to the event information structure
32867
32868 @see
32869 @return Result of the function call
32870*/
32871WDI_Status
32872WDI_ProcessEXTScanResetSignfRSSIChangeRsp
32873(
32874 WDI_ControlBlockType* pWDICtx,
32875 WDI_EventInfoType* pEventData
32876)
32877{
32878 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
32879
32880 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32881 "%s: %d Enter",__func__, __LINE__);
32882
32883
32884 /*-------------------------------------------------------------------------
32885 Sanity check
32886 -------------------------------------------------------------------------*/
32887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32888 ( NULL == pEventData->pEventData))
32889 {
32890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32891 "%s: Invalid parameters", __func__);
32892 WDI_ASSERT(0);
32893 return WDI_STATUS_E_FAILURE;
32894 }
32895
32896 wdiEXTScanResetSignfRSSIChangeRspCb =
32897 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
32898 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
32899 {
32900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32901 "%s: Callback function Invalid", __func__);
32902 WDI_ASSERT(0);
32903 return WDI_STATUS_E_FAILURE;
32904 }
32905
32906 wdiEXTScanResetSignfRSSIChangeRspCb(
32907 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32908
32909 return WDI_STATUS_SUCCESS;
32910}
32911#endif /* WLAN_FEATURE_EXTSCAN */