blob: 6816fe5f04b0a05fd77ba6186b2d9f07c135a276 [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/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam1ed83fc2014-02-19 01:15:45 -080026 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031/*===========================================================================
32
33 W L A N _ Q C T _ W D I. C
34
35 OVERVIEW:
36
Jeff Johnsone7245742012-09-05 17:12:55 -070037 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070038 Layer Interface.
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070041 MAC implementation that wishes to use the WLAN Device.
42
43 DEPENDENCIES:
44
45 Are listed for each API below.
46
47
Jeff Johnson295189b2012-06-20 16:38:30 -070048===========================================================================*/
49
50/*===========================================================================
51
52 EDIT HISTORY FOR FILE
53
54
55 This section contains comments describing changes made to the module.
56 Notice that changes are listed in reverse chronological order.
57
58
59 $Header$$DateTime$$Author$
60
61
62 when who what, where, why
63---------- --- --------------------------------------------------------
6410/05/11 hap Adding support for Keep Alive
652010-08-09 lti Created module
66
67===========================================================================*/
68
69/*----------------------------------------------------------------------------
70 * Include Files
71 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070072#include "wlan_qct_wdi.h"
73#include "wlan_qct_wdi_i.h"
74#include "wlan_qct_wdi_sta.h"
75#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070076
Jeff Johnsone7245742012-09-05 17:12:55 -070077#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
79#include "wlan_qct_pal_api.h"
80#include "wlan_qct_pal_type.h"
81#include "wlan_qct_pal_status.h"
82#include "wlan_qct_pal_sync.h"
83#include "wlan_qct_pal_msg.h"
84#include "wlan_qct_pal_trace.h"
85#include "wlan_qct_pal_packet.h"
86
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#include "wlan_hal_msg.h"
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070092#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
Girish Gowli55caa852015-01-19 16:09:49 +053094#ifdef DEBUG_ROAM_DELAY
95#include "vos_api.h"
96#endif //#ifdef DEBUG_ROAM_DELAY
97
Jeff Johnson295189b2012-06-20 16:38:30 -070098/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070099 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700100 ===========================================================================*/
101#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
102
Jeff Johnsone7245742012-09-05 17:12:55 -0700103#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
104#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
105
Yue Mad8cac142013-03-28 11:33:46 -0700106#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108#ifdef FEATURE_WLAN_SCAN_PNO
109#define WDI_PNO_VERSION_MASK 0x8000
110#endif
111
112/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700115static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700116/* array of features supported. Need to add a new feature
117 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
118 */
119static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800120 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800121#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700122 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800123#else
124 ,FEATURE_NOT_SUPPORTED
125#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800126#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700127 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800128#else
129 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800130#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800132#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700133 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800134#else
135 ,FEATURE_NOT_SUPPORTED
136#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700137 ,FEATURE_NOT_SUPPORTED //9
138 ,FEATURE_NOT_SUPPORTED //10
139 ,FEATURE_NOT_SUPPORTED //11
140 ,FEATURE_NOT_SUPPORTED //12
141 ,FEATURE_NOT_SUPPORTED //13
142 ,FEATURE_NOT_SUPPORTED //14
143 ,FEATURE_NOT_SUPPORTED //15
144 ,FEATURE_NOT_SUPPORTED //16
145 ,FEATURE_NOT_SUPPORTED //17
146 ,FEATURE_NOT_SUPPORTED //18
147 ,FEATURE_NOT_SUPPORTED //19
148 ,FEATURE_NOT_SUPPORTED //20
149 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700152 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700153#else
154 ,FEATURE_NOT_SUPPORTED
155#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700156 ,FEATURE_NOT_SUPPORTED //24
157 ,FEATURE_NOT_SUPPORTED //25
158 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700159 ,FEATURE_NOT_SUPPORTED //27
160 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530161#ifdef FEATURE_WLAN_TDLS
162 ,ADVANCE_TDLS //29
163#else
164 ,FEATURE_NOT_SUPPORTED //29
165#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530166 ,FEATURE_NOT_SUPPORTED //30
167 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530168 ,EXTENDED_NSOFFLOAD_SLOT //32
169 ,CH_SWITCH_V1 //33
170 ,HT40_OBSS_SCAN //34
171 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530172 ,FEATURE_NOT_SUPPORTED //36
173 ,FEATURE_NOT_SUPPORTED //37
174 ,FEATURE_NOT_SUPPORTED //38
175#ifdef FEATURE_WLAN_TDLS
176 ,TDLS_SCAN_COEXISTENCE //39
177#else
178 ,FEATURE_NOT_SUPPORTED //39
179#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530180#ifdef WLAN_FEATURE_LINK_LAYER_STATS
181 ,LINK_LAYER_STATS_MEAS //40
182#else
183 ,FEATURE_NOT_SUPPORTED //40
184#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530185 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530186#ifdef WLAN_FEATURE_EXTSCAN
187 ,EXTENDED_SCAN //42
188#else
189 ,FEATURE_NOT_SUPPORTED //42
190#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530191 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800192
Siddharth Bhal171788a2014-09-29 21:02:40 +0530193 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530194 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530195 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530196 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530197 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530198 ,BCN_IE_FLT_DELTA //49
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530199};
Jeff Johnson295189b2012-06-20 16:38:30 -0700200
201/*--------------------------------------------------------------------------
202 WLAN DAL State Machine
203 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700204WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700205{
206 /*WDI_INIT_ST*/
207 {{
208 WDI_MainStart, /*WDI_START_EVENT*/
209 NULL, /*WDI_STOP_EVENT*/
210 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
211 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
212 WDI_MainClose, /*WDI_CLOSE_EVENT*/
213 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
214 }},
215
216 /*WDI_STARTED_ST*/
217 {{
218 WDI_MainStartStarted, /*WDI_START_EVENT*/
219 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
220 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
221 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
222 NULL, /*WDI_CLOSE_EVENT*/
223 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
224 }},
225
226 /*WDI_STOPPED_ST*/
227 {{
228 WDI_MainStart, /*WDI_START_EVENT*/
229 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
230 NULL, /*WDI_REQUEST_EVENT*/
231 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
232 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700233 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700234 }},
235
236 /*WDI_BUSY_ST*/
237 {{
238 WDI_MainStartBusy, /*WDI_START_EVENT*/
239 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
240 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
241 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
242 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
243 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
244 }}
245};
246
Jeff Johnsone7245742012-09-05 17:12:55 -0700247/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700248 DAL Request Processing Array - the functions in this table will only be
249 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700250 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700251 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700252WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700253{
254 /*INIT*/
255 WDI_ProcessStartReq, /* WDI_START_REQ */
256 WDI_ProcessStopReq, /* WDI_STOP_REQ */
257 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
258
259 /*SCAN*/
260 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
261 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
262 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
263 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
264
265 /*ASSOCIATION*/
266 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
267 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
268 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
269 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
270 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
271
272 /* Security */
273 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
274 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
275 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
276 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
277
278 /* QoS and BA APIs */
279 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
280 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
281 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
282 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
283 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
284
285 /* Miscellaneous Control APIs */
286 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
287 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
288 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
289 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
290 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
291
292 /*BA APIs*/
293 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
294 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
295
296 /*Beacon processing APIs*/
297 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
298 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
299
300 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
301 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
302 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
303 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700304 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700305 /* PowerSave APIs */
306 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
307 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
308 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
309 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
310 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
311 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
312 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
313 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
314 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
315 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
316 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
317 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
318 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
319 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
320 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
321 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
322 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
323 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
324 /*NV Download APIs*/
325 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
326 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
327 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
328#ifdef WLAN_FEATURE_VOWIFI_11R
329 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
330#else
331 NULL,
332#endif /* WLAN_FEATURE_VOWIFI_11R */
333 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
334 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700335 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336
337#ifdef FEATURE_OEM_DATA_SUPPORT
338 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
339#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700341#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700343
344 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700345
346#ifdef FEATURE_WLAN_SCAN_PNO
347 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
348 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
349 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
350#else
351 NULL,
352 NULL,
353 NULL,
354#endif /* FEATURE_WLAN_SCAN_PNO */
355
356 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700357
Jeff Johnson295189b2012-06-20 16:38:30 -0700358#ifdef WLAN_FEATURE_PACKET_FILTERING
359 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700360 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700361 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700362 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700364 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700366 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700367#else
368 NULL,
369 NULL,
370 NULL,
371 NULL,
372#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700373 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700374 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
375 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
376
377 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800378#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
380#else
381 NULL,
382#endif
383
384#ifdef WLAN_FEATURE_GTK_OFFLOAD
385 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
386 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
387#else
388 NULL,
389 NULL,
390#endif // WLAN_FEATURE_GTK_OFFLOAD
391
392 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
393 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700394#ifdef WLAN_FEATURE_11AC
395 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800396#else
397 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700398#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800399#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800400 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
401#else
schang86c22c42013-03-13 18:41:24 -0700402 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800403#endif
schang86c22c42013-03-13 18:41:24 -0700404 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700405#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700406 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700407#else
408 NULL,
409#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530410#ifdef FEATURE_WLAN_TDLS
411 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
412#else
413 NULL,
414#endif
Leo Chang9056f462013-08-01 19:21:11 -0700415#ifdef FEATURE_WLAN_LPHB
416 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
417#else
418 NULL,
419#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530420
421#ifdef FEATURE_WLAN_BATCH_SCAN
422 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
423#else
424 NULL,
425#endif /* FEATURE_WLAN_BATCH_SCAN */
426
Arif Hussaina5ebce02013-08-09 15:09:58 -0700427 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800428
429 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530430
431 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530432
433#ifdef WLAN_FEATURE_LINK_LAYER_STATS
434 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
435 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
436 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
437#else
438 NULL,
439 NULL,
440 NULL,
441#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530442#ifdef WLAN_FEATURE_EXTSCAN
443 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
444 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
445 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
446 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
447 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
448 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
449 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
450 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
451#else
452 NULL,
453 NULL,
454 NULL,
455 NULL,
456 NULL,
457 NULL,
458 NULL,
459 NULL,
460#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530461 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530462
463 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530464
465 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
schang86c22c42013-03-13 18:41:24 -0700466 /*-------------------------------------------------------------------------
467 Indications
468 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700469 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800470 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530471 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
472 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700473#ifdef WLAN_FEATURE_11W
474 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
475#else
476 NULL,
477#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700478 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
479 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530480#ifdef FEATURE_WLAN_BATCH_SCAN
481 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
482 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
483#else
484 NULL,
485 NULL,
486#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700487 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800488
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530489 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800490 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
491
492 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530493#ifdef FEATURE_WLAN_TDLS
494 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
495#else
496 NULL,
497#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530498
Jeff Johnson295189b2012-06-20 16:38:30 -0700499};
500
501
Jeff Johnsone7245742012-09-05 17:12:55 -0700502/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700503 DAL Request Processing Array - the functions in this table will only be
504 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700507WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700508{
509 /*INIT*/
510 WDI_ProcessStartRsp, /* WDI_START_RESP */
511 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
512 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
513
514 /*SCAN*/
515 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
516 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
517 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
518 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
519
520 /* ASSOCIATION*/
521 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
522 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
523 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
524 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
525 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
526
527 /* Security */
528 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
529 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
530 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
531 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
532
533 /* QoS and BA APIs */
534 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
535 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
536 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
537 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
538 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
539
540 /* Miscellaneous Control APIs */
541 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
542 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
543 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
544 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
545 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
546
547 /* BA APIs*/
548 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
549 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* IBSS APIs*/
552 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
553 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
554
555 /*Soft AP APIs*/
556 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
557 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
558 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
559 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
560
561 /* PowerSave APIs */
562 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
563 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
564 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
565 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
566 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
567 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
568 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
569 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
570 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
571 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
572 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
573 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
574 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
575 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
576 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
577 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
578 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
579 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700580
Jeff Johnson295189b2012-06-20 16:38:30 -0700581
582 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
583
584 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
585 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
586#ifdef WLAN_FEATURE_VOWIFI_11R
587 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
588#else
589 NULL,
590#endif /* WLAN_FEATURE_VOWIFI_11R */
591 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
592 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700593#ifdef FEATURE_OEM_DATA_SUPPORT
594 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
595#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700596 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700597#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700598 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
599
Jeff Johnson295189b2012-06-20 16:38:30 -0700600 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700601
Jeff Johnson295189b2012-06-20 16:38:30 -0700602 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700603
Jeff Johnsone7245742012-09-05 17:12:55 -0700604 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
605
Jeff Johnson295189b2012-06-20 16:38:30 -0700606#ifdef FEATURE_WLAN_SCAN_PNO
607 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
608 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
609 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
610#else
611 NULL,
612 NULL,
613 NULL,
614#endif // FEATURE_WLAN_SCAN_PNO
615
616 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700617 /*---------------------------------------------------------------------
618 Indications
619 ---------------------------------------------------------------------*/
620#ifdef WLAN_FEATURE_PACKET_FILTERING
621 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700622 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700623 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700624 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700625 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700626 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700627 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700628 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700629#else
630 NULL,
631 NULL,
632 NULL,
633 NULL,
634#endif // WLAN_FEATURE_PACKET_FILTERING
635
636 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
637 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
638
639 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800640#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700641 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
642#else
643 NULL,
644#endif
645
646#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700647 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
648 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700649#else
650 NULL,
651 NULL,
652#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700653 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
654 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700655#ifdef WLAN_FEATURE_11AC
656 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700657#else
658 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700659#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800660#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800661 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
662#else
663 NULL,
664#endif
schang86c22c42013-03-13 18:41:24 -0700665 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700666#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700667 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700668#else
669 NULL,
670#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530671#ifdef FEATURE_WLAN_TDLS
672 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
673#else
674 NULL,
675#endif
Leo Chang9056f462013-08-01 19:21:11 -0700676#ifdef FEATURE_WLAN_LPHB
677 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
678#else
679 NULL,
680#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530681
682#ifdef FEATURE_WLAN_BATCH_SCAN
683 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
684#else
685 NULL,
686#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800687 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530688
c_hpothu92367912014-05-01 15:18:17 +0530689 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800690
c_hpothu92367912014-05-01 15:18:17 +0530691 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
692
693 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800694
Sunil Duttbd736ed2014-05-26 21:19:41 +0530695
696#ifdef WLAN_FEATURE_LINK_LAYER_STATS
697 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
698 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
699 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
700#else
701 NULL,
702 NULL,
703 NULL,
704#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530705#ifdef WLAN_FEATURE_EXTSCAN
706 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
707 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
708 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
709 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
710 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
711 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
712 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
713 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
714#else
715 NULL,
716 NULL,
717 NULL,
718 NULL,
719 NULL,
720 NULL,
721 NULL,
722 NULL,
723#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530724 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530725
726 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530727
728 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700729 /*---------------------------------------------------------------------
730 Indications
731 ---------------------------------------------------------------------*/
732 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
733 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
734 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
735 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
736 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
737 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
738
739 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
740
741 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
742
Jeff Johnson295189b2012-06-20 16:38:30 -0700743 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700744
745#ifdef FEATURE_WLAN_SCAN_PNO
746 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
747#else
748 NULL,
749#endif // FEATURE_WLAN_SCAN_PNO
750
751#ifdef WLAN_WAKEUP_EVENTS
752 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
753#else // WLAN_WAKEUP_EVENTS
754 NULL,
755#endif // WLAN_WAKEUP_EVENTS
756
757 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800758
Viral Modid86bde22012-12-10 13:09:21 -0800759 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530760#ifdef FEATURE_WLAN_TDLS
761 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
762#else
763 NULL,
764#endif
Leo Chang9056f462013-08-01 19:21:11 -0700765
766#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700767 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700768#else
769 NULL,
770#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700771
772 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700773
774 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530775
776#ifdef FEATURE_WLAN_BATCH_SCAN
777 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
778#else
779 NULL,
780#endif
781
Leo Chang0b0e45a2013-12-15 15:18:55 -0800782#ifdef FEATURE_WLAN_CH_AVOID
783 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
784#else
785 NULL,
786#endif /* FEATURE_WLAN_CH_AVOID */
787
Sunil Duttbd736ed2014-05-26 21:19:41 +0530788 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
789#ifdef WLAN_FEATURE_LINK_LAYER_STATS
790 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
791#else
792 NULL,
793#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530794#ifdef WLAN_FEATURE_EXTSCAN
795 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
796 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
797 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
798 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
799 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
800#else
801 NULL,
802 NULL,
803 NULL,
804 NULL,
805 NULL,
806#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530807#ifdef FEATURE_WLAN_TDLS
808 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
809#else
810 NULL,
811#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530812 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700813};
814
815
Jeff Johnsone7245742012-09-05 17:12:55 -0700816/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700817 WLAN DAL Global Control Block
818 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700819WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700820static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
821
Jeff Johnsone7245742012-09-05 17:12:55 -0700822const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700823
824/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700825WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700826void* WDI_GET_PAL_CTX( void )
827{
Jeff Johnsone7245742012-09-05 17:12:55 -0700828 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700829}/*WDI_GET_PAL_CTX*/
830
Jeff Johnsone7245742012-09-05 17:12:55 -0700831/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700832 Helper inline converters
833 ============================================================================*/
834/*Convert WDI driver type into HAL driver type*/
835WPT_STATIC WPT_INLINE WDI_Status
836WDI_HAL_2_WDI_STATUS
837(
838 eHalStatus halStatus
839);
840
841/*Convert WDI request type into HAL request type*/
842WPT_STATIC WPT_INLINE tHalHostMsgType
843WDI_2_HAL_REQ_TYPE
844(
845 WDI_RequestEnumType wdiReqType
846);
847
848/*Convert WDI response type into HAL response type*/
849WPT_STATIC WPT_INLINE WDI_ResponseEnumType
850HAL_2_WDI_RSP_TYPE
851(
852 tHalHostMsgType halMsg
853);
854
855/*Convert WDI driver type into HAL driver type*/
856WPT_STATIC WPT_INLINE tDriverType
857WDI_2_HAL_DRV_TYPE
858(
859 WDI_DriverType wdiDriverType
860);
861
862/*Convert WDI stop reason into HAL stop reason*/
863WPT_STATIC WPT_INLINE tHalStopType
864WDI_2_HAL_STOP_REASON
865(
866 WDI_StopType wdiStopType
867);
868
869/*Convert WDI scan mode type into HAL scan mode type*/
870WPT_STATIC WPT_INLINE eHalSysMode
871WDI_2_HAL_SCAN_MODE
872(
873 WDI_ScanMode wdiScanMode
874);
875
876/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700877WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700878WDI_2_HAL_SEC_CH_OFFSET
879(
880 WDI_HTSecondaryChannelOffset wdiSecChOffset
881);
882
883/*Convert WDI BSS type into HAL BSS type*/
884WPT_STATIC WPT_INLINE tSirBssType
885WDI_2_HAL_BSS_TYPE
886(
887 WDI_BssType wdiBSSType
888);
889
890/*Convert WDI NW type into HAL NW type*/
891WPT_STATIC WPT_INLINE tSirNwType
892WDI_2_HAL_NW_TYPE
893(
894 WDI_NwType wdiNWType
895);
896
897/*Convert WDI chanel bonding type into HAL cb type*/
898WPT_STATIC WPT_INLINE ePhyChanBondState
899WDI_2_HAL_CB_STATE
900(
901 WDI_PhyChanBondState wdiCbState
902);
903
904/*Convert WDI chanel bonding type into HAL cb type*/
905WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
906WDI_2_HAL_HT_OPER_MODE
907(
908 WDI_HTOperatingMode wdiHTOperMode
909);
910
911/*Convert WDI mimo PS type into HAL mimo PS type*/
912WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
913WDI_2_HAL_MIMO_PS
914(
915 WDI_HTMIMOPowerSaveState wdiHTOperMode
916);
917
918/*Convert WDI ENC type into HAL ENC type*/
919WPT_STATIC WPT_INLINE tAniEdType
920WDI_2_HAL_ENC_TYPE
921(
922 WDI_EncryptType wdiEncType
923);
924
925/*Convert WDI WEP type into HAL WEP type*/
926WPT_STATIC WPT_INLINE tAniWepType
927WDI_2_HAL_WEP_TYPE
928(
929 WDI_WepType wdiWEPType
930);
931
932/*Convert WDI Link State into HAL Link State*/
933WPT_STATIC WPT_INLINE tSirLinkState
934WDI_2_HAL_LINK_STATE
935(
936 WDI_LinkStateType wdiLinkState
937);
938
Jeff Johnsone7245742012-09-05 17:12:55 -0700939/*Translate a STA Context from WDI into HAL*/
940WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700941void
942WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700943(
Jeff Johnson295189b2012-06-20 16:38:30 -0700944 tConfigStaParams* phalConfigSta,
945 WDI_ConfigStaReqInfoType* pwdiConfigSta
946);
Jeff Johnsone7245742012-09-05 17:12:55 -0700947
948/*Translate a Rate set info from WDI into HAL*/
949WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700950WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700951(
Jeff Johnson295189b2012-06-20 16:38:30 -0700952 tSirMacRateSet* pHalRateSet,
953 WDI_RateSet* pwdiRateSet
954);
955
956/*Translate an EDCA Parameter Record from WDI into HAL*/
957WPT_STATIC WPT_INLINE void
958WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700959(
Jeff Johnson295189b2012-06-20 16:38:30 -0700960 tSirMacEdcaParamRecord* phalEdcaParam,
961 WDI_EdcaParamRecord* pWDIEdcaParam
962);
963
964/*Copy a management frame header from WDI fmt into HAL fmt*/
965WPT_STATIC WPT_INLINE void
966WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
967(
968 tSirMacMgmtHdr* pmacMgmtHdr,
969 WDI_MacMgmtHdr* pwdiMacMgmtHdr
970);
971
972/*Copy config bss parameters from WDI fmt into HAL fmt*/
973WPT_STATIC WPT_INLINE void
974WDI_CopyWDIConfigBSSToHALConfigBSS
975(
976 tConfigBssParams* phalConfigBSS,
977 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
978);
979
Jeff Johnsone7245742012-09-05 17:12:55 -0700980/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700981 pointed to by user data */
982WPT_STATIC WPT_INLINE void
983WDI_ExtractRequestCBFromEvent
984(
985 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700986 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700987 void** ppUserData
988);
989
990wpt_uint8
991WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700992(
Jeff Johnson295189b2012-06-20 16:38:30 -0700993 WDI_ControlBlockType* pWDICtx,
994 WDI_BSSSessionType** ppSession
995);
996
997void
998WDI_AddBcastSTAtoSTATable
999(
1000 WDI_ControlBlockType* pWDICtx,
1001 WDI_AddStaParams * staParams,
1002 wpt_uint16 usBcastStaIdx
1003);
1004
1005WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001006(
Jeff Johnson295189b2012-06-20 16:38:30 -07001007 WDI_ControlBlockType* pWDICtx,
1008 WDI_EventInfoType* pEventData
1009);
1010
1011void
1012WDI_SetPowerStateCb
1013(
1014 wpt_status status,
1015 unsigned int dxePhyAddr,
1016 void *pContext
1017);
1018
Jeff Johnson295189b2012-06-20 16:38:30 -07001019/**
1020 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001021
1022 @param wdiReqMsgId: WDI Message request Id
1023
1024 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 @return Result of the function call
1026*/
1027static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1028{
1029 switch (wdiReqMsgId)
1030 {
1031 CASE_RETURN_STRING( WDI_START_REQ );
1032 CASE_RETURN_STRING( WDI_STOP_REQ );
1033 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1034 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1035 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1036 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1037 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1038 CASE_RETURN_STRING( WDI_JOIN_REQ );
1039 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1040 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1041 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1042 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1043 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1044 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1045 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1046 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1047 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1048 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1049 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1050 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1051 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1052 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001053 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1055 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1056 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1057 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1058 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1059 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1060 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1061 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1062 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1063 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1064 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1065 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001066 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301068#ifdef FEATURE_WLAN_TDLS
1069 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301070 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301071#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001072 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1073 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1074 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1075 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1076 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1077 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1078 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1079 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1080 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1081 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1082 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1083 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1084 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1085 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1086 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1087 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1088 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1089 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1090 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1091 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1092 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1093 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1094 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1095 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1096 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001097 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001098 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1099 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1100 #ifdef FEATURE_WLAN_SCAN_PNO
1101 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1102 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1103 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1104 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001105#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001106 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001107#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001108 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1109 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1110 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1111 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1112 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1113 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1114 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1115 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1116 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301117 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001118 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001119 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001120#ifdef WLAN_FEATURE_11W
1121 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1122#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301123#ifdef FEATURE_WLAN_BATCH_SCAN
1124 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1125 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1126 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1127#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301128 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1129 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001130 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301131#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1132 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1133 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1134 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1135#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301136#ifdef WLAN_FEATURE_EXTSCAN
1137 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1138 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1139 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1140 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1141 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1142 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1143 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1144 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1145#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301146 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301147 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301148 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001149 default:
1150 return "Unknown WDI MessageId";
1151 }
1152}
1153
1154
1155
1156/**
1157 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001158
1159 @param wdiRespMsgId: WDI Message response Id
1160
1161 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 @return Result of the function call
1163*/
1164static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1165{
1166 switch (wdiRespMsgId)
1167 {
1168 CASE_RETURN_STRING( WDI_START_RESP );
1169 CASE_RETURN_STRING( WDI_STOP_RESP );
1170 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1171 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1172 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1173 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1174 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1175 CASE_RETURN_STRING( WDI_JOIN_RESP );
1176 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1177 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1178 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1179 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1180 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1181 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1182 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1183 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1184 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1185 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1186 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1187 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1188 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1189 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1190 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1191 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1192 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1193 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1194 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1195 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1196 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1197 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1198 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1199 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1200 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1201 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1202 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301203#ifdef FEATURE_WLAN_TDLS
1204 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301205 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301206 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1207#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1209 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1210 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1211 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1212 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1213 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1214 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1215 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1216 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1217 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1218 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1219 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1220 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1221 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1222 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1223 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1224 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1225 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1226 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1227 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1228 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1229 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1230 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1231 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1232 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001233 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001234 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1235 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1236 #ifdef FEATURE_WLAN_SCAN_PNO
1237 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1238 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1239 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1240 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001241#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001242 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001243#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001244 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1245 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1246 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1247 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1248 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1249 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1250 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1251 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001252 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301253#ifdef FEATURE_WLAN_BATCH_SCAN
1254 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1255#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001256 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301257 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301258 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301259#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1260 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1261 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1262 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1263#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301264#ifdef WLAN_FEATURE_EXTSCAN
1265 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1266 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1267 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1268 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1269 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1270 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1271 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1272 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1273 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1274 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1275 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1276 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1277 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1278
1279#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301280 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301281 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 default:
1283 return "Unknown WDI MessageId";
1284 }
1285}
1286
1287/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301288 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1289 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301290 @param capabilityBitmap - Base address of a 4 element Bitmap array
1291 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301292 @see
1293 @returns None
1294 */
1295void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1296{
Abhishek Singh08b60122014-02-04 18:05:23 +05301297 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301298 char capStr[512];
1299 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301300 for (j = 0; j < 4; j++) {
1301 for (i = 0; i < 32; i++) {
1302 if ((*(capabilityBitmap + j) & (1 << i))) {
1303 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301304 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1305 pCapStr += strlen("MCC");
1306 break;
1307 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1308 pCapStr += strlen("P2P");
1309 break;
1310 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1311 pCapStr += strlen("DOT11AC");
1312 break;
1313 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1314 pCapStr += strlen("SLM_SESSIONIZATION");
1315 break;
1316 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1317 pCapStr += strlen("DOT11AC_OPMODE");
1318 break;
1319 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1320 pCapStr += strlen("SAP32STA");
1321 break;
1322 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1323 pCapStr += strlen("TDLS");
1324 break;
1325 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1326 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1327 break;
1328 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1329 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1330 break;
1331 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1332 pCapStr += strlen("BEACON_OFFLOAD");
1333 break;
1334 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1335 pCapStr += strlen("SCAN_OFFLOAD");
1336 break;
1337 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1338 pCapStr += strlen("ROAM_OFFLOAD");
1339 break;
1340 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1341 pCapStr += strlen("BCN_MISS_OFFLOAD");
1342 break;
1343 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1344 pCapStr += strlen("STA_POWERSAVE");
1345 break;
1346 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1347 pCapStr += strlen("AP_UAPSD");
1348 break;
1349 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1350 pCapStr += strlen("AP_DFS");
1351 break;
1352 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1353 pCapStr += strlen("BLOCKACK");
1354 break;
1355 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1356 pCapStr += strlen("PHY_ERR");
1357 break;
1358 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1359 pCapStr += strlen("BCN_FILTER");
1360 break;
1361 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1362 pCapStr += strlen("RTT");
1363 break;
1364 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1365 pCapStr += strlen("RATECTRL");
1366 break;
1367 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1368 pCapStr += strlen("WOW");
1369 break;
1370 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1371 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1372 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301373 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1374 pCapStr += strlen("FW_IN_TX_PATH");
1375 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301376 case HT40_OBSS_SCAN:
1377 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1378 "%s", "HT40_OBSS_SCAN");
1379 pCapStr += strlen("HT40_OBSS_SCAN");
1380 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301381 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1382 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1383 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1384 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1385 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301386 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1387 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1388 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301389 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1390 pCapStr += strlen("CH_SWITCH_V1");
1391 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301392#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1393 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1394 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1395 break;
1396#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301397#ifdef WLAN_FEATURE_EXTSCAN
1398 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1399 pCapStr += strlen("EXTENDED_SCAN");
1400 break;
1401#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301402 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1403 pCapStr += strlen("MU_MIMO");
1404 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301405
Mihir Shetec34258c2014-07-30 17:50:27 +05301406 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1407 pCapStr += strlen("DYNAMIC_WMM_PS");
1408 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301409 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1410 pCapStr += strlen("FW_STATS");
1411 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301412 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1413 pCapStr += strlen("MAC_SPOOFED_SCAN");
1414 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301415 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1416 pCapStr += strlen("WPS_PRBRSP_TMPL");
1417 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301418 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1419 pCapStr += strlen("BCN_IE_FLT_DELTA");
1420 break;
1421
Siddharth Bhal171788a2014-09-29 21:02:40 +05301422
Mihir Shetebf8897b2014-11-26 14:54:39 +05301423 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1424 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1425 break;
1426
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301427 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1428 pCapStr += strlen("DISA");
1429 break;
1430
Abhishek Singh08b60122014-02-04 18:05:23 +05301431 }
1432 *pCapStr++ = ',';
1433 *pCapStr++ = ' ';
1434 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301435 }
1436 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301437 pCapStr -= 2;
1438 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301439 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301441}
1442
1443/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001444 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001445
1446 @param halStatusId: HAL status Id
1447
1448 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 @return Result of the function call
1450*/
1451static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1452{
1453 switch (halStatusId)
1454 {
1455 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1456 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1457 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1458 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1459 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1460 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1461 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1462 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1463 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1464 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1465 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1466 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1467 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1468 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1469 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1470 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1471 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1472 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1473 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1474 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1475 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1476 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1477 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1478 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1479 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1480 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1481 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1482 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1483 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1484 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1485 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1486 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1487 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1488 default:
1489 return "Unknown HAL status";
1490 }
1491}
1492
Jeff Johnsone7245742012-09-05 17:12:55 -07001493/*========================================================================
1494
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001496
Jeff Johnson295189b2012-06-20 16:38:30 -07001497==========================================================================*/
1498
1499/**
1500 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001501
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 DAL will allocate all the resources it needs. It will open PAL, it will also
1503 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001504 DXE/SMD or any other drivers that they need.
1505
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301506 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001507 ppWDIGlobalCtx: output pointer of Global Context
1508 pWdiDevCapability: output pointer of device capability
1509
1510 @return Result of the function call
1511*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001512WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001513WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001514(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301515 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 void** ppWDIGlobalCtx,
1517 WDI_DeviceCapabilityType* pWdiDevCapability,
1518 unsigned int driverType
1519)
1520{
1521 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001522 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001524 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1526
1527 /*---------------------------------------------------------------------
1528 Sanity check
1529 ---------------------------------------------------------------------*/
1530 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1533 "Invalid input parameters in WDI_Init");
1534
Jeff Johnsone7245742012-09-05 17:12:55 -07001535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001536 }
1537
1538 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001539 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 ---------------------------------------------------------------------*/
1541 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1542 {
1543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1544 "WDI module already initialized - return");
1545
Jeff Johnsone7245742012-09-05 17:12:55 -07001546 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001547 }
1548
1549 /*Module is now initialized - this flag is to ensure the fact that multiple
1550 init will not happen on WDI
1551 !! - potential race does exist because read and set are not atomic,
1552 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001553 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001554
1555 /*Setup the control block */
1556 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301557 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001558
1559 /*Setup the STA Table*/
1560 wdiStatus = WDI_STATableInit(&gWDICb);
1561 if ( WDI_STATUS_SUCCESS != wdiStatus )
1562 {
1563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1564 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001565 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001566 goto fail_STATableInit;
1567 }
1568
1569 /*------------------------------------------------------------------------
1570 Open the PAL
1571 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301572 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001573 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1574 {
1575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1576 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001577 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001578 goto fail_wpalOpen;
1579 }
1580
1581 /*Initialize main synchro mutex - it will be used to ensure integrity of
1582 the main WDI Control Block*/
1583 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1584 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1585 {
1586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1587 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001588 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 goto fail_mutex;
1590 }
1591
1592 /*Initialize the response timer - it will be used to time all messages
1593 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001594 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1595 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 &gWDICb);
1597 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1598 {
1599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1600 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001601 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 goto fail_timer;
1603 }
1604
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001605 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1606 WDI_SsrTimerCB,
1607 &gWDICb);
1608 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1609 {
1610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1611 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001612 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001613 goto fail_timer2;
1614 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001615 /* Initialize the WDI Pending Request Queue*/
1616 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1617 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1618 {
1619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1620 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001621 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001622 goto fail_pend_queue;
1623 }
1624
1625 /*Init WDI Pending Assoc Id Queue */
1626 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1627 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1628 {
1629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1630 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001631 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001632 goto fail_assoc_queue;
1633 }
1634
1635 /*Initialize the BSS sessions pending Queue */
1636 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1637 {
1638 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1639 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1642 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001643 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001644 goto fail_bss_queue;
1645 }
1646 }
1647
1648 /*Indicate the control block is sufficiently initialized for callbacks*/
1649 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1650
1651 /*------------------------------------------------------------------------
1652 Initialize the Data Path Utility Module
1653 ------------------------------------------------------------------------*/
1654 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1655 if ( WDI_STATUS_SUCCESS != wdiStatus )
1656 {
1657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1658 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001659 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 goto fail_dp_util_init;
1661 }
1662
1663 /* Init Set power state event */
1664 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001665 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 {
1667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1668 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001669 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 goto fail_power_event;
1671 }
1672
1673 /* Init WCTS action event */
1674 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001675 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001676 {
1677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1678 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001679 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 goto fail_wcts_event;
1681 }
1682
1683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001684 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001685 ------------------------------------------------------------------------*/
1686 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1687 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001688 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 wctsCBs.wctsRxMsgCBData = &gWDICb;
1690
Jeff Johnsone7245742012-09-05 17:12:55 -07001691 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 WDI_CT_CHANNEL_SIZE,
1694 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001695
1696 if ( NULL == gWDICb.wctsHandle )
1697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001699 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001700 goto fail_wcts_open;
1701 }
1702
1703 gWDICb.driverMode = (tDriverType)driverType;
1704 /* FTM mode not need to open Transport Driver */
1705 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001706 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001707 /*------------------------------------------------------------------------
1708 Open the Data Transport
1709 ------------------------------------------------------------------------*/
1710 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1711 {
1712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001713 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001714 goto fail_wdts_open;
1715 }
1716 }
1717
1718 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301720#ifdef DEBUG_ROAM_DELAY
1721 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
1722#endif //#ifdef DEBUG_ROAM_DELAY
Jeff Johnson295189b2012-06-20 16:38:30 -07001723 /*Send the context as a ptr to the global WDI Control Block*/
1724 *ppWDIGlobalCtx = &gWDICb;
1725
1726 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1729 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1730 return WDI_STATUS_SUCCESS;
1731
1732 /* ERROR handlers
1733 Undo everything that completed successfully */
1734
1735 fail_wdts_open:
1736 {
1737 wpt_status eventStatus;
1738
1739 /* Closing WCTS in this scenario is tricky since it has to close
1740 the SMD channel and then we get notified asynchronously when
1741 the channel has been closed. So we take some of the logic from
1742 the "normal" close procedure in WDI_Close()
1743 */
1744
1745 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 {
1748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001749 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001750 }
1751
1752 WCTS_CloseTransport(gWDICb.wctsHandle);
1753
1754 /* Wait for WCTS to close the control transport. If we were able
1755 to reset the event flag, then we'll wait for the event,
1756 otherwise we'll wait for a maximum amount of time required for
1757 the channel to be closed */
1758 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1759 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001760 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001761 WDI_WCTS_ACTION_TIMEOUT);
1762 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1763 {
1764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001765 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 }
1767 }
1768 else
1769 {
1770 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1771 }
1772 }
1773 fail_wcts_open:
1774 wpalEventDelete(&gWDICb.wctsActionEvent);
1775 fail_wcts_event:
1776 wpalEventDelete(&gWDICb.setPowerStateEvent);
1777 fail_power_event:
1778 WDI_DP_UtilsExit(&gWDICb);
1779 fail_dp_util_init:
1780 gWDICb.magic = 0;
1781 fail_bss_queue:
1782 /* entries 0 thru i-1 were successfully initialized */
1783 while (0 < i)
1784 {
1785 i--;
1786 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1787 }
1788 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1789 fail_assoc_queue:
1790 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1791 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001792 wpalTimerDelete(&gWDICb.ssrTimer);
1793 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 wpalTimerDelete(&gWDICb.wptResponseTimer);
1795 fail_timer:
1796 wpalMutexDelete(&gWDICb.wptMutex);
1797 fail_mutex:
1798 wpalClose(gWDICb.pPALContext);
1799 fail_wpalOpen:
1800 WDI_STATableClose(&gWDICb);
1801 fail_STATableInit:
1802 gWDIInitialized = eWLAN_PAL_FALSE;
1803
1804 return WDI_STATUS_E_FAILURE;
1805
1806}/*WDI_Init*/;
1807
1808/**
1809 @brief WDI_Start will be called when the upper MAC is ready to
1810 commence operation with the WLAN Device. Upon the call
1811 of this API the WLAN DAL will pack and send a HAL Start
1812 message to the lower RIVA sub-system if the SMD channel
1813 has been fully opened and the RIVA subsystem is up.
1814
1815 If the RIVA sub-system is not yet up and running DAL
1816 will queue the request for Open and will wait for the
1817 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001818 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001819
1820 WDI_Init must have been called.
1821
Jeff Johnsone7245742012-09-05 17:12:55 -07001822 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001824
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 wdiStartRspCb: callback for passing back the response of
1826 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001827
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 callback
1830
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 @see WDI_Start
1832 @return Result of the function call
1833*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001834WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001835WDI_Start
1836(
1837 WDI_StartReqParamsType* pwdiStartParams,
1838 WDI_StartRspCb wdiStartRspCb,
1839 void* pUserData
1840)
1841{
1842 WDI_EventInfoType wdiEventData;
1843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1844
1845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 ------------------------------------------------------------------------*/
1848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1849 {
1850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1851 "WDI API call before module is initialized - Fail request");
1852
Jeff Johnsone7245742012-09-05 17:12:55 -07001853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 }
1855
1856 /*------------------------------------------------------------------------
1857 Fill in Event data and post to the Main FSM
1858 ------------------------------------------------------------------------*/
1859 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001860 wdiEventData.pEventData = pwdiStartParams;
1861 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1862 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001863 wdiEventData.pUserData = pUserData;
1864
1865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1866
1867}/*WDI_Start*/
1868
1869/**
1870 @brief WDI_Stop will be called when the upper MAC is ready to
1871 stop any operation with the WLAN Device. Upon the call
1872 of this API the WLAN DAL will pack and send a HAL Stop
1873 message to the lower RIVA sub-system if the DAL Core is
1874 in started state.
1875
1876 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001877
1878 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001879
1880 WDI_Start must have been called.
1881
Jeff Johnsone7245742012-09-05 17:12:55 -07001882 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 wdiStopRspCb: callback for passing back the response of
1886 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 callback
1890
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 @see WDI_Start
1892 @return Result of the function call
1893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001895WDI_Stop
1896(
1897 WDI_StopReqParamsType* pwdiStopParams,
1898 WDI_StopRspCb wdiStopRspCb,
1899 void* pUserData
1900)
1901{
1902 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001903 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1905
1906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 ------------------------------------------------------------------------*/
1909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1910 {
1911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1912 "WDI API call before module is initialized - Fail request");
1913
Jeff Johnsone7245742012-09-05 17:12:55 -07001914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 }
1916
Jeff Johnson43971f52012-07-17 12:26:56 -07001917 /*Access to the global state must be locked before cleaning */
1918 wpalMutexAcquire(&pWDICtx->wptMutex);
1919
1920 /*Clear all pending request*/
1921 WDI_ClearPendingRequests(pWDICtx);
1922
1923 /*We have completed cleaning unlock now*/
1924 wpalMutexRelease(&pWDICtx->wptMutex);
1925
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 /* Free the global variables */
1927 wpalMemoryFree(gpHostWlanFeatCaps);
1928 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001929 gpHostWlanFeatCaps = NULL;
1930 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001931
1932 /*------------------------------------------------------------------------
1933 Fill in Event data and post to the Main FSM
1934 ------------------------------------------------------------------------*/
1935 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001936 wdiEventData.pEventData = pwdiStopParams;
1937 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1938 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001939 wdiEventData.pUserData = pUserData;
1940
1941 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1942
1943}/*WDI_Stop*/
1944
1945
1946
1947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001948 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 needs to interact with DAL. DAL will free its control
1950 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001951
1952 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001953
1954 WDI_Stop must have been called.
1955
1956 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001957
Jeff Johnson295189b2012-06-20 16:38:30 -07001958 @see WDI_Stop
1959 @return Result of the function call
1960*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001961WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001962WDI_Close
1963(
1964 void
1965)
1966{
1967 wpt_uint8 i;
1968 WDI_EventInfoType wdiEventData;
1969 wpt_status wptStatus;
1970 wpt_status eventStatus;
1971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1972
1973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 ------------------------------------------------------------------------*/
1976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1977 {
1978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1979 "WDI API call before module is initialized - Fail request");
1980
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 }
1983
1984 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1985 (the control transport will be closed by the FSM and we'll want
1986 to wait until that completes)*/
1987 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001988 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 {
1990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001991 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 /* fall through and try to finish closing via the FSM */
1993 }
1994
1995 /*------------------------------------------------------------------------
1996 Fill in Event data and post to the Main FSM
1997 ------------------------------------------------------------------------*/
1998 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 wdiEventData.pEventData = NULL;
2000 wdiEventData.uEventDataSize = 0;
2001 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 wdiEventData.pUserData = NULL;
2003
2004 gWDIInitialized = eWLAN_PAL_FALSE;
2005
2006 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2007
2008 /*Wait for WCTS to close the control transport
2009 (but only if we were able to reset the event flag*/
2010 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2011 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002012 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002013 WDI_WCTS_ACTION_TIMEOUT);
2014 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2015 {
2016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002017 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 }
2019 }
2020
2021 /* Destroy the WCTS action event */
2022 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2023 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2024 {
2025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2026 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 }
2029
2030 /* Destroy the Set Power State event */
2031 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2032 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2033 {
2034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2035 "WDI Close failed to destroy an event");
2036
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 }
2039
2040 /*------------------------------------------------------------------------
2041 Closes the Data Path Utility Module
2042 ------------------------------------------------------------------------*/
2043 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2044 {
2045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2046 "WDI Init failed to close the DP Util Module");
2047
Jeff Johnsone7245742012-09-05 17:12:55 -07002048 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002049 }
2050
2051 /*destroy the BSS sessions pending Queue */
2052 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2053 {
2054 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2055 }
2056
2057 /* destroy the WDI Pending Assoc Id Request Queue*/
2058 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2059
2060 /* destroy the WDI Pending Request Queue*/
2061 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 /*destroy the response timer */
2064 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2065
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002066 /*destroy the SSR timer */
2067 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2068
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 /*invalidate the main synchro mutex */
2070 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2071 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2072 {
2073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2074 "Failed to delete mutex %d", wptStatus);
2075 WDI_ASSERT(0);
2076 }
2077
2078 /*Clear control block. note that this will clear the "magic"
2079 which will inhibit all asynchronous callbacks*/
2080 WDI_CleanCB(&gWDICb);
2081
2082 return wptStatus;
2083
2084}/*WDI_Close*/
2085
2086/**
2087 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2088 This will do most of the WDI stop & close
2089 operations without doing any handshake with Riva
2090
2091 This will also make sure that the control transport
2092 will NOT be closed.
2093
2094 This request will not be queued.
2095
2096
2097 WDI_Start must have been called.
2098
2099 @param closeTransport: Close control channel if this is set
2100
2101 @return Result of the function call
2102*/
2103WDI_Status
2104WDI_Shutdown
2105(
2106 wpt_boolean closeTransport
2107)
2108{
2109 WDI_EventInfoType wdiEventData;
2110 wpt_status wptStatus;
2111 int i = 0;
2112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2113
2114 /*------------------------------------------------------------------------
2115 Sanity Check
2116 ------------------------------------------------------------------------*/
2117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2118 {
2119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2120 "WDI API call before module is initialized - Fail request");
2121
2122 return WDI_STATUS_E_NOT_ALLOWED;
2123 }
2124
2125 /*------------------------------------------------------------------------
2126 Fill in Event data and post to the Main FSM
2127 ------------------------------------------------------------------------*/
2128 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2129 wdiEventData.pEventData = NULL;
2130 wdiEventData.uEventDataSize = 0;
2131
2132 /* Shutdown will not be queued, if the state is busy timer will be
2133 * stopped & this message will be processed.*/
2134 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2135 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2136 {
2137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002138 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 }
2140 /* Destroy the Set Power State event */
2141 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2142 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2143 {
2144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2145 "WDI Close failed to destroy an event");
2146
2147 WDI_ASSERT(0);
2148 }
2149 /*------------------------------------------------------------------------
2150 Closes the Data Path Utility Module
2151 ------------------------------------------------------------------------*/
2152 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2153 {
2154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2155 "WDI Init failed to close the DP Util Module");
2156
2157 WDI_ASSERT(0);
2158 }
2159 if ( closeTransport )
2160 {
2161 /* Close control transport, called from module unload */
2162 WCTS_CloseTransport(gWDICb.wctsHandle);
2163 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002164 else
2165 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002166 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002167 the pending messages in the transport queue */
2168 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2169 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 /*destroy the BSS sessions pending Queue */
2171 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2172 {
2173 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2174 }
2175
2176 /* destroy the WDI Pending Assoc Id Request Queue*/
2177 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2178 /* destroy the WDI Pending Request Queue*/
2179 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2180 /*destroy the response timer */
2181 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002182 /*destroy the SSR timer */
2183 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002184
2185 /*invalidate the main synchro mutex */
2186 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2187 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2188 {
2189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002190 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002191 WDI_ASSERT(0);
2192 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002193 /* Free the global variables */
2194 wpalMemoryFree(gpHostWlanFeatCaps);
2195 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002196 gpHostWlanFeatCaps = NULL;
2197 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 /*Clear control block. note that this will clear the "magic"
2199 which will inhibit all asynchronous callbacks*/
2200 WDI_CleanCB(&gWDICb);
2201 return wptStatus;
2202
2203}/*WDI_Shutdown*/
2204
2205
Jeff Johnsone7245742012-09-05 17:12:55 -07002206/*========================================================================
2207
Jeff Johnson295189b2012-06-20 16:38:30 -07002208 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002209
Jeff Johnson295189b2012-06-20 16:38:30 -07002210==========================================================================*/
2211
2212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 the WLAN Device to get ready for a scan procedure. Upon
2215 the call of this API the WLAN DAL will pack and send a
2216 HAL Init Scan request message to the lower RIVA
2217 sub-system if DAL is in state STARTED.
2218
2219 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002220 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002221
2222 WDI_Start must have been called.
2223
2224 @param wdiInitScanParams: the init scan parameters as specified
2225 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 wdiInitScanRspCb: callback for passing back the response
2228 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002231 callback
2232
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 @see WDI_Start
2234 @return Result of the function call
2235*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002236WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002237WDI_InitScanReq
2238(
2239 WDI_InitScanReqParamsType* pwdiInitScanParams,
2240 WDI_InitScanRspCb wdiInitScanRspCb,
2241 void* pUserData
2242)
2243{
2244 WDI_EventInfoType wdiEventData;
2245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2246
2247 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 ------------------------------------------------------------------------*/
2250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2251 {
2252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2253 "WDI API call before module is initialized - Fail request");
2254
Jeff Johnsone7245742012-09-05 17:12:55 -07002255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 }
2257
2258 /*------------------------------------------------------------------------
2259 Fill in Event data and post to the Main FSM
2260 ------------------------------------------------------------------------*/
2261 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 wdiEventData.pEventData = pwdiInitScanParams;
2263 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2264 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 wdiEventData.pUserData = pUserData;
2266
2267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2268
2269}/*WDI_InitScanReq*/
2270
2271/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 wishes to change the Scan channel on the WLAN Device.
2274 Upon the call of this API the WLAN DAL will pack and
2275 send a HAL Start Scan request message to the lower RIVA
2276 sub-system if DAL is in state STARTED.
2277
2278 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002279 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002280
2281 WDI_InitScanReq must have been called.
2282
Jeff Johnsone7245742012-09-05 17:12:55 -07002283 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 wdiStartScanRspCb: callback for passing back the
2287 response of the start scan operation received from the
2288 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 callback
2292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 @see WDI_InitScanReq
2294 @return Result of the function call
2295*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002296WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002297WDI_StartScanReq
2298(
2299 WDI_StartScanReqParamsType* pwdiStartScanParams,
2300 WDI_StartScanRspCb wdiStartScanRspCb,
2301 void* pUserData
2302)
2303{
2304 WDI_EventInfoType wdiEventData;
2305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2306
2307 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 ------------------------------------------------------------------------*/
2310 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2311 {
2312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2313 "WDI API call before module is initialized - Fail request");
2314
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 }
2317
2318 /*------------------------------------------------------------------------
2319 Fill in Event data and post to the Main FSM
2320 ------------------------------------------------------------------------*/
2321 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 wdiEventData.pEventData = pwdiStartScanParams;
2323 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2324 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002325 wdiEventData.pUserData = pUserData;
2326
2327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2328
2329}/*WDI_StartScanReq*/
2330
2331
2332/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002333 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002334 wants to end scanning for a particular channel that it
2335 had set before by calling Scan Start on the WLAN Device.
2336 Upon the call of this API the WLAN DAL will pack and
2337 send a HAL End Scan request message to the lower RIVA
2338 sub-system if DAL is in state STARTED.
2339
2340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002342
2343 WDI_StartScanReq must have been called.
2344
Jeff Johnsone7245742012-09-05 17:12:55 -07002345 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002347
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 wdiEndScanRspCb: callback for passing back the response
2349 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002350
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002352 callback
2353
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 @see WDI_StartScanReq
2355 @return Result of the function call
2356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002358WDI_EndScanReq
2359(
2360 WDI_EndScanReqParamsType* pwdiEndScanParams,
2361 WDI_EndScanRspCb wdiEndScanRspCb,
2362 void* pUserData
2363)
2364{
2365 WDI_EventInfoType wdiEventData;
2366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2367
2368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 ------------------------------------------------------------------------*/
2371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2372 {
2373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2374 "WDI API call before module is initialized - Fail request");
2375
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 }
2378
2379 /*------------------------------------------------------------------------
2380 Fill in Event data and post to the Main FSM
2381 ------------------------------------------------------------------------*/
2382 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 wdiEventData.pEventData = pwdiEndScanParams;
2384 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2385 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 wdiEventData.pUserData = pUserData;
2387
2388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2389
2390}/*WDI_EndScanReq*/
2391
2392
2393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 completed the scan process on the WLAN Device. Upon the
2396 call of this API the WLAN DAL will pack and send a HAL
2397 Finish Scan Request request message to the lower RIVA
2398 sub-system if 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_InitScanReq must have been called.
2404
Jeff Johnsone7245742012-09-05 17:12:55 -07002405 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002407
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 wdiFinishScanRspCb: callback for passing back the
2409 response of the finish scan operation received from the
2410 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 callback
2414
Jeff Johnson295189b2012-06-20 16:38:30 -07002415 @see WDI_InitScanReq
2416 @return Result of the function call
2417*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002418WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002419WDI_FinishScanReq
2420(
2421 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2422 WDI_FinishScanRspCb wdiFinishScanRspCb,
2423 void* pUserData
2424)
2425{
2426 WDI_EventInfoType wdiEventData;
2427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2428
2429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002431 ------------------------------------------------------------------------*/
2432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2433 {
2434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2435 "WDI API call before module is initialized - Fail request");
2436
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 }
2439
2440 /*------------------------------------------------------------------------
2441 Fill in Event data and post to the Main FSM
2442 ------------------------------------------------------------------------*/
2443 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 wdiEventData.pEventData = pwdiFinishScanParams;
2445 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2446 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002447 wdiEventData.pUserData = pUserData;
2448
2449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2450
2451}/*WDI_FinishScanReq*/
2452
Jeff Johnsone7245742012-09-05 17:12:55 -07002453/*========================================================================
2454
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002456
Jeff Johnson295189b2012-06-20 16:38:30 -07002457==========================================================================*/
2458
2459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002460 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 to start an association procedure to a BSS. Upon the
2462 call of this API the WLAN DAL will pack and send a HAL
2463 Join request message to the lower RIVA sub-system if
2464 DAL is in state STARTED.
2465
2466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002468
2469 WDI_Start must have been called.
2470
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002473
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 wdiJoinRspCb: callback for passing back the response of
2475 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002476
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 callback
2479
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 @see WDI_Start
2481 @return Result of the function call
2482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002484WDI_JoinReq
2485(
2486 WDI_JoinReqParamsType* pwdiJoinParams,
2487 WDI_JoinRspCb wdiJoinRspCb,
2488 void* pUserData
2489)
2490{
2491 WDI_EventInfoType wdiEventData;
2492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2493
2494 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 ------------------------------------------------------------------------*/
2497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2498 {
2499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2500 "WDI API call before module is initialized - Fail request");
2501
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 }
2504
2505 /*------------------------------------------------------------------------
2506 Fill in Event data and post to the Main FSM
2507 ------------------------------------------------------------------------*/
2508 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 wdiEventData.pEventData = pwdiJoinParams;
2510 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2511 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 wdiEventData.pUserData = pUserData;
2513
2514 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2515
2516}/*WDI_JoinReq*/
2517
2518/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 wishes to configure the newly acquired or in process of
2521 being acquired BSS to the HW . Upon the call of this API
2522 the WLAN DAL will pack and send a HAL Config BSS request
2523 message to the lower RIVA sub-system if DAL is in state
2524 STARTED.
2525
2526 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002527 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002528
2529 WDI_JoinReq must have been called.
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002533
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 wdiConfigBSSRspCb: callback for passing back the
2535 response of the config BSS operation received from the
2536 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 callback
2540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 @see WDI_JoinReq
2542 @return Result of the function call
2543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002545WDI_ConfigBSSReq
2546(
2547 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2548 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2549 void* pUserData
2550)
2551{
2552 WDI_EventInfoType wdiEventData;
2553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2554
2555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 ------------------------------------------------------------------------*/
2558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2559 {
2560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2561 "WDI API call before module is initialized - Fail request");
2562
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 }
2565
2566 /*------------------------------------------------------------------------
2567 Fill in Event data and post to the Main FSM
2568 ------------------------------------------------------------------------*/
2569 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 wdiEventData.pEventData = pwdiConfigBSSParams;
2571 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2572 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wdiEventData.pUserData = pUserData;
2574
2575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2576
2577}/*WDI_ConfigBSSReq*/
2578
2579/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 disassociating from the BSS and wishes to notify HW.
2582 Upon the call of this API the WLAN DAL will pack and
2583 send a HAL Del BSS request message to the lower RIVA
2584 sub-system if DAL is in state STARTED.
2585
2586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002588
2589 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2590
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiDelBSSRspCb: callback for passing back the response
2595 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002596
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 callback
2599
2600 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @return Result of the function call
2602*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002603WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002604WDI_DelBSSReq
2605(
2606 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2607 WDI_DelBSSRspCb wdiDelBSSRspCb,
2608 void* pUserData
2609)
2610{
2611 WDI_EventInfoType wdiEventData;
2612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2613
2614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 ------------------------------------------------------------------------*/
2617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2618 {
2619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2620 "WDI API call before module is initialized - Fail request");
2621
Jeff Johnsone7245742012-09-05 17:12:55 -07002622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 }
2624
2625 /*------------------------------------------------------------------------
2626 Fill in Event data and post to the Main FSM
2627 ------------------------------------------------------------------------*/
2628 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 wdiEventData.pEventData = pwdiDelBSSParams;
2630 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2631 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002632 wdiEventData.pUserData = pUserData;
2633
2634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2635
2636}/*WDI_DelBSSReq*/
2637
2638/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002639 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002640 associated to a BSS and wishes to configure HW for
2641 associated state. Upon the call of this API the WLAN DAL
2642 will pack and send a HAL Post Assoc request message to
2643 the lower RIVA sub-system if DAL is in state STARTED.
2644
2645 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002646 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002647
2648 WDI_JoinReq must have been called.
2649
2650 @param wdiPostAssocReqParams: the assoc parameters as specified
2651 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002652
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 wdiPostAssocRspCb: callback for passing back the
2654 response of the post assoc operation received from the
2655 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 callback
2659
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 @see WDI_JoinReq
2661 @return Result of the function call
2662*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002663WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002664WDI_PostAssocReq
2665(
2666 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2667 WDI_PostAssocRspCb wdiPostAssocRspCb,
2668 void* pUserData
2669)
2670{
2671 WDI_EventInfoType wdiEventData;
2672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2673
2674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 ------------------------------------------------------------------------*/
2677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2678 {
2679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2680 "WDI API call before module is initialized - Fail request");
2681
Jeff Johnsone7245742012-09-05 17:12:55 -07002682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 }
2684
2685 /*------------------------------------------------------------------------
2686 Fill in Event data and post to the Main FSM
2687 ------------------------------------------------------------------------*/
2688 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 wdiEventData.pEventData = pwdiPostAssocReqParams;
2690 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2691 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 wdiEventData.pUserData = pUserData;
2693
2694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2695
2696}/*WDI_PostAssocReq*/
2697
2698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 association with another STA has ended and the station
2701 must be deleted from HW. Upon the call of this API the
2702 WLAN DAL will pack and send a HAL Del STA request
2703 message to the lower RIVA sub-system if DAL is in state
2704 STARTED.
2705
2706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002708
2709 WDI_PostAssocReq must have been called.
2710
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002713
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 wdiDelSTARspCb: callback for passing back the response
2715 of the del STA operation received from the 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_DelSTAReq
2725(
2726 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2727 WDI_DelSTARspCb wdiDelSTARspCb,
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_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 wdiEventData.pEventData = pwdiDelSTAParams;
2750 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2751 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002752 wdiEventData.pUserData = pUserData;
2753
2754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2755
2756}/*WDI_DelSTAReq*/
2757
Jeff Johnsone7245742012-09-05 17:12:55 -07002758/*========================================================================
2759
Jeff Johnson295189b2012-06-20 16:38:30 -07002760 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762==========================================================================*/
2763
2764/**
2765 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2766 install a BSS encryption key on the HW. Upon the call of this
2767 API the WLAN DAL will pack and send a Set BSS Key request
2768 message to the lower RIVA sub-system if DAL is in state
2769 STARTED.
2770
2771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002773
2774 WDI_PostAssocReq must have been called.
2775
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002777 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002778
Jeff Johnson295189b2012-06-20 16:38:30 -07002779 wdiSetBSSKeyRspCb: callback for passing back the
2780 response of the set BSS Key operation received from the
2781 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002782
Jeff Johnson295189b2012-06-20 16:38:30 -07002783 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002784 callback
2785
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 @see WDI_PostAssocReq
2787 @return Result of the function call
2788*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002789WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002790WDI_SetBSSKeyReq
2791(
2792 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2793 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2794 void* pUserData
2795)
2796{
2797 WDI_EventInfoType wdiEventData;
2798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2799
2800 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002801 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 ------------------------------------------------------------------------*/
2803 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2804 {
2805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2806 "WDI API call before module is initialized - Fail request");
2807
Jeff Johnsone7245742012-09-05 17:12:55 -07002808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 }
2810
2811 /*------------------------------------------------------------------------
2812 Fill in Event data and post to the Main FSM
2813 ------------------------------------------------------------------------*/
2814 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2816 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2817 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 wdiEventData.pUserData = pUserData;
2819
2820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2821
2822}/*WDI_SetBSSKeyReq*/
2823
2824/**
2825 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2826 uninstall a BSS key from HW. Upon the call of this API the
2827 WLAN DAL will pack and send a HAL Remove BSS Key request
2828 message to the lower RIVA sub-system if DAL is in state
2829 STARTED.
2830
2831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002833
2834 WDI_SetBSSKeyReq must have been called.
2835
Jeff Johnsone7245742012-09-05 17:12:55 -07002836 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002838
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 wdiRemoveBSSKeyRspCb: callback for passing back the
2840 response of the remove BSS key operation received from
2841 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 callback
2845
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 @see WDI_SetBSSKeyReq
2847 @return Result of the function call
2848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002850WDI_RemoveBSSKeyReq
2851(
2852 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2853 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2854 void* pUserData
2855)
2856{
2857 WDI_EventInfoType wdiEventData;
2858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2859
2860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 ------------------------------------------------------------------------*/
2863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2864 {
2865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2866 "WDI API call before module is initialized - Fail request");
2867
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002869 }
2870
2871 /*------------------------------------------------------------------------
2872 Fill in Event data and post to the Main FSM
2873 ------------------------------------------------------------------------*/
2874 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2876 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2877 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 wdiEventData.pUserData = pUserData;
2879
2880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2881
2882}/*WDI_RemoveBSSKeyReq*/
2883
2884
2885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 ready to install a STA(ast) encryption key in HW. Upon
2888 the call of this API the WLAN DAL will pack and send a
2889 HAL Set STA Key request message to the lower RIVA
2890 sub-system if DAL is in state STARTED.
2891
2892 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002894
2895 WDI_PostAssocReq must have been called.
2896
Jeff Johnsone7245742012-09-05 17:12:55 -07002897 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002898 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002899
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 wdiSetSTAKeyRspCb: callback for passing back the
2901 response of the set STA key operation received from the
2902 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002903
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 callback
2906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 @see WDI_PostAssocReq
2908 @return Result of the function call
2909*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002911WDI_SetSTAKeyReq
2912(
2913 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2914 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2915 void* pUserData
2916)
2917{
2918 WDI_EventInfoType wdiEventData;
2919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2920
2921 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 ------------------------------------------------------------------------*/
2924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2925 {
2926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2927 "WDI API call before module is initialized - Fail request");
2928
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 }
2931
2932 /*------------------------------------------------------------------------
2933 Fill in Event data and post to the Main FSM
2934 ------------------------------------------------------------------------*/
2935 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2937 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2938 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 wdiEventData.pUserData = pUserData;
2940
2941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2942
2943}/*WDI_SetSTAKeyReq*/
2944
2945
2946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 wants to uninstall a previously set STA key in HW. Upon
2949 the call of this API the WLAN DAL will pack and send a
2950 HAL Remove STA Key request message to the lower RIVA
2951 sub-system if DAL is in state STARTED.
2952
2953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002955
2956 WDI_SetSTAKeyReq must have been called.
2957
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002960
Jeff Johnson295189b2012-06-20 16:38:30 -07002961 wdiRemoveSTAKeyRspCb: callback for passing back the
2962 response of the remove STA key operation received from
2963 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002964
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 callback
2967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 @see WDI_SetSTAKeyReq
2969 @return Result of the function call
2970*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002971WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002972WDI_RemoveSTAKeyReq
2973(
2974 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2975 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2976 void* pUserData
2977)
2978{
2979 WDI_EventInfoType wdiEventData;
2980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2981
2982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 ------------------------------------------------------------------------*/
2985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2986 {
2987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2988 "WDI API call before module is initialized - Fail request");
2989
Jeff Johnsone7245742012-09-05 17:12:55 -07002990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002991 }
2992
2993 /*------------------------------------------------------------------------
2994 Fill in Event data and post to the Main FSM
2995 ------------------------------------------------------------------------*/
2996 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2998 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2999 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003000 wdiEventData.pUserData = pUserData;
3001
3002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3003
3004}/*WDI_RemoveSTAKeyReq*/
3005
3006
3007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003009 wants to install a STA Bcast encryption key on the HW.
3010 Upon the call of this API the WLAN DAL will pack and
3011 send a HAL Start request message to the lower RIVA
3012 sub-system if DAL is in state STARTED.
3013
3014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003016
3017 WDI_PostAssocReq must have been called.
3018
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022 wdiSetSTABcastKeyRspCb: callback for passing back the
3023 response of the set BSS Key operation received from the
3024 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 callback
3028
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 @see WDI_PostAssocReq
3030 @return Result of the function call
3031*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003033WDI_SetSTABcastKeyReq
3034(
3035 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3036 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3037 void* pUserData
3038)
3039
3040{
3041 WDI_EventInfoType wdiEventData;
3042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3043
3044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 ------------------------------------------------------------------------*/
3047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3048 {
3049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3050 "WDI API call before module is initialized - Fail request");
3051
Jeff Johnsone7245742012-09-05 17:12:55 -07003052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003053 }
3054
3055 /*------------------------------------------------------------------------
3056 Fill in Event data and post to the Main FSM
3057 ------------------------------------------------------------------------*/
3058 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003059 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3060 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3061 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 wdiEventData.pUserData = pUserData;
3063
3064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3065
3066}/*WDI_SetSTABcastKeyReq*/
3067
3068/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 MAC wants to uninstall a STA Bcast key from HW. Upon the
3071 call of this API the WLAN DAL will pack and send a HAL
3072 Remove STA Bcast Key request message to the lower RIVA
3073 sub-system if DAL is in state STARTED.
3074
3075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003077
3078 WDI_SetSTABcastKeyReq must have been called.
3079
Jeff Johnsone7245742012-09-05 17:12:55 -07003080 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003081 parameters as specified by the Device
3082 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003083
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3085 response of the remove STA Bcast key operation received
3086 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003087
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 callback
3090
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 @see WDI_SetSTABcastKeyReq
3092 @return Result of the function call
3093*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003095WDI_RemoveSTABcastKeyReq
3096(
3097 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3098 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3099 void* pUserData
3100)
3101{
3102 WDI_EventInfoType wdiEventData;
3103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3104
3105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 ------------------------------------------------------------------------*/
3108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3109 {
3110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3111 "WDI API call before module is initialized - Fail request");
3112
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 }
3115
3116 /*------------------------------------------------------------------------
3117 Fill in Event data and post to the Main FSM
3118 ------------------------------------------------------------------------*/
3119 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3121 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3122 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 wdiEventData.pUserData = pUserData;
3124
3125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3126
3127}/*WDI_RemoveSTABcastKeyReq*/
3128
3129/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003131 MAC wants to set Max Tx Power to HW. Upon the
3132 call of this API the WLAN DAL will pack and send a HAL
3133 Remove STA Bcast Key request message to the lower RIVA
3134 sub-system if DAL is in state STARTED.
3135
3136 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003137 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003138
3139 WDI_SetSTABcastKeyReq must have been called.
3140
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 parameters as specified by the Device
3143 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003144
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3146 response of the remove STA Bcast key operation received
3147 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003148
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003150 callback
3151
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 @see WDI_SetMaxTxPowerReq
3153 @return Result of the function call
3154*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003155WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003156WDI_SetMaxTxPowerReq
3157(
3158 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3159 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3160 void* pUserData
3161)
3162{
3163 WDI_EventInfoType wdiEventData;
3164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3165
3166 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003167 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 ------------------------------------------------------------------------*/
3169 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3170 {
3171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3172 "WDI API call before module is initialized - Fail request");
3173
Jeff Johnsone7245742012-09-05 17:12:55 -07003174 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003175 }
3176
3177 /*------------------------------------------------------------------------
3178 Fill in Event data and post to the Main FSM
3179 ------------------------------------------------------------------------*/
3180 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003181 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3182 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3183 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 wdiEventData.pUserData = pUserData;
3185
3186 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3187}
3188
schang86c22c42013-03-13 18:41:24 -07003189/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003190 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3191 MAC wants to set Max Tx Power to HW for specific band.
3192
3193 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3194
3195 wdiReqStatusCb: callback for passing back the
3196 response msg from the device
3197
3198 pUserData: user data will be passed back with the
3199 callback
3200
3201 @see WDI_SetMaxTxPowerPerBandReq
3202 @return Result of the function call
3203*/
3204WDI_Status
3205WDI_SetMaxTxPowerPerBandReq
3206(
3207 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3208 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3209 void* pUserData
3210)
3211{
3212 WDI_EventInfoType wdiEventData;
3213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3214
3215 /*------------------------------------------------------------------------
3216 Sanity Check
3217 ------------------------------------------------------------------------*/
3218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3219 {
3220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3221 "WDI API call before module is initialized - Fail request");
3222
3223 return WDI_STATUS_E_NOT_ALLOWED;
3224 }
3225
3226 /*------------------------------------------------------------------------
3227 Fill in Event data and post to the Main FSM
3228 ------------------------------------------------------------------------*/
3229 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3230 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3231 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3232 wdiEventData.pCBfnc = wdiReqStatusCb;
3233 wdiEventData.pUserData = pUserData;
3234
3235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3236}
3237
3238/**
schang86c22c42013-03-13 18:41:24 -07003239 @brief WDI_SetTxPowerReq will be called when the upper
3240 MAC wants to set Tx Power to HW.
3241 In state BUSY this request will be queued. Request won't
3242 be allowed in any other state.
3243
3244
3245 @param pwdiSetTxPowerParams: set TS Power parameters
3246 BSSID and target TX Power with dbm included
3247
3248 wdiReqStatusCb: callback for passing back the response
3249
3250 pUserData: user data will be passed back with the
3251 callback
3252
3253 @return Result of the function call
3254*/
3255WDI_Status
3256WDI_SetTxPowerReq
3257(
3258 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3259 WDA_SetTxPowerRspCb wdiReqStatusCb,
3260 void* pUserData
3261)
3262{
3263 WDI_EventInfoType wdiEventData;
3264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3265
3266 /*------------------------------------------------------------------------
3267 Sanity Check
3268 ------------------------------------------------------------------------*/
3269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3270 {
3271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3272 "WDI API call before module is initialized - Fail request");
3273
3274 return WDI_STATUS_E_NOT_ALLOWED;
3275 }
3276
3277 /*------------------------------------------------------------------------
3278 Fill in Event data and post to the Main FSM
3279 ------------------------------------------------------------------------*/
3280 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3281 wdiEventData.pEventData = pwdiSetTxPowerParams;
3282 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3283 wdiEventData.pCBfnc = wdiReqStatusCb;
3284 wdiEventData.pUserData = pUserData;
3285
3286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3287}
3288
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003289#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003290WDI_Status
3291WDI_TSMStatsReq
3292(
3293 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3294 WDI_TsmRspCb wdiReqStatusCb,
3295 void* pUserData
3296)
3297{
3298 WDI_EventInfoType wdiEventData;
3299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 /*------------------------------------------------------------------------
3301 Sanity Check
3302 ------------------------------------------------------------------------*/
3303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3304 {
3305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3306 "WDI API call before module is initialized - Fail request");
3307
3308 return WDI_STATUS_E_NOT_ALLOWED;
3309 }
3310
3311 /*------------------------------------------------------------------------
3312 Fill in Event data and post to the Main FSM
3313 ------------------------------------------------------------------------*/
3314 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3315 wdiEventData.pEventData = pwdiTsmReqParams;
3316 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3317 wdiEventData.pCBfnc = wdiReqStatusCb;
3318 wdiEventData.pUserData = pUserData;
3319
3320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3321
3322}
3323#endif
3324
3325/*========================================================================
3326
3327 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003328
Jeff Johnson295189b2012-06-20 16:38:30 -07003329==========================================================================*/
3330
3331/**
3332 @brief WDI_AddTSReq will be called when the upper MAC to inform
3333 the device of a successful add TSpec negotiation. HW
3334 needs to receive the TSpec Info from the UMAC in order
3335 to configure properly the QoS data traffic. Upon the
3336 call of this API the WLAN DAL will pack and send a HAL
3337 Add TS request message to the lower RIVA sub-system if
3338 DAL is in state STARTED.
3339
3340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003342
3343 WDI_PostAssocReq must have been called.
3344
3345 @param wdiAddTsReqParams: the add TS parameters as specified by
3346 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 wdiAddTsRspCb: callback for passing back the response of
3349 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003352 callback
3353
Jeff Johnson295189b2012-06-20 16:38:30 -07003354 @see WDI_PostAssocReq
3355 @return Result of the function call
3356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003358WDI_AddTSReq
3359(
3360 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3361 WDI_AddTsRspCb wdiAddTsRspCb,
3362 void* pUserData
3363)
3364{
3365 WDI_EventInfoType wdiEventData;
3366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3367
3368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 ------------------------------------------------------------------------*/
3371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3372 {
3373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3374 "WDI API call before module is initialized - Fail request");
3375
Jeff Johnsone7245742012-09-05 17:12:55 -07003376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 }
3378
3379 /*------------------------------------------------------------------------
3380 Fill in Event data and post to the Main FSM
3381 ------------------------------------------------------------------------*/
3382 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003383 wdiEventData.pEventData = pwdiAddTsReqParams;
3384 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3385 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003386 wdiEventData.pUserData = pUserData;
3387
3388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3389
3390}/*WDI_AddTSReq*/
3391
3392
3393
3394/**
3395 @brief WDI_DelTSReq will be called when the upper MAC has ended
3396 admission on a specific AC. This is to inform HW that
3397 QoS traffic parameters must be rest. Upon the call of
3398 this API the WLAN DAL will pack and send a HAL Del TS
3399 request message to the lower RIVA sub-system if DAL is
3400 in state STARTED.
3401
3402 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003404
3405 WDI_AddTSReq must have been called.
3406
3407 @param wdiDelTsReqParams: the del TS parameters as specified by
3408 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003409
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 wdiDelTsRspCb: callback for passing back the response of
3411 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 callback
3415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 @see WDI_AddTSReq
3417 @return Result of the function call
3418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003420WDI_DelTSReq
3421(
3422 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3423 WDI_DelTsRspCb wdiDelTsRspCb,
3424 void* pUserData
3425)
3426{
3427 WDI_EventInfoType wdiEventData;
3428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3429
3430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003432 ------------------------------------------------------------------------*/
3433 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3434 {
3435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3436 "WDI API call before module is initialized - Fail request");
3437
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003439 }
3440
3441 /*------------------------------------------------------------------------
3442 Fill in Event data and post to the Main FSM
3443 ------------------------------------------------------------------------*/
3444 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 wdiEventData.pEventData = pwdiDelTsReqParams;
3446 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3447 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003448 wdiEventData.pUserData = pUserData;
3449
3450 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3451
3452}/*WDI_DelTSReq*/
3453
3454
3455
3456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 wishes to update the EDCA parameters used by HW for QoS
3459 data traffic. Upon the call of this API the WLAN DAL
3460 will pack and send a HAL Update EDCA Params request
3461 message to the lower RIVA sub-system if DAL is in state
3462 STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
3467 WDI_PostAssocReq must have been called.
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 wdiUpdateEDCAParamsRspCb: callback for passing back the
3473 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 callback
3477
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 @see WDI_PostAssocReq
3479 @return Result of the function call
3480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003482WDI_UpdateEDCAParams
3483(
3484 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3485 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3486 void* pUserData
3487)
3488{
3489 WDI_EventInfoType wdiEventData;
3490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3491
3492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 ------------------------------------------------------------------------*/
3495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3496 {
3497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3498 "WDI API call before module is initialized - Fail request");
3499
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 }
3502
3503 /*------------------------------------------------------------------------
3504 Fill in Event data and post to the Main FSM
3505 ------------------------------------------------------------------------*/
3506 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3508 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3509 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 wdiEventData.pUserData = pUserData;
3511
3512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3513
3514}/*WDI_UpdateEDCAParams*/
3515
3516
3517/**
3518 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3519 successfully a BA session and needs to notify the HW for
3520 the appropriate settings to take place. Upon the call of
3521 this API the WLAN DAL will pack and send a HAL Add BA
3522 request message to the lower RIVA sub-system if DAL is
3523 in state STARTED.
3524
3525 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003527
3528 WDI_PostAssocReq must have been called.
3529
3530 @param wdiAddBAReqParams: the add BA parameters as specified by
3531 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 wdiAddBARspCb: callback for passing back the response of
3534 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003537 callback
3538
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 @see WDI_PostAssocReq
3540 @return Result of the function call
3541*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003543WDI_AddBASessionReq
3544(
3545 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3546 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3547 void* pUserData
3548)
3549{
3550 WDI_EventInfoType wdiEventData;
3551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3552
3553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 ------------------------------------------------------------------------*/
3556 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3557 {
3558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3559 "WDI API call before module is initialized - Fail request");
3560
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 }
3563
3564 /*------------------------------------------------------------------------
3565 Fill in Event data and post to the Main FSM
3566 ------------------------------------------------------------------------*/
3567 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3569 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3570 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003571 wdiEventData.pUserData = pUserData;
3572
3573 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3574
3575}/*WDI_AddBASessionReq*/
3576
3577/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 inform HW that it has deleted a previously created BA
3580 session. Upon the call of this API the WLAN DAL will
3581 pack and send a HAL Del BA request message to the lower
3582 RIVA sub-system if DAL is in state STARTED.
3583
3584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003586
3587 WDI_AddBAReq must have been called.
3588
3589 @param wdiDelBAReqParams: the del BA parameters as specified by
3590 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 wdiDelBARspCb: callback for passing back the response of
3593 the del BA operation received 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_AddBAReq
3599 @return Result of the function call
3600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003602WDI_DelBAReq
3603(
3604 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3605 WDI_DelBARspCb wdiDelBARspCb,
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_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 wdiEventData.pEventData = pwdiDelBAReqParams;
3628 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3629 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 wdiEventData.pUserData = pUserData;
3631
3632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3633
3634}/*WDI_DelBAReq*/
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636/*========================================================================
3637
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640==========================================================================*/
3641
3642/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003644 wants to set the power save related configurations of
3645 the WLAN Device. Upon the call of this API the WLAN DAL
3646 will pack and send a HAL Update CFG request message to
3647 the lower RIVA sub-system if DAL is in state STARTED.
3648
3649 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003650 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003651
3652 WDI_Start must have been called.
3653
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003656
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 wdiSetPwrSaveCfgCb: callback for passing back the
3658 response of the set power save cfg operation received
3659 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003660
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003662 callback
3663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 @return Result of the function call
3666*/
3667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003668WDI_SetPwrSaveCfgReq
3669(
3670 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3671 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3672 void* pUserData
3673)
3674{
3675 WDI_EventInfoType wdiEventData;
3676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3677
3678 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 ------------------------------------------------------------------------*/
3681 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3682 {
3683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3684 "WDI API call before module is initialized - Fail request");
3685
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 }
3688
3689 /*------------------------------------------------------------------------
3690 Fill in Event data and post to the Main FSM
3691 ------------------------------------------------------------------------*/
3692 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 wdiEventData.pEventData = pwdiPowerSaveCfg;
3694 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3695 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 wdiEventData.pUserData = pUserData;
3697
3698 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3699
3700}/*WDI_SetPwrSaveCfgReq*/
3701
3702/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003703 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 request the device to get into IMPS power state. Upon
3705 the call of this API the WLAN DAL will send a HAL Enter
3706 IMPS request message to the lower RIVA sub-system if DAL
3707 is in state STARTED.
3708
3709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003711
Jeff Johnsone7245742012-09-05 17:12:55 -07003712
3713 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 response of the Enter IMPS operation received from the
3715 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003718 callback
3719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 @see WDI_Start
3721 @return Result of the function call
3722*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003724WDI_EnterImpsReq
3725(
Mihir Shetea4306052014-03-25 00:02:54 +05303726 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3728 void* pUserData
3729)
3730{
3731 WDI_EventInfoType wdiEventData;
3732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3733
3734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 ------------------------------------------------------------------------*/
3737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3738 {
3739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3740 "WDI API call before module is initialized - Fail request");
3741
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 }
3744
3745 /*------------------------------------------------------------------------
3746 Fill in Event data and post to the Main FSM
3747 ------------------------------------------------------------------------*/
3748 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303749 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3750 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003752 wdiEventData.pUserData = pUserData;
3753
3754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3755
3756}/*WDI_EnterImpsReq*/
3757
3758/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 request the device to get out of IMPS power state. Upon
3761 the call of this API the WLAN DAL will send a HAL Exit
3762 IMPS request message to the lower RIVA sub-system if DAL
3763 is in state STARTED.
3764
3765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003767
Jeff Johnson295189b2012-06-20 16:38:30 -07003768
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
3770 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003774 callback
3775
Jeff Johnson295189b2012-06-20 16:38:30 -07003776 @see WDI_Start
3777 @return Result of the function call
3778*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003779WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003780WDI_ExitImpsReq
3781(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303782 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003783 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3784 void* pUserData
3785)
3786{
3787 WDI_EventInfoType wdiEventData;
3788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3789
3790 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003791 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 ------------------------------------------------------------------------*/
3793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3794 {
3795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3796 "WDI API call before module is initialized - Fail request");
3797
Jeff Johnsone7245742012-09-05 17:12:55 -07003798 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 }
3800
3801 /*------------------------------------------------------------------------
3802 Fill in Event data and post to the Main FSM
3803 ------------------------------------------------------------------------*/
3804 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303805 wdiEventData.pEventData = pwdiExitImpsReqParams;
3806 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 wdiEventData.pUserData = pUserData;
3809
3810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3811
3812}/*WDI_ExitImpsReq*/
3813
3814/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 request the device to get into BMPS power state. Upon
3817 the call of this API the WLAN DAL will pack and send a
3818 HAL Enter BMPS request message to the lower RIVA
3819 sub-system if DAL is in state STARTED.
3820
3821 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003823
3824 WDI_PostAssocReq must have been called.
3825
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 wdiEnterBmpsRspCb: callback for passing back the
3830 response of the Enter BMPS operation received from the
3831 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 callback
3835
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 @see WDI_PostAssocReq
3837 @return Result of the function call
3838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003840WDI_EnterBmpsReq
3841(
3842 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3843 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3844 void* pUserData
3845)
3846{
3847 WDI_EventInfoType wdiEventData;
3848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3849
3850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 ------------------------------------------------------------------------*/
3853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3854 {
3855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3856 "WDI API call before module is initialized - Fail request");
3857
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003859 }
3860
3861 /*------------------------------------------------------------------------
3862 Fill in Event data and post to the Main FSM
3863 ------------------------------------------------------------------------*/
3864 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3866 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3867 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 wdiEventData.pUserData = pUserData;
3869
3870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3871
3872}/*WDI_EnterBmpsReq*/
3873
3874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 request the device to get out of BMPS power state. Upon
3877 the call of this API the WLAN DAL will pack and send a
3878 HAL Exit BMPS request message to the lower RIVA
3879 sub-system if DAL is in state STARTED.
3880
3881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003883
3884 WDI_PostAssocReq must have been called.
3885
Jeff Johnsone7245742012-09-05 17:12:55 -07003886 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 wdiExitBmpsRspCb: callback for passing back the response
3890 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003891
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003893 callback
3894
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 @see WDI_PostAssocReq
3896 @return Result of the function call
3897*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003898WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003899WDI_ExitBmpsReq
3900(
3901 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3902 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3903 void* pUserData
3904)
3905{
3906 WDI_EventInfoType wdiEventData;
3907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3908
3909 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 ------------------------------------------------------------------------*/
3912 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3913 {
3914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3915 "WDI API call before module is initialized - Fail request");
3916
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 }
3919
3920 /*------------------------------------------------------------------------
3921 Fill in Event data and post to the Main FSM
3922 ------------------------------------------------------------------------*/
3923 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3925 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3926 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 wdiEventData.pUserData = pUserData;
3928
3929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3930
3931}/*WDI_ExitBmpsReq*/
3932
3933/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003934 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003935 request the device to get into UAPSD power state. Upon
3936 the call of this API the WLAN DAL will pack and send a
3937 HAL Enter UAPSD request message to the lower RIVA
3938 sub-system if DAL is in state STARTED.
3939
3940 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003941 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003942
3943 WDI_PostAssocReq must have been called.
3944 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
3946 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 wdiEnterUapsdRspCb: callback for passing back the
3950 response of the Enter UAPSD operation received from the
3951 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 callback
3955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3957 @return Result of the function call
3958*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003960WDI_EnterUapsdReq
3961(
3962 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3963 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3964 void* pUserData
3965)
3966{
3967 WDI_EventInfoType wdiEventData;
3968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3969
3970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 ------------------------------------------------------------------------*/
3973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3974 {
3975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3976 "WDI API call before module is initialized - Fail request");
3977
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003979 }
3980
3981 /*------------------------------------------------------------------------
3982 Fill in Event data and post to the Main FSM
3983 ------------------------------------------------------------------------*/
3984 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3986 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3987 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 wdiEventData.pUserData = pUserData;
3989
3990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3991
3992}/*WDI_EnterUapsdReq*/
3993
3994/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003995 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 request the device to get out of UAPSD power state. Upon
3997 the call of this API the WLAN DAL will send a HAL Exit
3998 UAPSD request message to the lower RIVA sub-system if
3999 DAL is in state STARTED.
4000
4001 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004003
4004 WDI_PostAssocReq must have been called.
4005
Jeff Johnsone7245742012-09-05 17:12:55 -07004006 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 response of the Exit UAPSD operation received from the
4008 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 callback
4012
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 @see WDI_PostAssocReq
4014 @return Result of the function call
4015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004017WDI_ExitUapsdReq
4018(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004019 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4021 void* pUserData
4022)
4023{
4024 WDI_EventInfoType wdiEventData;
4025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4026
4027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 ------------------------------------------------------------------------*/
4030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4031 {
4032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4033 "WDI API call before module is initialized - Fail request");
4034
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 }
4037
4038 /*------------------------------------------------------------------------
4039 Fill in Event data and post to the Main FSM
4040 ------------------------------------------------------------------------*/
4041 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004042 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4043 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wdiEventData.pUserData = pUserData;
4046
4047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4048
4049}/*WDI_ExitUapsdReq*/
4050
4051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 MAC wants to set the UAPSD related configurations
4054 of an associated STA (while acting as an AP) to the WLAN
4055 Device. Upon the call of this API the WLAN DAL will pack
4056 and send a HAL Update UAPSD params request message to
4057 the lower RIVA sub-system if DAL is in state STARTED.
4058
4059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004061
4062 WDI_ConfigBSSReq must have been called.
4063
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004066
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 wdiUpdateUapsdParamsCb: callback for passing back the
4068 response of the update UAPSD params operation received
4069 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004070
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004072 callback
4073
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 @see WDI_ConfigBSSReq
4075 @return Result of the function call
4076*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004077WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004078WDI_UpdateUapsdParamsReq
4079(
4080 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4081 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4082 void* pUserData
4083)
4084{
4085 WDI_EventInfoType wdiEventData;
4086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4087
4088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 ------------------------------------------------------------------------*/
4091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4092 {
4093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4094 "WDI API call before module is initialized - Fail request");
4095
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 }
4098
4099 /*------------------------------------------------------------------------
4100 Fill in Event data and post to the Main FSM
4101 ------------------------------------------------------------------------*/
4102 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004104 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 wdiEventData.pUserData = pUserData;
4107
4108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4109
4110}/*WDI_UpdateUapsdParamsReq*/
4111
4112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004113 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 MAC wants to set the UAPSD related configurations before
4115 requesting for enter UAPSD power state to the WLAN
4116 Device. Upon the call of this API the WLAN DAL will pack
4117 and send a HAL Set UAPSD params request message to
4118 the lower RIVA sub-system if DAL is in state STARTED.
4119
4120 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004122
4123 WDI_PostAssocReq must have been called.
4124
4125 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4126 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 wdiSetUapsdAcParamsCb: callback for passing back the
4129 response of the set UAPSD params operation received from
4130 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004133 callback
4134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 @see WDI_PostAssocReq
4136 @return Result of the function call
4137*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004139WDI_SetUapsdAcParamsReq
4140(
4141 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4142 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4143 void* pUserData
4144)
4145{
4146 WDI_EventInfoType wdiEventData;
4147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4148
4149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004151 ------------------------------------------------------------------------*/
4152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4153 {
4154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4155 "WDI API call before module is initialized - Fail request");
4156
Jeff Johnsone7245742012-09-05 17:12:55 -07004157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004158 }
4159
4160 /*------------------------------------------------------------------------
4161 Fill in Event data and post to the Main FSM
4162 ------------------------------------------------------------------------*/
4163 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 wdiEventData.pEventData = pwdiUapsdInfo;
4165 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4166 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004167 wdiEventData.pUserData = pUserData;
4168
4169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4170
4171}/*WDI_SetUapsdAcParamsReq*/
4172
4173/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 MAC wants to set/reset the RXP filters for received pkts
4176 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4177 and send a HAL configure RXP filter request message to
4178 the lower RIVA sub-system.
4179
4180 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004181 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004182
Jeff Johnsone7245742012-09-05 17:12:55 -07004183
4184 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 filter as specified by the Device
4186 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 wdiConfigureRxpFilterCb: callback for passing back the
4189 response of the configure RXP filter operation received
4190 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 callback
4194
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 @return Result of the function call
4196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004198WDI_ConfigureRxpFilterReq
4199(
4200 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4201 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4202 void* pUserData
4203)
4204{
4205 WDI_EventInfoType wdiEventData;
4206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4207
4208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 ------------------------------------------------------------------------*/
4211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4212 {
4213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4214 "WDI API call before module is initialized - Fail request");
4215
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 }
4218
4219 /*------------------------------------------------------------------------
4220 Fill in Event data and post to the Main FSM
4221 ------------------------------------------------------------------------*/
4222 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4224 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4225 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 wdiEventData.pUserData = pUserData;
4227
4228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4229}/*WDI_ConfigureRxpFilterReq*/
4230
4231/**
4232 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4233 wants to set the beacon filters while in power save.
4234 Upon the call of this API the WLAN DAL will pack and
4235 send a Beacon filter request message to the
4236 lower RIVA sub-system.
4237
4238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004240
Jeff Johnsone7245742012-09-05 17:12:55 -07004241
4242 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 filter as specified by the Device
4244 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004245
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 wdiBeaconFilterCb: callback for passing back the
4247 response of the set beacon filter operation received
4248 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004249
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 callback
4252
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 @return Result of the function call
4254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004256WDI_SetBeaconFilterReq
4257(
4258 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4259 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4260 void* pUserData
4261)
4262{
4263 WDI_EventInfoType wdiEventData;
4264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4265
4266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 ------------------------------------------------------------------------*/
4269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4270 {
4271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4272 "WDI API call before module is initialized - Fail request");
4273
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 }
4276
4277 /*------------------------------------------------------------------------
4278 Fill in Event data and post to the Main FSM
4279 ------------------------------------------------------------------------*/
4280 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004282 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wdiEventData.pUserData = pUserData;
4285
4286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4287}/*WDI_SetBeaconFilterReq*/
4288
4289/**
4290 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4291 wants to remove the beacon filter for particular IE
4292 while in power save. Upon the call of this API the WLAN
4293 DAL will pack and send a remove Beacon filter request
4294 message to the lower RIVA sub-system.
4295
4296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004298
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
4300 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 filter as specified by the Device
4302 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 wdiBeaconFilterCb: callback for passing back the
4305 response of the remove beacon filter operation received
4306 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004307
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004309 callback
4310
Jeff Johnson295189b2012-06-20 16:38:30 -07004311 @return Result of the function call
4312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004314WDI_RemBeaconFilterReq
4315(
4316 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4317 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4318 void* pUserData
4319)
4320{
4321 WDI_EventInfoType wdiEventData;
4322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4323
4324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 ------------------------------------------------------------------------*/
4327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4328 {
4329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4330 "WDI API call before module is initialized - Fail request");
4331
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004333 }
4334
4335 /*------------------------------------------------------------------------
4336 Fill in Event data and post to the Main FSM
4337 ------------------------------------------------------------------------*/
4338 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004339 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004340 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004341 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004342 wdiEventData.pUserData = pUserData;
4343
4344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4345}/*WDI_RemBeaconFilterReq*/
4346
4347/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 MAC wants to set the RSSI thresholds related
4350 configurations while in power save. Upon the call of
4351 this API the WLAN DAL will pack and send a HAL Set RSSI
4352 thresholds request message to the lower RIVA
4353 sub-system if DAL is in state STARTED.
4354
4355 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004357
4358 WDI_PostAssocReq must have been called.
4359
4360 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4361 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 wdiSetUapsdAcParamsCb: callback for passing back the
4364 response of the set UAPSD params operation received from
4365 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004368 callback
4369
Jeff Johnson295189b2012-06-20 16:38:30 -07004370 @see WDI_PostAssocReq
4371 @return Result of the function call
4372*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004373WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004374WDI_SetRSSIThresholdsReq
4375(
4376 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4377 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4378 void* pUserData
4379)
4380{
4381 WDI_EventInfoType wdiEventData;
4382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4383
4384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 ------------------------------------------------------------------------*/
4387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4388 {
4389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4390 "WDI API call before module is initialized - Fail request");
4391
Jeff Johnsone7245742012-09-05 17:12:55 -07004392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004393 }
4394
4395 /*------------------------------------------------------------------------
4396 Fill in Event data and post to the Main FSM
4397 ------------------------------------------------------------------------*/
4398 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004399 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004400 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 wdiEventData.pUserData = pUserData;
4403
4404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4405}/* WDI_SetRSSIThresholdsReq*/
4406
4407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004408 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 wants to set the filter to minimize unnecessary host
4410 wakeup due to broadcast traffic while in power save.
4411 Upon the call of this API the WLAN DAL will pack and
4412 send a HAL host offload request message to the
4413 lower RIVA sub-system if DAL is in state STARTED.
4414
4415 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004417
4418 WDI_PostAssocReq must have been called.
4419
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 wdiHostOffloadCb: callback for passing back the response
4424 of the host offload operation received from the
4425 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004428 callback
4429
Jeff Johnson295189b2012-06-20 16:38:30 -07004430 @see WDI_PostAssocReq
4431 @return Result of the function call
4432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004434WDI_HostOffloadReq
4435(
4436 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4437 WDI_HostOffloadCb wdiHostOffloadCb,
4438 void* pUserData
4439)
4440{
4441 WDI_EventInfoType wdiEventData;
4442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4443
4444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004446 ------------------------------------------------------------------------*/
4447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4448 {
4449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4450 "WDI API call before module is initialized - Fail request");
4451
Jeff Johnsone7245742012-09-05 17:12:55 -07004452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004453 }
4454
4455 /*------------------------------------------------------------------------
4456 Fill in Event data and post to the Main FSM
4457 ------------------------------------------------------------------------*/
4458 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004459 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004460 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 wdiEventData.pUserData = pUserData;
4463
4464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4465}/*WDI_HostOffloadReq*/
4466
4467/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 @brief WDI_KeepAliveReq will be called when the upper MAC
4469 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 and minimize unnecessary host wakeups due to while in power save.
4471 Upon the call of this API the WLAN DAL will pack and
4472 send a HAL Keep Alive request message to the
4473 lower RIVA sub-system if DAL is in state STARTED.
4474
4475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004477
4478 WDI_PostAssocReq must have been called.
4479
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004481 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004482
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 wdiKeepAliveCb: callback for passing back the response
4484 of the Keep Alive operation received from the
4485 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004488 callback
4489
Jeff Johnson295189b2012-06-20 16:38:30 -07004490 @see WDI_PostAssocReq
4491 @return Result of the function call
4492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004494WDI_KeepAliveReq
4495(
4496 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4497 WDI_KeepAliveCb wdiKeepAliveCb,
4498 void* pUserData
4499)
4500{
4501 WDI_EventInfoType wdiEventData;
4502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4503
4504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 ------------------------------------------------------------------------*/
4507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4508 {
4509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4510 "WDI_KeepAliveReq: WDI API call before module "
4511 "is initialized - Fail request");
4512
Jeff Johnsone7245742012-09-05 17:12:55 -07004513 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004514 }
4515
4516 /*------------------------------------------------------------------------
4517 Fill in Event data and post to the Main FSM
4518 ------------------------------------------------------------------------*/
4519 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 wdiEventData.pEventData = pwdiKeepAliveParams;
4521 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4522 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 wdiEventData.pUserData = pUserData;
4524
4525 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4526}/*WDI_KeepAliveReq*/
4527
4528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 wants to set the Wowl Bcast ptrn to minimize unnecessary
4531 host wakeup due to broadcast traffic while in power
4532 save. Upon the call of this API the WLAN DAL will pack
4533 and send a HAL Wowl Bcast ptrn request message to the
4534 lower RIVA sub-system if DAL is in state STARTED.
4535
4536 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004538
4539 WDI_PostAssocReq must have been called.
4540
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004542 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 wdiWowlAddBcPtrnCb: callback for passing back the
4545 response of the add Wowl bcast ptrn operation received
4546 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004547
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 callback
4550
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 @see WDI_PostAssocReq
4552 @return Result of the function call
4553*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004555WDI_WowlAddBcPtrnReq
4556(
4557 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4558 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4559 void* pUserData
4560)
4561{
4562 WDI_EventInfoType wdiEventData;
4563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4564
4565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 ------------------------------------------------------------------------*/
4568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4569 {
4570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4571 "WDI API call before module is initialized - Fail request");
4572
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 }
4575
4576 /*------------------------------------------------------------------------
4577 Fill in Event data and post to the Main FSM
4578 ------------------------------------------------------------------------*/
4579 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004581 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 wdiEventData.pUserData = pUserData;
4584
4585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4586}/*WDI_WowlAddBcPtrnReq*/
4587
4588/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 wants to clear the Wowl Bcast ptrn. Upon the call of
4591 this API the WLAN DAL will pack and send a HAL delete
4592 Wowl Bcast ptrn request message to the lower RIVA
4593 sub-system if DAL is in state STARTED.
4594
4595 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004597
4598 WDI_WowlAddBcPtrnReq must have been called.
4599
Jeff Johnsone7245742012-09-05 17:12:55 -07004600 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004601 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004602
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 wdiWowlDelBcPtrnCb: callback for passing back the
4604 response of the del Wowl bcast ptrn operation received
4605 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004606
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004608 callback
4609
Jeff Johnson295189b2012-06-20 16:38:30 -07004610 @see WDI_WowlAddBcPtrnReq
4611 @return Result of the function call
4612*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004614WDI_WowlDelBcPtrnReq
4615(
4616 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4617 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4618 void* pUserData
4619)
4620{
4621 WDI_EventInfoType wdiEventData;
4622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4623
4624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004626 ------------------------------------------------------------------------*/
4627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4628 {
4629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4630 "WDI API call before module is initialized - Fail request");
4631
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004633 }
4634
4635 /*------------------------------------------------------------------------
4636 Fill in Event data and post to the Main FSM
4637 ------------------------------------------------------------------------*/
4638 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004639 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004640 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004641 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 wdiEventData.pUserData = pUserData;
4643
4644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4645}/*WDI_WowlDelBcPtrnReq*/
4646
4647/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004648 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004649 wants to enter the Wowl state to minimize unnecessary
4650 host wakeup while in power save. Upon the call of this
4651 API the WLAN DAL will pack and send a HAL Wowl enter
4652 request message to the lower RIVA sub-system if DAL is
4653 in state STARTED.
4654
4655 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004657
4658 WDI_PostAssocReq must have been called.
4659
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004662
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 wdiWowlEnterReqCb: callback for passing back the
4664 response of the enter Wowl operation received from the
4665 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004666
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 callback
4669
Jeff Johnson295189b2012-06-20 16:38:30 -07004670 @see WDI_PostAssocReq
4671 @return Result of the function call
4672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004674WDI_WowlEnterReq
4675(
4676 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4677 WDI_WowlEnterReqCb wdiWowlEnterCb,
4678 void* pUserData
4679)
4680{
4681 WDI_EventInfoType wdiEventData;
4682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4683
4684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004686 ------------------------------------------------------------------------*/
4687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4688 {
4689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4690 "WDI API call before module is initialized - Fail request");
4691
Jeff Johnsone7245742012-09-05 17:12:55 -07004692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004693 }
4694
4695 /*------------------------------------------------------------------------
4696 Fill in Event data and post to the Main FSM
4697 ------------------------------------------------------------------------*/
4698 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004699 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004700 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004701 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004702 wdiEventData.pUserData = pUserData;
4703
4704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4705}/*WDI_WowlEnterReq*/
4706
4707/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004709 wants to exit the Wowl state. Upon the call of this API
4710 the WLAN DAL will pack and send a HAL Wowl exit request
4711 message to the lower RIVA sub-system if DAL is in state
4712 STARTED.
4713
4714 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004716
4717 WDI_WowlEnterReq must have been called.
4718
Jeff Johnsone7245742012-09-05 17:12:55 -07004719 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004720 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 wdiWowlExitReqCb: callback for passing back the response
4723 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004726 callback
4727
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 @see WDI_WowlEnterReq
4729 @return Result of the function call
4730*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004731WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004732WDI_WowlExitReq
4733(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004734 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 WDI_WowlExitReqCb wdiWowlExitCb,
4736 void* pUserData
4737)
4738{
4739 WDI_EventInfoType wdiEventData;
4740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4741
4742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004743 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004744 ------------------------------------------------------------------------*/
4745 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4746 {
4747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4748 "WDI API call before module is initialized - Fail request");
4749
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 }
4752
4753 /*------------------------------------------------------------------------
4754 Fill in Event data and post to the Main FSM
4755 ------------------------------------------------------------------------*/
4756 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004757 wdiEventData.pEventData = pwdiWowlExitParams;
4758 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004759 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 wdiEventData.pUserData = pUserData;
4761
4762 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4763}/*WDI_WowlExitReq*/
4764
4765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 the upper MAC wants to dynamically adjusts the listen
4768 interval based on the WLAN/MSM activity. Upon the call
4769 of this API the WLAN DAL will pack and send a HAL
4770 configure Apps Cpu Wakeup State request message to the
4771 lower RIVA sub-system.
4772
4773 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004774 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776
4777 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 Apps Cpu Wakeup State as specified by the
4779 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4782 back the response of the configure Apps Cpu Wakeup State
4783 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004784
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 callback
4787
Jeff Johnson295189b2012-06-20 16:38:30 -07004788 @return Result of the function call
4789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004791WDI_ConfigureAppsCpuWakeupStateReq
4792(
4793 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4794 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4795 void* pUserData
4796)
4797{
4798 WDI_EventInfoType wdiEventData;
4799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4800
4801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 ------------------------------------------------------------------------*/
4804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4805 {
4806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4807 "WDI API call before module is initialized - Fail request");
4808
Jeff Johnsone7245742012-09-05 17:12:55 -07004809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 }
4811
4812 /*------------------------------------------------------------------------
4813 Fill in Event data and post to the Main FSM
4814 ------------------------------------------------------------------------*/
4815 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4817 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4818 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 wdiEventData.pUserData = pUserData;
4820
4821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4822}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 to to perform a flush operation on a given AC. Upon the
4826 call of this API the WLAN DAL will pack and send a HAL
4827 Flush AC request message to the lower RIVA sub-system if
4828 DAL is in state STARTED.
4829
4830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004832
4833 WDI_AddBAReq must have been called.
4834
Jeff Johnsone7245742012-09-05 17:12:55 -07004835 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 wdiFlushAcRspCb: callback for passing back the response
4839 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 callback
4843
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 @see WDI_AddBAReq
4845 @return Result of the function call
4846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004848WDI_FlushAcReq
4849(
4850 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4851 WDI_FlushAcRspCb wdiFlushAcRspCb,
4852 void* pUserData
4853)
4854{
4855 WDI_EventInfoType wdiEventData;
4856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4857
4858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 ------------------------------------------------------------------------*/
4861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4862 {
4863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4864 "WDI API call before module is initialized - Fail request");
4865
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 }
4868
4869 /*------------------------------------------------------------------------
4870 Fill in Event data and post to the Main FSM
4871 ------------------------------------------------------------------------*/
4872 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 wdiEventData.pEventData = pwdiFlushAcReqParams;
4874 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4875 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004876 wdiEventData.pUserData = pUserData;
4877
4878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4879
4880}/*WDI_FlushAcReq*/
4881
4882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004883 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004884 wants to notify the lower mac on a BT AMP event. This is
4885 to inform BTC-SLM that some BT AMP event occurred. Upon
4886 the call of this API the WLAN DAL will pack and send a
4887 HAL BT AMP event request message to the lower RIVA
4888 sub-system if DAL is in state STARTED.
4889
4890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004892
Jeff Johnsone7245742012-09-05 17:12:55 -07004893
4894 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004896
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 wdiBtAmpEventRspCb: callback for passing back the
4898 response of the BT AMP event operation received from the
4899 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004900
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004902 callback
4903
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 @return Result of the function call
4905*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004907WDI_BtAmpEventReq
4908(
4909 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4910 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4911 void* pUserData
4912)
4913{
4914 WDI_EventInfoType wdiEventData;
4915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4916
4917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004919 ------------------------------------------------------------------------*/
4920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4921 {
4922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4923 "WDI API call before module is initialized - Fail request");
4924
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 }
4927
4928 /*------------------------------------------------------------------------
4929 Fill in Event data and post to the Main FSM
4930 ------------------------------------------------------------------------*/
4931 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4933 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4934 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004935 wdiEventData.pUserData = pUserData;
4936
4937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4938
4939}/*WDI_BtAmpEventReq*/
4940
Jeff Johnsone7245742012-09-05 17:12:55 -07004941#ifdef FEATURE_OEM_DATA_SUPPORT
4942/**
4943 @brief WDI_Start Oem Data Req will be called when the upper MAC
4944 wants to notify the lower mac on a oem data Req event.Upon
4945 the call of this API the WLAN DAL will pack and send a
4946 HAL OEM Data Req event request message to the lower RIVA
4947 sub-system if DAL is in state STARTED.
4948
4949 In state BUSY this request will be queued. Request won't
4950 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004951
4952
Jeff Johnsone7245742012-09-05 17:12:55 -07004953
4954 @param pwdiOemDataReqParams: the Oem Data Req as
4955 specified by the Device Interface
4956
4957 wdiStartOemDataRspCb: callback for passing back the
4958 response of the Oem Data Req received from the
4959 device
4960
4961 pUserData: user data will be passed back with the
4962 callback
4963
4964 @return Result of the function call
4965*/
4966WDI_Status
4967WDI_StartOemDataReq
4968(
4969 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4970 WDI_oemDataRspCb wdiOemDataRspCb,
4971 void* pUserData
4972)
4973{
4974 WDI_EventInfoType wdiEventData;
4975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4976
4977 /*------------------------------------------------------------------------
4978 Sanity Check
4979 ------------------------------------------------------------------------*/
4980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4981 {
4982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4983 "WDI API call before module is initialized - Fail request");
4984
4985 return WDI_STATUS_E_NOT_ALLOWED;
4986 }
4987
4988 /*------------------------------------------------------------------------
4989 Fill in Event data and post to the Main FSM
4990 ------------------------------------------------------------------------*/
4991 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4992 wdiEventData.pEventData = pwdiOemDataReqParams;
4993 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4994 wdiEventData.pCBfnc = wdiOemDataRspCb;
4995 wdiEventData.pUserData = pUserData;
4996
4997 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4998
4999
5000}
5001
5002#endif
5003
5004
5005/*========================================================================
5006
Jeff Johnson295189b2012-06-20 16:38:30 -07005007 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005008
Jeff Johnson295189b2012-06-20 16:38:30 -07005009==========================================================================*/
5010/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005012 the WLAN HW to change the current channel of operation.
5013 Upon the call of this API the WLAN DAL will pack and
5014 send a HAL Start request message to the lower RIVA
5015 sub-system if DAL is in state STARTED.
5016
5017 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005019
5020 WDI_Start must have been called.
5021
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005023 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005024
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 wdiSwitchChRspCb: callback for passing back the response
5026 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005029 callback
5030
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 @see WDI_Start
5032 @return Result of the function call
5033*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005034WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005035WDI_SwitchChReq
5036(
5037 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5038 WDI_SwitchChRspCb wdiSwitchChRspCb,
5039 void* pUserData
5040)
5041{
5042 WDI_EventInfoType wdiEventData;
5043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5044
5045 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 ------------------------------------------------------------------------*/
5048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5049 {
5050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5051 "WDI API call before module is initialized - Fail request");
5052
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 }
5055
5056 /*------------------------------------------------------------------------
5057 Fill in Event data and post to the Main FSM
5058 ------------------------------------------------------------------------*/
5059 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 wdiEventData.pEventData = pwdiSwitchChReqParams;
5061 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5062 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 wdiEventData.pUserData = pUserData;
5064
5065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5066
5067}/*WDI_SwitchChReq*/
5068
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005069/**
5070 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5071 the WLAN HW to change the current channel of operation.
5072 Upon the call of this API the WLAN DAL will pack and
5073 send a HAL Start request message to the lower RIVA
5074 sub-system if DAL is in state STARTED.
5075 This request message also includes source of channel switch,
5076 like CSA,
5077
5078 In state BUSY this request will be queued. Request won't
5079 be allowed in any other state.
5080
5081 WDI_Start must have been called.
5082
5083 @param wdiSwitchChReqParams: the switch ch parameters as
5084 specified by the Device Interface
5085
5086 wdiSwitchChRspCb: callback for passing back the response
5087 of the switch ch operation received from the device
5088
5089 pUserData: user data will be passed back with the
5090 callback
5091
5092 @see WDI_Start
5093 @return Result of the function call
5094*/
5095WDI_Status
5096WDI_SwitchChReq_V1
5097(
5098 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5099 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5100 void* pUserData
5101)
5102{
5103 WDI_EventInfoType wdiEventData;
5104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5106 "WDI API call WDI_SwitchChReq_V1");
5107 /*------------------------------------------------------------------------
5108 Sanity Check
5109 ------------------------------------------------------------------------*/
5110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5111 {
5112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5113 "WDI API call before module is initialized - Fail request");
5114
5115 return WDI_STATUS_E_NOT_ALLOWED;
5116 }
5117
5118 /*------------------------------------------------------------------------
5119 Fill in Event data and post to the Main FSM
5120 ------------------------------------------------------------------------*/
5121 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5122 wdiEventData.pEventData = pwdiSwitchChReqParams;
5123 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5124 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5125 wdiEventData.pUserData = pUserData;
5126
5127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5128
5129}/*WDI_SwitchChReq_V1*/
5130
Jeff Johnson295189b2012-06-20 16:38:30 -07005131
5132/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005133 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005134 wishes to add or update a STA in HW. Upon the call of
5135 this API the WLAN DAL will pack and send a HAL Start
5136 message request message to the lower RIVA sub-system if
5137 DAL is in state STARTED.
5138
5139 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005141
5142 WDI_Start must have been called.
5143
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005145 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 wdiConfigSTARspCb: callback for passing back the
5148 response of the config STA operation received from the
5149 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005150
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 callback
5153
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 @see WDI_Start
5155 @return Result of the function call
5156*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005157WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005158WDI_ConfigSTAReq
5159(
5160 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5161 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5162 void* pUserData
5163)
5164{
5165 WDI_EventInfoType wdiEventData;
5166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5167
5168 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005169 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005170 ------------------------------------------------------------------------*/
5171 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5172 {
5173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5174 "WDI API call before module is initialized - Fail request");
5175
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005177 }
5178
5179 /*------------------------------------------------------------------------
5180 Fill in Event data and post to the Main FSM
5181 ------------------------------------------------------------------------*/
5182 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005183 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5184 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5185 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005186 wdiEventData.pUserData = pUserData;
5187
5188 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5189
5190}/*WDI_ConfigSTAReq*/
5191
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005192 /**
5193 @brief WDI_UpdateChannelReq will be called when the upper MAC
5194 wants to update the channel list on change in country code.
5195
5196 In state BUSY this request will be queued. Request won't
5197 be allowed in any other state.
5198
5199 WDI_UpdateChannelReq must have been called.
5200
5201 @param wdiUpdateChannelReqParams: the updated channel parameters
5202 as specified by the Device Interface
5203
5204 wdiUpdateChannelRspCb: callback for passing back the
5205 response of the update channel operation received from
5206 the device
5207
5208 pUserData: user data will be passed back with the
5209 callback
5210
5211 @return Result of the function call
5212*/
5213WDI_Status
5214WDI_UpdateChannelReq
5215(
5216 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5217 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5218 void* pUserData
5219)
5220{
5221 WDI_EventInfoType wdiEventData = {{0}};
5222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5223
5224 /*------------------------------------------------------------------------
5225 Sanity Check
5226 ------------------------------------------------------------------------*/
5227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5228 {
5229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5230 "WDI API call before module is initialized - Fail request");
5231
5232 return WDI_STATUS_E_NOT_ALLOWED;
5233 }
5234
5235 /*------------------------------------------------------------------------
5236 Fill in Event data and post to the Main FSM
5237 ------------------------------------------------------------------------*/
5238 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5239 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5240 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5241 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5242 wdiEventData.pUserData = pUserData;
5243
5244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5245
5246}/*WDI_UpdateChannelReq*/
5247
Jeff Johnson295189b2012-06-20 16:38:30 -07005248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 wants to change the state of an ongoing link. Upon the
5251 call of this API the WLAN DAL will pack and send a HAL
5252 Start message request message to the lower RIVA
5253 sub-system if DAL is in state STARTED.
5254
5255 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005257
5258 WDI_JoinStartReq must have been called.
5259
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 wdiSetLinkStateRspCb: callback for passing back the
5264 response of the set link state operation received from
5265 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005268 callback
5269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 @see WDI_JoinStartReq
5271 @return Result of the function call
5272*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005273WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005274WDI_SetLinkStateReq
5275(
5276 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5277 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5278 void* pUserData
5279)
5280{
5281 WDI_EventInfoType wdiEventData;
5282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5283
5284 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 ------------------------------------------------------------------------*/
5287 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5288 {
5289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5290 "WDI API call before module is initialized - Fail request");
5291
Jeff Johnsone7245742012-09-05 17:12:55 -07005292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005293 }
5294
5295 /*------------------------------------------------------------------------
5296 Fill in Event data and post to the Main FSM
5297 ------------------------------------------------------------------------*/
5298 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005299 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5300 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5301 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005302 wdiEventData.pUserData = pUserData;
5303
5304 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5305
5306}/*WDI_SetLinkStateReq*/
5307
5308
5309/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005310 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005311 to get statistics (MIB counters) from the device. Upon
5312 the call of this API the WLAN DAL will pack and send a
5313 HAL Start request message to the lower RIVA sub-system
5314 if DAL is in state STARTED.
5315
5316 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005318
5319 WDI_Start must have been called.
5320
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiGetStatsRspCb: callback for passing back the response
5325 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 callback
5329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 @see WDI_Start
5331 @return Result of the function call
5332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005334WDI_GetStatsReq
5335(
5336 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5337 WDI_GetStatsRspCb wdiGetStatsRspCb,
5338 void* pUserData
5339)
5340{
5341 WDI_EventInfoType wdiEventData;
5342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5343
5344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 ------------------------------------------------------------------------*/
5347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5348 {
5349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5350 "WDI API call before module is initialized - Fail request");
5351
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 }
5354
5355 /*------------------------------------------------------------------------
5356 Fill in Event data and post to the Main FSM
5357 ------------------------------------------------------------------------*/
5358 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 wdiEventData.pEventData = pwdiGetStatsReqParams;
5360 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5361 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 wdiEventData.pUserData = pUserData;
5363
5364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5365
5366}/*WDI_GetStatsReq*/
5367
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005368#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005369/**
5370 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5371 to get roam rssi from the device. Upon
5372 the call of this API the WLAN DAL will pack and send a
5373 HAL Start request message to the lower RIVA sub-system
5374 if DAL is in state STARTED.
5375
5376 In state BUSY this request will be queued. Request won't
5377 be allowed in any other state.
5378
5379 WDI_Start must have been called.
5380
5381 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5382 specified by the Device Interface
5383
5384 wdiGetRoamRssiRspCb: callback for passing back the response
5385 of the get stats operation received from the device
5386
5387 pUserData: user data will be passed back with the
5388 callback
5389
5390 @see WDI_Start
5391 @return Result of the function call
5392*/
5393WDI_Status
5394WDI_GetRoamRssiReq
5395(
5396 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5397 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5398 void* pUserData
5399)
5400{
5401 WDI_EventInfoType wdiEventData;
5402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5403
5404 /*------------------------------------------------------------------------
5405 Sanity Check
5406 ------------------------------------------------------------------------*/
5407 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5408 {
5409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5410 "WDI API call before module is initialized - Fail request");
5411
5412 return WDI_STATUS_E_NOT_ALLOWED;
5413 }
5414 /*------------------------------------------------------------------------
5415 Fill in Event data and post to the Main FSM
5416 ------------------------------------------------------------------------*/
5417 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5418 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5419 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5420 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5421 wdiEventData.pUserData = pUserData;
5422
5423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5424
5425}/*WDI_GetRoamRssiReq*/
5426#endif
5427
Jeff Johnson295189b2012-06-20 16:38:30 -07005428
5429/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 it wishes to change the configuration of the WLAN
5432 Device. Upon the call of this API the WLAN DAL will pack
5433 and send a HAL Update CFG request message to the lower
5434 RIVA sub-system if DAL is in state STARTED.
5435
5436 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005438
5439 WDI_Start must have been called.
5440
Jeff Johnsone7245742012-09-05 17:12:55 -07005441 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005442 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005443
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 wdiUpdateCfgsRspCb: callback for passing back the
5445 response of the update cfg operation received from the
5446 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005447
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005449 callback
5450
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 @see WDI_Start
5452 @return Result of the function call
5453*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005454WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005455WDI_UpdateCfgReq
5456(
5457 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5458 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5459 void* pUserData
5460)
5461{
5462 WDI_EventInfoType wdiEventData;
5463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5464
5465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005467 ------------------------------------------------------------------------*/
5468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5469 {
5470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5471 "WDI API call before module is initialized - Fail request");
5472
Jeff Johnsone7245742012-09-05 17:12:55 -07005473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 }
5475
5476 /*------------------------------------------------------------------------
5477 Fill in Event data and post to the Main FSM
5478 ------------------------------------------------------------------------*/
5479 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005480 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5481 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5482 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 wdiEventData.pUserData = pUserData;
5484
5485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5486
5487}/*WDI_UpdateCfgReq*/
5488
5489
5490
5491/**
5492 @brief WDI_AddBAReq will be called when the upper MAC has setup
5493 successfully a BA session and needs to notify the HW for
5494 the appropriate settings to take place. Upon the call of
5495 this API the WLAN DAL will pack and send a HAL Add BA
5496 request message to the lower RIVA sub-system if DAL is
5497 in state STARTED.
5498
5499 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005501
5502 WDI_PostAssocReq must have been called.
5503
5504 @param wdiAddBAReqParams: the add BA parameters as specified by
5505 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 wdiAddBARspCb: callback for passing back the response of
5508 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005509
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005511 callback
5512
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 @see WDI_PostAssocReq
5514 @return Result of the function call
5515*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005516WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005517WDI_AddBAReq
5518(
5519 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5520 WDI_AddBARspCb wdiAddBARspCb,
5521 void* pUserData
5522)
5523{
5524 WDI_EventInfoType wdiEventData;
5525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5526
5527 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005529 ------------------------------------------------------------------------*/
5530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5531 {
5532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5533 "WDI API call before module is initialized - Fail request");
5534
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 }
5537
5538 /*------------------------------------------------------------------------
5539 Fill in Event data and post to the Main FSM
5540 ------------------------------------------------------------------------*/
5541 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 wdiEventData.pEventData = pwdiAddBAReqParams;
5543 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5544 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005545 wdiEventData.pUserData = pUserData;
5546
5547 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5548
5549}/*WDI_AddBAReq*/
5550
5551
5552/**
5553 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5554 successfully a BA session and needs to notify the HW for
5555 the appropriate settings to take place. Upon the call of
5556 this API the WLAN DAL will pack and send a HAL Add BA
5557 request message to the lower RIVA sub-system if DAL is
5558 in state STARTED.
5559
5560 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005562
5563 WDI_PostAssocReq must have been called.
5564
5565 @param wdiAddBAReqParams: the add BA parameters as specified by
5566 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 wdiAddBARspCb: callback for passing back the response of
5569 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005570
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 callback
5573
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 @see WDI_PostAssocReq
5575 @return Result of the function call
5576*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005577WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005578WDI_TriggerBAReq
5579(
5580 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5581 WDI_TriggerBARspCb wdiTriggerBARspCb,
5582 void* pUserData
5583)
5584{
5585 WDI_EventInfoType wdiEventData;
5586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5587
5588 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005589 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005590 ------------------------------------------------------------------------*/
5591 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5592 {
5593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5594 "WDI API call before module is initialized - Fail request");
5595
Jeff Johnsone7245742012-09-05 17:12:55 -07005596 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005597 }
5598
5599 /*------------------------------------------------------------------------
5600 Fill in Event data and post to the Main FSM
5601 ------------------------------------------------------------------------*/
5602 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5604 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5605 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 wdiEventData.pUserData = pUserData;
5607
5608 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5609
5610}/*WDI_AddBAReq*/
5611
5612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 wishes to update any of the Beacon parameters used by HW.
5615 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5616 message to the lower RIVA sub-system if DAL is in state
5617 STARTED.
5618
5619 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005621
5622 WDI_PostAssocReq must have been called.
5623
Jeff Johnsone7245742012-09-05 17:12:55 -07005624 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005626
Jeff Johnson295189b2012-06-20 16:38:30 -07005627 wdiUpdateBeaconParamsRspCb: callback for passing back the
5628 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005629
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005631 callback
5632
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 @see WDI_PostAssocReq
5634 @return Result of the function call
5635*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005637WDI_UpdateBeaconParamsReq
5638(
5639 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5640 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5641 void* pUserData
5642)
5643{
5644 WDI_EventInfoType wdiEventData;
5645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5646
5647 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005648 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005649 ------------------------------------------------------------------------*/
5650 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5651 {
5652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5653 "WDI API call before module is initialized - Fail request");
5654
Jeff Johnsone7245742012-09-05 17:12:55 -07005655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 }
5657
5658 /*------------------------------------------------------------------------
5659 Fill in Event data and post to the Main FSM
5660 ------------------------------------------------------------------------*/
5661 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005662 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5663 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5664 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005665 wdiEventData.pUserData = pUserData;
5666
5667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5668
5669}/*WDI_UpdateBeaconParamsReq*/
5670
5671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 wishes to update the Beacon template used by HW.
5674 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5675 message to the lower RIVA sub-system if DAL is in state
5676 STARTED.
5677
5678 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005679 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005680
5681 WDI_PostAssocReq must have been called.
5682
Jeff Johnsone7245742012-09-05 17:12:55 -07005683 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005684 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005685
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 wdiSendBeaconParamsRspCb: callback for passing back the
5687 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005688
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 callback
5691
Jeff Johnson295189b2012-06-20 16:38:30 -07005692 @see WDI_PostAssocReq
5693 @return Result of the function call
5694*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005695WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005696WDI_SendBeaconParamsReq
5697(
5698 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5699 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5700 void* pUserData
5701)
5702{
5703 WDI_EventInfoType wdiEventData;
5704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5705
5706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 ------------------------------------------------------------------------*/
5709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5710 {
5711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5712 "WDI API call before module is initialized - Fail request");
5713
Jeff Johnsone7245742012-09-05 17:12:55 -07005714 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 }
5716
5717 /*------------------------------------------------------------------------
5718 Fill in Event data and post to the Main FSM
5719 ------------------------------------------------------------------------*/
5720 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005721 wdiEventData.pEventData = pwdiSendBeaconParams;
5722 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5723 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 wdiEventData.pUserData = pUserData;
5725
5726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5727
5728}/*WDI_SendBeaconParamsReq*/
5729
5730/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005731 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005732 upper MAC wants to update the probe response template to
5733 be transmitted as Soft AP
5734 Upon the call of this API the WLAN DAL will
5735 pack and send the probe rsp template message to the
5736 lower RIVA sub-system if DAL is in state STARTED.
5737
5738 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005740
5741
Jeff Johnsone7245742012-09-05 17:12:55 -07005742 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005743 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005744
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 wdiSendBeaconParamsRspCb: callback for passing back the
5746 response of the Send Beacon Params operation received
5747 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005750 callback
5751
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 @see WDI_AddBAReq
5753 @return Result of the function call
5754*/
5755
Jeff Johnsone7245742012-09-05 17:12:55 -07005756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005757WDI_UpdateProbeRspTemplateReq
5758(
5759 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5760 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5761 void* pUserData
5762)
5763{
5764 WDI_EventInfoType wdiEventData;
5765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5766
5767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 ------------------------------------------------------------------------*/
5770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5771 {
5772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5773 "WDI API call before module is initialized - Fail request");
5774
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 }
5777
5778 /*------------------------------------------------------------------------
5779 Fill in Event data and post to the Main FSM
5780 ------------------------------------------------------------------------*/
5781 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5783 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5784 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiEventData.pUserData = pUserData;
5786
5787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5788
5789}/*WDI_UpdateProbeRspTemplateReq*/
5790
5791/**
5792 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5793 to the NV memory.
5794
5795
5796 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5797 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005798
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 wdiNvDownloadRspCb: callback for passing back the response of
5800 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005801
Jeff Johnson295189b2012-06-20 16:38:30 -07005802 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 callback
5804
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 @see WDI_PostAssocReq
5806 @return Result of the function call
5807*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005808WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005809WDI_NvDownloadReq
5810(
5811 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5812 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5813 void* pUserData
5814)
5815{
5816 WDI_EventInfoType wdiEventData;
5817
5818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 ------------------------------------------------------------------------*/
5821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5822 {
5823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5824 "WDI API call before module is initialized - Fail request");
5825
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 }
5828
5829 /*------------------------------------------------------------------------
5830 Fill in Event data and post to the Main FSM
5831 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005832 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5833 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5834 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5835 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 wdiEventData.pUserData = pUserData;
5837
5838 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5839
5840}/*WDI_NVDownloadReq*/
5841
Jeff Johnson295189b2012-06-20 16:38:30 -07005842/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005843 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 upper MAC wants to send Notice of Absence
5845 Upon the call of this API the WLAN DAL will
5846 pack and send the probe rsp template message to the
5847 lower RIVA sub-system if DAL is in state STARTED.
5848
5849 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005851
5852
Jeff Johnsone7245742012-09-05 17:12:55 -07005853 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005854 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005855
Jeff Johnson295189b2012-06-20 16:38:30 -07005856 wdiSendBeaconParamsRspCb: callback for passing back the
5857 response of the Send Beacon Params operation received
5858 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005859
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 callback
5862
Jeff Johnson295189b2012-06-20 16:38:30 -07005863 @see WDI_AddBAReq
5864 @return Result of the function call
5865*/
5866WDI_Status
5867WDI_SetP2PGONOAReq
5868(
5869 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5870 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5871 void* pUserData
5872)
5873{
5874 WDI_EventInfoType wdiEventData;
5875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5876
5877 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 ------------------------------------------------------------------------*/
5880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5881 {
5882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5883 "WDI API call before module is initialized - Fail request");
5884
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 }
5887
5888 /*------------------------------------------------------------------------
5889 Fill in Event data and post to the Main FSM
5890 ------------------------------------------------------------------------*/
5891 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005892 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5893 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5894 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005895 wdiEventData.pUserData = pUserData;
5896
5897 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5898
5899}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005900
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305901#ifdef FEATURE_WLAN_TDLS
5902/**
5903 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5904 upper MAC wants to send TDLS Link Establish Request Parameters
5905 Upon the call of this API the WLAN DAL will
5906 pack and send the TDLS Link Establish Request message to the
5907 lower RIVA sub-system if DAL is in state STARTED.
5908
5909 In state BUSY this request will be queued. Request won't
5910 be allowed in any other state.
5911
5912
5913 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5914 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5915
5916 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5917 response of the TDLS Link Establish request received
5918 from the device
5919
5920 pUserData: user data will be passed back with the
5921 callback
5922
5923 @see
5924 @return Result of the function call
5925*/
5926WDI_Status
5927WDI_SetTDLSLinkEstablishReq
5928(
5929 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5930 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5931 void* pUserData
5932)
5933{
5934 WDI_EventInfoType wdiEventData;
5935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5936
5937 /*------------------------------------------------------------------------
5938 Sanity Check
5939 ------------------------------------------------------------------------*/
5940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5941 {
5942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5943 "WDI API call before module is initialized - Fail request");
5944
5945 return WDI_STATUS_E_NOT_ALLOWED;
5946 }
5947
5948 /*------------------------------------------------------------------------
5949 Fill in Event data and post to the Main FSM
5950 ------------------------------------------------------------------------*/
5951 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5952 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5953 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5954 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5955 wdiEventData.pUserData = pUserData;
5956
5957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5958
5959}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05305960
5961//tdlsoffchan
5962/**
5963 @brief WDI_SetTDLSChanSwitchReq will be called when the
5964 upper MAC wants to send TDLS Chan Switch Request Parameters
5965 Upon the call of this API the WLAN DAL will
5966 pack and send the TDLS Link Establish Request message to the
5967 lower RIVA sub-system if DAL is in state STARTED.
5968
5969 In state BUSY this request will be queued. Request won't
5970 be allowed in any other state.
5971
5972
5973 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
5974 for Link Establishment (Used for TDLS Off Channel ...)
5975
5976 wdiTDLSChanSwitchReqRspCb: callback for passing back the
5977 response of the TDLS Chan Switch request received
5978 from the device
5979
5980 pUserData: user data will be passed back with the
5981 callback
5982
5983 @see
5984 @return Result of the function call
5985*/
5986WDI_Status
5987WDI_SetTDLSChanSwitchReq
5988(
5989 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
5990 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
5991 void* pUserData
5992)
5993{
5994 WDI_EventInfoType wdiEventData;
5995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5996
5997 /*------------------------------------------------------------------------
5998 Sanity Check
5999 ------------------------------------------------------------------------*/
6000 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6001 {
6002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6003 "WDI API call before module is initialized - Fail request");
6004
6005 return WDI_STATUS_E_NOT_ALLOWED;
6006 }
6007
6008 /*------------------------------------------------------------------------
6009 Fill in Event data and post to the Main FSM
6010 ------------------------------------------------------------------------*/
6011 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6012 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6013 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6014 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6015 wdiEventData.pUserData = pUserData;
6016
6017 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6018
6019}/*WDI_SetTDLSChanSwitchReq*/
6020
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306021#endif
6022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 UMAC wanted to add STA self while opening any new session
6026 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006028
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006032
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006034 callback
6035
6036 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006037 @return Result of the function call
6038*/
6039WDI_Status
6040WDI_AddSTASelfReq
6041(
6042 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6043 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6044 void* pUserData
6045)
6046{
6047 WDI_EventInfoType wdiEventData;
6048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6049
6050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006051 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 ------------------------------------------------------------------------*/
6053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6054 {
6055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6056 "WDI API call before module is initialized - Fail request");
6057
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 }
6060
6061 /*------------------------------------------------------------------------
6062 Fill in Event data and post to the Main FSM
6063 ------------------------------------------------------------------------*/
6064 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006065 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6066 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6067 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 wdiEventData.pUserData = pUserData;
6069
6070 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6071
6072}/*WDI_AddSTASelfReq*/
6073
6074
Jeff Johnsone7245742012-09-05 17:12:55 -07006075#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006076/**
6077 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6078 the device of a successful add TSpec negotiation. HW
6079 needs to receive the TSpec Info from the UMAC in order
6080 to configure properly the QoS data traffic. Upon the
6081 call of this API the WLAN DAL will pack and send a HAL
6082 Add TS request message to the lower RIVA sub-system if
6083 DAL is in state STARTED.
6084
6085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006087
6088 WDI_PostAssocReq must have been called.
6089
6090 @param wdiAddTsReqParams: the add TS parameters as specified by
6091 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006092
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 wdiAddTsRspCb: callback for passing back the response of
6094 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 callback
6098
Jeff Johnson295189b2012-06-20 16:38:30 -07006099 @see WDI_PostAssocReq
6100 @return Result of the function call
6101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006103WDI_AggrAddTSReq
6104(
6105 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6106 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6107 void* pUserData
6108)
6109{
6110 WDI_EventInfoType wdiEventData;
6111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6112
6113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006115 ------------------------------------------------------------------------*/
6116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6117 {
6118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6119 "WDI API call before module is initialized - Fail request");
6120
Jeff Johnsone7245742012-09-05 17:12:55 -07006121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 }
6123
6124 /*------------------------------------------------------------------------
6125 Fill in Event data and post to the Main FSM
6126 ------------------------------------------------------------------------*/
6127 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6129 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6130 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 wdiEventData.pUserData = pUserData;
6132
6133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6134
6135}/*WDI_AggrAddTSReq*/
6136
6137#endif /* WLAN_FEATURE_VOWIFI_11R */
6138
Jeff Johnson295189b2012-06-20 16:38:30 -07006139/**
6140 @brief WDI_FTMCommandReq
6141 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006142
6143 @param ftmCommandReq: FTM Command Body
6144 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006145 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006146
Jeff Johnson295189b2012-06-20 16:38:30 -07006147 @see
6148 @return Result of the function call
6149*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006150WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006151WDI_FTMCommandReq
6152(
6153 WDI_FTMCommandReqType *ftmCommandReq,
6154 WDI_FTMCommandRspCb ftmCommandRspCb,
6155 void *pUserData
6156)
6157{
6158 WDI_EventInfoType wdiEventData;
6159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6160
6161 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006163 ------------------------------------------------------------------------*/
6164 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6165 {
6166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6167 "WDI API call before module is initialized - Fail request");
6168
Jeff Johnsone7245742012-09-05 17:12:55 -07006169 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006170 }
6171
6172 /*------------------------------------------------------------------------
6173 Fill in Event data and post to the Main FSM
6174 ------------------------------------------------------------------------*/
6175 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6176 wdiEventData.pEventData = (void *)ftmCommandReq;
6177 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6178 wdiEventData.pCBfnc = ftmCommandRspCb;
6179 wdiEventData.pUserData = pUserData;
6180
6181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6182}
Jeff Johnson295189b2012-06-20 16:38:30 -07006183/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006185
6186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006188
6189
6190 @param pwdiResumeReqParams: as specified by
6191 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006192
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 wdiResumeReqRspCb: callback for passing back the response of
6194 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006195
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006197 callback
6198
6199 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006200 @return Result of the function call
6201*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006202WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006203WDI_HostResumeReq
6204(
6205 WDI_ResumeParamsType* pwdiResumeReqParams,
6206 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6207 void* pUserData
6208)
6209{
6210 WDI_EventInfoType wdiEventData;
6211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6212
6213 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006214 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 ------------------------------------------------------------------------*/
6216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6217 {
6218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6219 "WDI API call before module is initialized - Fail request");
6220
Jeff Johnsone7245742012-09-05 17:12:55 -07006221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 }
6223
6224 /*------------------------------------------------------------------------
6225 Fill in Event data and post to the Main FSM
6226 ------------------------------------------------------------------------*/
6227 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 wdiEventData.pEventData = pwdiResumeReqParams;
6229 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6230 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006231 wdiEventData.pUserData = pUserData;
6232
6233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6234
6235}/*WDI_HostResumeReq*/
6236
6237/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006239
6240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006242
6243
6244 @param pwdiDelStaSelfReqParams: as specified by
6245 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006246
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 wdiDelStaSelfRspCb: callback for passing back the response of
6248 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006249
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 callback
6252
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 @see WDI_PostAssocReq
6254 @return Result of the function call
6255*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006257WDI_DelSTASelfReq
6258(
6259 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6260 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6261 void* pUserData
6262)
6263{
6264 WDI_EventInfoType wdiEventData;
6265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6266
6267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 ------------------------------------------------------------------------*/
6270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6271 {
6272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6273 "WDI API call before module is initialized - Fail request");
6274
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 }
6277
6278 /*------------------------------------------------------------------------
6279 Fill in Event data and post to the Main FSM
6280 ------------------------------------------------------------------------*/
6281 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006282 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6283 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6284 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 wdiEventData.pUserData = pUserData;
6286
6287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6288
6289}/*WDI_AggrAddTSReq*/
6290
6291/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006292 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6293 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 Upon the call of this API the WLAN DAL will pack
6295 and send a HAL Set Tx Per Tracking request message to the
6296 lower RIVA sub-system if DAL is in state STARTED.
6297
6298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006300
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 pwdiSetTxPerTrackingRspCb: callback for passing back the
6305 response of the set Tx PER Tracking configurations operation received
6306 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006307
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 callback
6310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 @return Result of the function call
6312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006314WDI_SetTxPerTrackingReq
6315(
6316 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6317 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6318 void* pUserData
6319)
6320{
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 wdiEventData.pUserData = pUserData;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_SetTxPerTrackingReq*/
6347
6348/**
6349 @brief WDI_SetTmLevelReq
6350 If HW Thermal condition changed, driver should react based on new
6351 HW thermal condition.
6352
6353 @param pwdiSetTmLevelReq: New thermal condition information
6354
6355 pwdiSetTmLevelRspCb: callback
6356
6357 usrData: user data will be passed back with the
6358 callback
6359
6360 @return Result of the function call
6361*/
6362WDI_Status
6363WDI_SetTmLevelReq
6364(
6365 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6366 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6367 void *usrData
6368)
6369{
6370 WDI_EventInfoType wdiEventData;
6371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6372
6373 /*------------------------------------------------------------------------
6374 Sanity Check
6375 ------------------------------------------------------------------------*/
6376 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6377 {
6378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6379 "WDI API call before module is initialized - Fail request");
6380
6381 return WDI_STATUS_E_NOT_ALLOWED;
6382 }
6383
6384 /*------------------------------------------------------------------------
6385 Fill in Event data and post to the Main FSM
6386 ------------------------------------------------------------------------*/
6387 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6388 wdiEventData.pEventData = pwdiSetTmLevelReq;
6389 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6390 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6391 wdiEventData.pUserData = usrData;
6392
6393 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6394}
6395
6396/**
6397 @brief WDI_HostSuspendInd
6398
6399 Suspend Indication from the upper layer will be sent
6400 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006401
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
6404 @see
6405
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 @return Status of the request
6407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006409WDI_HostSuspendInd
6410(
6411 WDI_SuspendParamsType* pwdiSuspendIndParams
6412)
6413{
6414
6415 WDI_EventInfoType wdiEventData;
6416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6417
6418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006419 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 ------------------------------------------------------------------------*/
6421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6422 {
6423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6424 "WDI API call before module is initialized - Fail request");
6425
Jeff Johnsone7245742012-09-05 17:12:55 -07006426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006427 }
6428
6429 /*------------------------------------------------------------------------
6430 Fill in Event data and post to the Main FSM
6431 ------------------------------------------------------------------------*/
6432 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006433 wdiEventData.pEventData = pwdiSuspendIndParams;
6434 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6435 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 wdiEventData.pUserData = NULL;
6437
6438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6439
6440}/*WDI_HostSuspendInd*/
6441
6442/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006443 @brief WDI_TrafficStatsInd
6444 Traffic Stats from the upper layer will be sent
6445 down to HAL
6446
6447 @param WDI_TrafficStatsIndType
6448
6449 @see
6450
6451 @return Status of the request
6452*/
6453WDI_Status
6454WDI_TrafficStatsInd
6455(
6456 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6457)
6458{
6459
6460 WDI_EventInfoType wdiEventData;
6461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6462
6463 /*------------------------------------------------------------------------
6464 Sanity Check
6465 ------------------------------------------------------------------------*/
6466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6467 {
6468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6469 "WDI API call before module is initialized - Fail request");
6470
6471 return WDI_STATUS_E_NOT_ALLOWED;
6472 }
6473
6474 /*------------------------------------------------------------------------
6475 Fill in Event data and post to the Main FSM
6476 ------------------------------------------------------------------------*/
6477 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6478 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6479 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6480 wdiEventData.pCBfnc = NULL;
6481 wdiEventData.pUserData = NULL;
6482
6483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6484
6485}/*WDI_TrafficStatsInd*/
6486
Chet Lanctot186b5732013-03-18 10:26:30 -07006487#ifdef WLAN_FEATURE_11W
6488/**
6489 @brief WDI_ExcludeUnencryptedInd
6490 Register with HAL to receive/drop unencrypted frames
6491
6492 @param WDI_ExcludeUnencryptIndType
6493
6494 @see
6495
6496 @return Status of the request
6497*/
6498WDI_Status
6499WDI_ExcludeUnencryptedInd
6500(
6501 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6502)
6503{
6504
6505 WDI_EventInfoType wdiEventData;
6506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6507
6508 /*------------------------------------------------------------------------
6509 Sanity Check
6510 ------------------------------------------------------------------------*/
6511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6512 {
6513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6514 "WDI API call before module is initialized - Fail request");
6515
6516 return WDI_STATUS_E_NOT_ALLOWED;
6517 }
6518
6519 /*------------------------------------------------------------------------
6520 Fill in Event data and post to the Main FSM
6521 ------------------------------------------------------------------------*/
6522 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6523 wdiEventData.pEventData = pWdiExcUnencParams;
6524 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6525 wdiEventData.pCBfnc = NULL;
6526 wdiEventData.pUserData = NULL;
6527
6528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6529
6530}/*WDI_TrafficStatsInd*/
6531#endif
6532
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006533/**
Yue Mab9c86f42013-08-14 15:59:08 -07006534 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6535
6536 @param addPeriodicTxPtrnParams: Add Pattern parameters
6537
6538 @see
6539
6540 @return Status of the request
6541*/
6542WDI_Status
6543WDI_AddPeriodicTxPtrnInd
6544(
6545 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6546)
6547{
6548 WDI_EventInfoType wdiEventData;
6549
6550 /*-------------------------------------------------------------------------
6551 Sanity Check
6552 ------------------------------------------------------------------------*/
6553 if (eWLAN_PAL_FALSE == gWDIInitialized)
6554 {
6555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6556 "WDI API call before module is initialized - Fail request!");
6557
6558 return WDI_STATUS_E_NOT_ALLOWED;
6559 }
6560
6561 /*-------------------------------------------------------------------------
6562 Fill in Event data and post to the Main FSM
6563 ------------------------------------------------------------------------*/
6564 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6565 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6566 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6567 wdiEventData.pCBfnc = NULL;
6568 wdiEventData.pUserData = NULL;
6569
6570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6571}
6572
6573/**
6574 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6575
6576 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6577
6578 @see
6579
6580 @return Status of the request
6581*/
6582WDI_Status
6583WDI_DelPeriodicTxPtrnInd
6584(
6585 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6586)
6587{
6588 WDI_EventInfoType wdiEventData;
6589
6590 /*-------------------------------------------------------------------------
6591 Sanity Check
6592 ------------------------------------------------------------------------*/
6593 if (eWLAN_PAL_FALSE == gWDIInitialized)
6594 {
6595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6596 "WDI API call before module is initialized - Fail request!");
6597
6598 return WDI_STATUS_E_NOT_ALLOWED;
6599 }
6600
6601 /*-------------------------------------------------------------------------
6602 Fill in Event data and post to the Main FSM
6603 ------------------------------------------------------------------------*/
6604 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6605 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6606 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6607 wdiEventData.pCBfnc = NULL;
6608 wdiEventData.pUserData = NULL;
6609
6610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6611}
6612
6613/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 @brief WDI_HALDumpCmdReq
6615 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006616
6617 @param halDumpCmdReqParams: Hal Dump Command Body
6618 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006620
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 @see
6622 @return Result of the function call
6623*/
6624WDI_Status WDI_HALDumpCmdReq
6625(
6626 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6627 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6628 void *pUserData
6629)
6630{
6631 WDI_EventInfoType wdiEventData;
6632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6633
6634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006635 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 ------------------------------------------------------------------------*/
6637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6638 {
6639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6640 "WDI API call before module is initialized - Fail request");
6641
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006643 }
6644
6645 /*------------------------------------------------------------------------
6646 Fill in Event data and post to the Main FSM
6647 ------------------------------------------------------------------------*/
6648 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6649 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6650 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6651 wdiEventData.pCBfnc = halDumpCmdRspCb;
6652 wdiEventData.pUserData = pUserData;
6653
6654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6655}
6656
Jeff Johnsone7245742012-09-05 17:12:55 -07006657/*============================================================================
6658
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006660
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 ============================================================================*/
6662
6663/**
6664 @brief Main FSM Start function for all states except BUSY
6665
Jeff Johnsone7245742012-09-05 17:12:55 -07006666
6667 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 wdiEV: event posted to the main DAL FSM
6669 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006670 structure
6671
Jeff Johnson295189b2012-06-20 16:38:30 -07006672 @see
6673 @return Result of the function call
6674*/
6675WDI_Status
6676WDI_PostMainEvent
6677(
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 WDI_ControlBlockType* pWDICtx,
6679 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006681)
6682{
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 WDI_Status wdiStatus;
6684 WDI_MainFuncType pfnWDIMainEvHdlr;
6685 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6687
6688 /*-------------------------------------------------------------------------
6689 Sanity check
6690 -------------------------------------------------------------------------*/
6691 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6692 ( wdiEV >= WDI_MAX_EVENT ))
6693 {
6694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6695 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6696 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 }
6699
6700 /*Access to the global state must be locked */
6701 wpalMutexAcquire(&pWDICtx->wptMutex);
6702
6703 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006704 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006705
6706 wdiOldState = pWDICtx->uGlobalState;
6707
6708 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006709 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6710 response comes from CCPU for the request sent by host:
6711 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 -07006712 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 -07006713 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 CCPU:
6715 don't change the state */
6716 if ( WDI_RESPONSE_EVENT != wdiEV)
6717 {
6718 /*Transition to BUSY State - the request is now being processed by the FSM,
6719 if the request fails we shall transition back to the old state, if not
6720 the request will manage its own state transition*/
6721 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6722 }
6723 /* If the state function associated with the EV is NULL it means that this
6724 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006725 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 {
6727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006730 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006731 }
6732 else
6733 {
6734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006737 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 }
6739
6740 /* If a request handles itself well it will end up in a success or in a
6741 pending
6742 Success - means that the request was processed and the proper state
6743 transition already occurred or will occur when the resp is received
6744 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006745
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 Pending - means the request could not be processed at this moment in time
6747 because the FSM was already busy so no state transition or dequeueing
6748 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006749
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 Success for synchronous case means that the transition may occur and
6751 processing of pending requests may continue - so it should go through
6752 and restores the state and continue processing queued requests*/
6753 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6754 ( WDI_STATUS_PENDING != wdiStatus ))
6755 {
6756 if ( WDI_RESPONSE_EVENT != wdiEV)
6757 {
6758 /*The request has failed or could not be processed - transition back to
6759 the old state - check to see if anything was queued and try to execute
6760 The dequeue logic should post a message to a thread and return - no
6761 actual processing can occur */
6762 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6763 }
6764 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006765
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 }
6767
6768 /* we have completed processing the event */
6769 wpalMutexRelease(&pWDICtx->wptMutex);
6770
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006772
6773}/*WDI_PostMainEvent*/
6774
6775
6776/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006778--------------------------------------------------------------------------*/
6779/**
6780 @brief Main FSM Start function for all states except BUSY
6781
Jeff Johnsone7245742012-09-05 17:12:55 -07006782
6783 @param pWDICtx: pointer to the WLAN DAL context
6784 pEventData: pointer to the event information structure
6785
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 @see
6787 @return Result of the function call
6788*/
6789WDI_Status
6790WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006791(
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 WDI_ControlBlockType* pWDICtx,
6793 WDI_EventInfoType* pEventData
6794)
6795{
6796
6797 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 ----------------------------------------------------------------------*/
6800 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6801 {
6802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006803 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006804 pWDICtx, pEventData);
6805 return WDI_STATUS_E_FAILURE;
6806 }
6807
6808 wpalMutexAcquire(&pWDICtx->wptMutex);
6809
6810 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 ----------------------------------------------------------------------*/
6813 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6814 {
6815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6816 "Control Transport not yet Open - queueing the request");
6817
6818 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006820
6821 wpalMutexRelease(&pWDICtx->wptMutex);
6822 return WDI_STATUS_PENDING;
6823 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006824
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 wpalMutexRelease(&pWDICtx->wptMutex);
6826
6827 /*Return Success*/
6828 return WDI_ProcessRequest( pWDICtx, pEventData );
6829
6830}/*WDI_MainStart*/
6831
6832/**
6833 @brief Main FSM Response function for state INIT
6834
Jeff Johnsone7245742012-09-05 17:12:55 -07006835
6836 @param pWDICtx: pointer to the WLAN DAL context
6837 pEventData: pointer to the event information structure
6838
Jeff Johnson295189b2012-06-20 16:38:30 -07006839 @see
6840 @return Result of the function call
6841*/
6842WDI_Status
6843WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006844(
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 WDI_ControlBlockType* pWDICtx,
6846 WDI_EventInfoType* pEventData
6847)
6848{
6849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006850 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006853
6854 /*Return Success*/
6855 return WDI_STATUS_E_NOT_ALLOWED;
6856}/* WDI_MainRspInit */
6857
6858/**
6859 @brief Main FSM Close function for all states except BUSY
6860
Jeff Johnsone7245742012-09-05 17:12:55 -07006861
6862 @param pWDICtx: pointer to the WLAN DAL context
6863 pEventData: pointer to the event information structure
6864
Jeff Johnson295189b2012-06-20 16:38:30 -07006865 @see
6866 @return Result of the function call
6867*/
6868WDI_Status
6869WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006870(
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 WDI_ControlBlockType* pWDICtx,
6872 WDI_EventInfoType* pEventData
6873)
6874{
6875
6876 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006878 ----------------------------------------------------------------------*/
6879 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6880 {
6881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006882 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 pWDICtx, pEventData);
6884 return WDI_STATUS_E_FAILURE;
6885 }
6886
6887 /*Return Success*/
6888 return WDI_ProcessRequest( pWDICtx, pEventData );
6889
6890}/*WDI_MainClose*/
6891/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006893--------------------------------------------------------------------------*/
6894/**
6895 @brief Main FSM Start function for state STARTED
6896
Jeff Johnsone7245742012-09-05 17:12:55 -07006897
6898 @param pWDICtx: pointer to the WLAN DAL context
6899 pEventData: pointer to the event information structure
6900
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 @see
6902 @return Result of the function call
6903*/
6904WDI_Status
6905WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006906(
Jeff Johnson295189b2012-06-20 16:38:30 -07006907 WDI_ControlBlockType* pWDICtx,
6908 WDI_EventInfoType* pEventData
6909)
6910{
6911 WDI_StartRspCb wdiStartRspCb = NULL;
6912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6913
6914 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 ----------------------------------------------------------------------*/
6917 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6918 {
6919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006920 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006921 pWDICtx, pEventData);
6922 return WDI_STATUS_E_FAILURE;
6923 }
6924
6925 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006926 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006927 ----------------------------------------------------------------------*/
6928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006930
6931 wpalMutexAcquire(&pWDICtx->wptMutex);
6932
6933 /*Transition back to started because the post function transitioned us to
6934 busy*/
6935 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6936
6937 /*Check to see if any request is pending*/
6938 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006939
Jeff Johnson295189b2012-06-20 16:38:30 -07006940 wpalMutexRelease(&pWDICtx->wptMutex);
6941
6942 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006943 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6944
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 /*Notify UMAC*/
6946 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6947
6948 /*Return Success*/
6949 return WDI_STATUS_SUCCESS;
6950
6951}/*WDI_MainStartStarted*/
6952
6953/**
6954 @brief Main FSM Stop function for state STARTED
6955
Jeff Johnsone7245742012-09-05 17:12:55 -07006956
6957 @param pWDICtx: pointer to the WLAN DAL context
6958 pEventData: pointer to the event information structure
6959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 @see
6961 @return Result of the function call
6962*/
6963WDI_Status
6964WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006965(
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 WDI_ControlBlockType* pWDICtx,
6967 WDI_EventInfoType* pEventData
6968)
6969{
6970 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 ----------------------------------------------------------------------*/
6973 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6974 {
6975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006976 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 pWDICtx, pEventData);
6978 return WDI_STATUS_E_FAILURE;
6979 }
6980
6981 /*State at this point is BUSY - because we enter this state before posting
6982 an event to the FSM in order to prevent potential race conditions*/
6983
6984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6985 "Processing stop request in FSM");
6986
6987 /*Return Success*/
6988 return WDI_ProcessRequest( pWDICtx, pEventData );
6989
6990}/*WDI_MainStopStarted*/
6991/**
6992 @brief Main FSM Request function for state started
6993
Jeff Johnsone7245742012-09-05 17:12:55 -07006994
6995 @param pWDICtx: pointer to the WLAN DAL context
6996 pEventData: pointer to the event information structure
6997
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 @see
6999 @return Result of the function call
7000*/
7001WDI_Status
7002WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007003(
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 WDI_ControlBlockType* pWDICtx,
7005 WDI_EventInfoType* pEventData
7006)
7007{
7008
7009 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 ----------------------------------------------------------------------*/
7012 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7013 {
7014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007015 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007016 pWDICtx, pEventData);
7017 return WDI_STATUS_E_FAILURE;
7018 }
7019
7020 /*State at this point is BUSY - because we enter this state before posting
7021 an event to the FSM in order to prevent potential race conditions*/
7022
7023 /*Return Success*/
7024 return WDI_ProcessRequest( pWDICtx, pEventData );
7025
7026}/*WDI_MainReqStarted*/
7027
7028/**
7029 @brief Main FSM Response function for all states except INIT
7030
Jeff Johnsone7245742012-09-05 17:12:55 -07007031
7032 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007033 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007034
Jeff Johnson295189b2012-06-20 16:38:30 -07007035 @see
7036 @return Result of the function call
7037*/
7038WDI_Status
7039WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007040(
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 WDI_ControlBlockType* pWDICtx,
7042 WDI_EventInfoType* pEventData
7043)
7044{
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 wpt_boolean expectedResponse;
7047
7048 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 ----------------------------------------------------------------------*/
7051 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7052 {
7053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007054 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 pWDICtx, pEventData);
7056 return WDI_STATUS_E_FAILURE;
7057 }
7058
7059 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7060 {
7061 /* we received an expected response */
7062 expectedResponse = eWLAN_PAL_TRUE;
7063
7064 /*We expect that we will transition to started after this processing*/
7065 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7066
7067 /* we are no longer expecting a response */
7068 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7069 }
7070 else
7071 {
7072 /* we received an indication or unexpected response */
7073 expectedResponse = eWLAN_PAL_FALSE;
7074 /* for indications no need to update state from what it is right
7075 now, unless it explicitly does it in the indication handler (say
7076 for device failure ind) */
7077 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7078 }
7079
7080 /*Process the response and indication */
7081 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7082
7083 /*Lock the CB as we are about to do a state transition*/
7084 wpalMutexAcquire(&pWDICtx->wptMutex);
7085
7086 /*Transition to the expected state after the response processing
7087 - this should always be started state with the following exceptions:
7088 1. processing of a failed start response
7089 2. device failure detected while processing response
7090 3. stop response received*/
7091 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007092
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 /*Dequeue request that may have been queued while we were waiting for the
7094 response */
7095 if ( expectedResponse )
7096 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007097 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007098 }
7099
7100 wpalMutexRelease(&pWDICtx->wptMutex);
7101
7102 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007104
7105}/*WDI_MainRsp*/
7106
7107/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007108 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007109--------------------------------------------------------------------------*/
7110/**
7111 @brief Main FSM Stop function for state STOPPED
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113
7114 @param pWDICtx: pointer to the WLAN DAL context
7115 pEventData: pointer to the event information structure
7116
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 @see
7118 @return Result of the function call
7119*/
7120WDI_Status
7121WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007122(
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 WDI_ControlBlockType* pWDICtx,
7124 WDI_EventInfoType* pEventData
7125)
7126{
7127 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007128 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 ----------------------------------------------------------------------*/
7130 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7131 {
7132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007133 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007134 pWDICtx, pEventData);
7135 return WDI_STATUS_E_FAILURE;
7136 }
7137
7138 /*We should normally not get a STOP request if we are already stopped
7139 since we should normally be stopped by the UMAC. However in some
7140 error situations we put ourselves in the stopped state without the
7141 UMAC knowing, so when we get a STOP request in this state we still
7142 process it since we need to clean up the underlying state */
7143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7144 "Processing stop request while stopped in FSM");
7145
7146 /*Return Success*/
7147 return WDI_ProcessRequest( pWDICtx, pEventData );
7148
7149}/*WDI_MainStopStopped*/
7150
7151/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007153--------------------------------------------------------------------------*/
7154/**
7155 @brief Main FSM Start function for state BUSY
7156
Jeff Johnsone7245742012-09-05 17:12:55 -07007157
7158 @param pWDICtx: pointer to the WLAN DAL context
7159 pEventData: pointer to the event information structure
7160
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 @see
7162 @return Result of the function call
7163*/
7164WDI_Status
7165WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007166(
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 WDI_ControlBlockType* pWDICtx,
7168 WDI_EventInfoType* pEventData
7169)
7170{
7171 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 ----------------------------------------------------------------------*/
7174 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7175 {
7176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007177 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 pWDICtx, pEventData);
7179 return WDI_STATUS_E_FAILURE;
7180 }
7181
7182 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 ----------------------------------------------------------------------*/
7185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7186 "WDI Busy state - queue start request");
7187
7188 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007190
7191 /*Return Success*/
7192 return WDI_STATUS_PENDING;
7193}/*WDI_MainStartBusy*/
7194
7195/**
7196 @brief Main FSM Stop function for state BUSY
7197
Jeff Johnsone7245742012-09-05 17:12:55 -07007198
7199 @param pWDICtx: pointer to the WLAN DAL context
7200 pEventData: pointer to the event information structure
7201
Jeff Johnson295189b2012-06-20 16:38:30 -07007202 @see
7203 @return Result of the function call
7204*/
7205WDI_Status
7206WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007207(
Jeff Johnson295189b2012-06-20 16:38:30 -07007208 WDI_ControlBlockType* pWDICtx,
7209 WDI_EventInfoType* pEventData
7210)
7211{
7212 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 ----------------------------------------------------------------------*/
7215 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7216 {
7217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007218 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 pWDICtx, pEventData);
7220 return WDI_STATUS_E_FAILURE;
7221 }
7222
7223 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 ----------------------------------------------------------------------*/
7226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7227 "WDI Busy state - queue stop request");
7228
Jeff Johnsone7245742012-09-05 17:12:55 -07007229 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007231
Jeff Johnson295189b2012-06-20 16:38:30 -07007232}/*WDI_MainStopBusy*/
7233
7234/**
7235 @brief Main FSM Request function for state BUSY
7236
Jeff Johnsone7245742012-09-05 17:12:55 -07007237
7238 @param pWDICtx: pointer to the WLAN DAL context
7239 pEventData: pointer to the event information structure
7240
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 @see
7242 @return Result of the function call
7243*/
7244WDI_Status
7245WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007246(
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 WDI_ControlBlockType* pWDICtx,
7248 WDI_EventInfoType* pEventData
7249)
7250{
7251 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007253 ----------------------------------------------------------------------*/
7254 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7255 {
7256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007257 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pWDICtx, pEventData);
7259 return WDI_STATUS_E_FAILURE;
7260 }
7261
7262 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007263 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 ----------------------------------------------------------------------*/
7265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7266 "WDI Busy state - queue request %d because waiting for response %d",
7267 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7268
Jeff Johnsone7245742012-09-05 17:12:55 -07007269 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
Jeff Johnson295189b2012-06-20 16:38:30 -07007272}/*WDI_MainReqBusy*/
7273/**
7274 @brief Main FSM Close function for state BUSY
7275
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_MainCloseBusy
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 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 ----------------------------------------------------------------------*/
7293 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7294 {
7295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007296 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 pWDICtx, pEventData);
7298 return WDI_STATUS_E_FAILURE;
7299 }
7300
7301 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 ----------------------------------------------------------------------*/
7304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7305 "WDI Busy state - queue close request");
7306
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007309
Jeff Johnson295189b2012-06-20 16:38:30 -07007310}/*WDI_MainCloseBusy*/
7311
7312/**
7313 @brief Main FSM Shutdown function for INIT & STARTED states
7314
7315
7316 @param pWDICtx: pointer to the WLAN DAL context
7317 pEventData: pointer to the event information structure
7318
7319 @see
7320 @return Result of the function call
7321*/
7322WDI_Status
7323WDI_MainShutdown
7324(
7325 WDI_ControlBlockType* pWDICtx,
7326 WDI_EventInfoType* pEventData
7327)
7328{
7329 /*--------------------------------------------------------------------
7330 Sanity Check
7331 ----------------------------------------------------------------------*/
7332 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7333 {
7334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007335 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 pWDICtx, pEventData);
7337 return WDI_STATUS_E_FAILURE;
7338 }
7339
7340 /*State at this point is BUSY - because we enter this state before posting
7341 an event to the FSM in order to prevent potential race conditions*/
7342
7343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7344 "Processing shutdown request in FSM");
7345
7346 /*Return Success*/
7347 return WDI_ProcessRequest( pWDICtx, pEventData );
7348
7349}/*WDI_MainShutdown*/
7350
7351/**
7352 @brief Main FSM Shutdown function for BUSY state
7353
7354
7355 @param pWDICtx: pointer to the WLAN DAL context
7356 pEventData: pointer to the event information structure
7357
7358 @see
7359 @return Result of the function call
7360*/
7361WDI_Status
7362WDI_MainShutdownBusy
7363(
7364 WDI_ControlBlockType* pWDICtx,
7365 WDI_EventInfoType* pEventData
7366)
7367{
7368 /*--------------------------------------------------------------------
7369 Sanity Check
7370 ----------------------------------------------------------------------*/
7371 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7372 {
7373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007374 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 pWDICtx, pEventData);
7376 return WDI_STATUS_E_FAILURE;
7377 }
7378
7379 /* If you are waiting for a HAL response at this stage, you are not
7380 * going to get it. Riva is already shutdown/crashed.
7381 */
7382 wpalTimerStop(&gWDICb.wptResponseTimer);
7383
7384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7385 "Processing shutdown request in FSM: Busy state ");
7386
7387 return WDI_ProcessRequest( pWDICtx, pEventData );
7388
7389}/*WDI_MainShutdownBusy*/
7390
7391
Jeff Johnsone7245742012-09-05 17:12:55 -07007392/*=======================================================================
7393
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007395
Jeff Johnson295189b2012-06-20 16:38:30 -07007396*=======================================================================*/
7397
7398/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007400========================================================================*/
7401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007404
7405 @param pWDICtx: pointer to the WLAN DAL context
7406 pEventData: pointer to the event information structure
7407
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 @see
7409 @return Result of the function call
7410*/
7411WDI_Status
7412WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007413(
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 WDI_ControlBlockType* pWDICtx,
7415 WDI_EventInfoType* pEventData
7416)
7417{
7418 WDI_StartReqParamsType* pwdiStartParams = NULL;
7419 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007421 wpt_uint16 usDataOffset = 0;
7422 wpt_uint16 usSendSize = 0;
7423
Jeff Johnsone7245742012-09-05 17:12:55 -07007424 tHalMacStartReqMsg halStartReq;
7425 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7427
7428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 -------------------------------------------------------------------------*/
7431 if (( NULL == pEventData ) ||
7432 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7433 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7434 {
7435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 }
7440
7441 /*-----------------------------------------------------------------------
7442 Get message buffer
7443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 pwdiStartParams->usConfigBufferLen;
7446
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 usLen,
7449 &pSendBuffer, &usDataOffset, &usSendSize))||
7450 ( usSendSize < (usDataOffset + usLen )))
7451 {
7452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007453 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 pEventData, pwdiStartParams, wdiStartRspCb);
7455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 }
7458
7459 /*-----------------------------------------------------------------------
7460 Fill in the message
7461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 halStartReq.startReqParams.driverType =
7463 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007464
Jeff Johnsone7245742012-09-05 17:12:55 -07007465 halStartReq.startReqParams.uConfigBufferLen =
7466 pwdiStartParams->usConfigBufferLen;
7467 wpalMemoryCopy( pSendBuffer+usDataOffset,
7468 &halStartReq.startReqParams,
7469 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007470
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 usDataOffset += sizeof(halStartReq.startReqParams);
7472 wpalMemoryCopy( pSendBuffer+usDataOffset,
7473 pwdiStartParams->pConfigBuffer,
7474 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007475
7476 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007478
7479 /*Save Low Level Ind CB and associated user data - it will be used further
7480 on when an indication is coming from the lower MAC*/
7481 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007488 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007489 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7490
Jeff Johnsone7245742012-09-05 17:12:55 -07007491
Jeff Johnson295189b2012-06-20 16:38:30 -07007492}/*WDI_ProcessStartReq*/
7493
7494/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007497
7498 @param pWDICtx: pointer to the WLAN DAL context
7499 pEventData: pointer to the event information structure
7500
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 @see
7502 @return Result of the function call
7503*/
7504WDI_Status
7505WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007506(
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 WDI_ControlBlockType* pWDICtx,
7508 WDI_EventInfoType* pEventData
7509)
7510{
7511 WDI_StopReqParamsType* pwdiStopParams = NULL;
7512 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 wpt_uint16 usDataOffset = 0;
7515 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007516 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7519
7520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 -------------------------------------------------------------------------*/
7523 if (( NULL == pEventData ) ||
7524 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7525 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7526 {
7527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007530 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 }
7532
7533 /*-----------------------------------------------------------------------
7534 Get message buffer
7535 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 sizeof(halStopReq.stopReqParams),
7538 &pSendBuffer, &usDataOffset, &usSendSize))||
7539 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7540 {
7541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007542 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 pEventData, pwdiStopParams, wdiStopRspCb);
7544 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007545 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 }
7547
7548 /*-----------------------------------------------------------------------
7549 Fill in the message
7550 -----------------------------------------------------------------------*/
7551 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7552 pwdiStopParams->wdiStopReason);
7553
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 wpalMemoryCopy( pSendBuffer+usDataOffset,
7555 &halStopReq.stopReqParams,
7556 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007557
7558 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007560
7561 /*! TO DO: stop the data services */
7562 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7563 {
7564 /*Stop the STA Table !UT- check this logic again
7565 It is safer to do it here than on the response - because a stop is imminent*/
7566 WDI_STATableStop(pWDICtx);
7567
7568 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007569 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7570 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 {
7572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7573 "WDI Init failed to reset power state event");
7574
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007576 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 }
7578 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007579 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7580 if( eWLAN_PAL_STATUS_SUCCESS != status )
7581 {
7582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007583 "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 -08007584 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007585 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007586 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007590 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7591 WDI_SET_POWER_STATE_TIMEOUT);
7592 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 {
7594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7595 "WDI Init failed to wait on an event");
7596
Jeff Johnsone7245742012-09-05 17:12:55 -07007597 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007598 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 }
7600 }
7601
7602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7607
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007608fail:
7609 // Release the message buffer so we don't leak
7610 wpalMemoryFree(pSendBuffer);
7611
7612failRequest:
7613 //WDA should have failure check to avoid the memory leak
7614 return WDI_STATUS_E_FAILURE;
7615
Jeff Johnson295189b2012-06-20 16:38:30 -07007616}/*WDI_ProcessStopReq*/
7617
7618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007621
7622 @param pWDICtx: pointer to the WLAN DAL context
7623 pEventData: pointer to the event information structure
7624
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 @see
7626 @return Result of the function call
7627*/
7628WDI_Status
7629WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007630(
Jeff Johnson295189b2012-06-20 16:38:30 -07007631 WDI_ControlBlockType* pWDICtx,
7632 WDI_EventInfoType* pEventData
7633)
7634{
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7637
7638 /*Lock control block for cleanup*/
7639 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007640
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 /*Clear all pending request*/
7642 WDI_ClearPendingRequests(pWDICtx);
7643
7644 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007646
7647 /* Close Data transport*/
7648 /* FTM mode does not open Data Path */
7649 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7650 {
7651 WDTS_Close(pWDICtx);
7652 }
7653
7654 /*Close the STA Table !UT- check this logic again*/
7655 WDI_STATableClose(pWDICtx);
7656
7657 /*close the PAL */
7658 wptStatus = wpalClose(pWDICtx->pPALContext);
7659 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7660 {
7661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7662 "Failed to wpal Close %d", wptStatus);
7663 WDI_ASSERT(0);
7664 }
7665
7666 /*Transition back to init state*/
7667 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7668
7669 wpalMutexRelease(&pWDICtx->wptMutex);
7670
7671 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007673
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007675}/*WDI_ProcessCloseReq*/
7676
7677
7678/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007680===========================================================================*/
7681
7682/**
7683 @brief Process Init Scan Request function (called when Main FSM
7684 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007685
7686 @param pWDICtx: pointer to the WLAN DAL context
7687 pEventData: pointer to the event information structure
7688
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 @see
7690 @return Result of the function call
7691*/
7692WDI_Status
7693WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007694(
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 WDI_ControlBlockType* pWDICtx,
7696 WDI_EventInfoType* pEventData
7697)
7698{
7699 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7700 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 wpt_uint16 usDataOffset = 0;
7703 wpt_uint16 usSendSize = 0;
7704 wpt_uint8 i = 0;
7705
7706 tHalInitScanReqMsg halInitScanReqMsg;
7707
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 * It shold be removed once host and riva changes are in sync*/
7710 tHalInitScanConReqMsg halInitScanConReqMsg;
7711
7712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7713
7714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 -------------------------------------------------------------------------*/
7717 if (( NULL == pEventData ) ||
7718 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7719 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7720 {
7721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 }
7726
7727#if 0
7728 wpalMutexAcquire(&pWDICtx->wptMutex);
7729 /*-----------------------------------------------------------------------
7730 Check to see if SCAN is already in progress - if so reject the req
7731 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 -----------------------------------------------------------------------*/
7734 if ( pWDICtx->bScanInProgress )
7735 {
7736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7737 "Scan is already in progress - subsequent scan is not allowed"
7738 " until the first scan completes");
7739
7740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 }
7743
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7745 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746
7747 wpalMutexRelease(&pWDICtx->wptMutex);
7748#endif
Viral Modid86bde22012-12-10 13:09:21 -08007749 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007751 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007752 * It shold be removed once host and riva changes are in sync*/
7753 /*-----------------------------------------------------------------------
7754 Get message buffer
7755 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 sizeof(halInitScanConReqMsg.initScanParams),
7758 &pSendBuffer, &usDataOffset, &usSendSize))||
7759 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7760 {
7761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007762 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 }
7767
7768
7769 /*-----------------------------------------------------------------------
7770 Fill in the message
7771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7774
7775 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7776 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7777
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007782 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7784
7785 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7786 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7787
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7789 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007790
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7793
7794 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7795 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7798 }
7799
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 wpalMemoryCopy( pSendBuffer+usDataOffset,
7801 &halInitScanConReqMsg.initScanParams,
7802 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 }
7804 else
7805 {
7806 /*-----------------------------------------------------------------------
7807 Get message buffer
7808 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007809 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 sizeof(halInitScanReqMsg.initScanParams),
7811 &pSendBuffer, &usDataOffset, &usSendSize))||
7812 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7813 {
7814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007815 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007819 }
7820
7821
7822 /*-----------------------------------------------------------------------
7823 Fill in the message
7824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7827
7828 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7829 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7830
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7837
7838 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7839 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7840
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7843
7844 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7845 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7848 }
7849
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 wpalMemoryCopy( pSendBuffer+usDataOffset,
7851 &halInitScanReqMsg.initScanParams,
7852 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 }
7854
7855 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857
7858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007861 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7863
7864}/*WDI_ProcessInitScanReq*/
7865
7866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007867 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007869
7870 @param pWDICtx: pointer to the WLAN DAL context
7871 pEventData: pointer to the event information structure
7872
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 @see
7874 @return Result of the function call
7875*/
7876WDI_Status
7877WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007878(
Jeff Johnson295189b2012-06-20 16:38:30 -07007879 WDI_ControlBlockType* pWDICtx,
7880 WDI_EventInfoType* pEventData
7881)
7882{
7883 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7884 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 wpt_uint16 usDataOffset = 0;
7887 wpt_uint16 usSendSize = 0;
7888
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7891
7892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 -------------------------------------------------------------------------*/
7895 if (( NULL == pEventData ) ||
7896 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7897 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7898 {
7899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 }
7904
7905#if 0
7906 wpalMutexAcquire(&pWDICtx->wptMutex);
7907 /*-----------------------------------------------------------------------
7908 Check to see if SCAN is already in progress - start scan is only
7909 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007912 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7914 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7915 {
7916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7917 "Scan start not allowed in this state %d %d",
7918 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007919
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 }
7923
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007925
7926 wpalMutexRelease(&pWDICtx->wptMutex);
7927#endif
7928
7929 /*-----------------------------------------------------------------------
7930 Get message buffer
7931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 sizeof(halStartScanReqMsg.startScanParams),
7934 &pSendBuffer, &usDataOffset, &usSendSize))||
7935 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7936 {
7937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007938 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 }
7943
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 wpalMemoryCopy( pSendBuffer+usDataOffset,
7947 &halStartScanReqMsg.startScanParams,
7948 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007949
7950 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007952
7953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7958}/*WDI_ProcessStartScanReq*/
7959
7960
7961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007964
7965 @param pWDICtx: pointer to the WLAN DAL context
7966 pEventData: pointer to the event information structure
7967
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 @see
7969 @return Result of the function call
7970*/
7971WDI_Status
7972WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007973(
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 WDI_ControlBlockType* pWDICtx,
7975 WDI_EventInfoType* pEventData
7976)
7977{
7978 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7979 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 wpt_uint16 usDataOffset = 0;
7982 wpt_uint16 usSendSize = 0;
7983
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7986
7987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 -------------------------------------------------------------------------*/
7990 if (( NULL == pEventData ) ||
7991 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7992 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7993 {
7994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 }
7999
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8001 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 * forwarded to HAL and result in hang*/
8003#if 0
8004 wpalMutexAcquire(&pWDICtx->wptMutex);
8005 /*-----------------------------------------------------------------------
8006 Check to see if SCAN is already in progress - end scan is only
8007 allowed when a scan is ongoing and the state of the scan procedure
8008 is started
8009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8012 {
8013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8014 "End start not allowed in this state %d %d",
8015 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008016
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 }
8020
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022
8023 wpalMutexRelease(&pWDICtx->wptMutex);
8024#endif
8025
8026 /*-----------------------------------------------------------------------
8027 Get message buffer
8028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 sizeof(halEndScanReqMsg.endScanParams),
8031 &pSendBuffer, &usDataOffset, &usSendSize))||
8032 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8033 {
8034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008035 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 }
8040
8041 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8042
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 wpalMemoryCopy( pSendBuffer+usDataOffset,
8044 &halEndScanReqMsg.endScanParams,
8045 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008046
8047 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049
8050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8055}/*WDI_ProcessEndScanReq*/
8056
8057
8058/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008061
8062 @param pWDICtx: pointer to the WLAN DAL context
8063 pEventData: pointer to the event information structure
8064
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 @see
8066 @return Result of the function call
8067*/
8068WDI_Status
8069WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008070(
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 WDI_ControlBlockType* pWDICtx,
8072 WDI_EventInfoType* pEventData
8073)
8074{
8075 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8076 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 wpt_uint16 usDataOffset = 0;
8079 wpt_uint16 usSendSize = 0;
8080 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008081 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8084
8085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 -------------------------------------------------------------------------*/
8088 if (( NULL == pEventData ) ||
8089 ( NULL == pEventData->pEventData) ||
8090 ( NULL == pEventData->pCBfnc))
8091 {
8092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 }
8097
8098 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8099 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8101 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 * forwarded to HAL and result in hang*/
8103#if 0
8104 wpalMutexAcquire(&pWDICtx->wptMutex);
8105 /*-----------------------------------------------------------------------
8106 Check to see if SCAN is already in progress
8107 Finish scan gets invoked any scan states. ie. abort scan
8108 It should be allowed in any states.
8109 -----------------------------------------------------------------------*/
8110 if ( !pWDICtx->bScanInProgress )
8111 {
8112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8113 "Finish start not allowed in this state %d",
8114 pWDICtx->bScanInProgress );
8115
8116 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 }
8119
8120 /*-----------------------------------------------------------------------
8121 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8125 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 wpalMutexRelease(&pWDICtx->wptMutex);
8127#endif
8128
8129 if ( pWDICtx->bInBmps )
8130 {
8131 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008132 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8133 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8134 {
8135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008136 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008137 WDI_ASSERT(0);
8138 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 }
8140
8141 /*-----------------------------------------------------------------------
8142 Get message buffer
8143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 sizeof(halFinishScanReqMsg.finishScanParams),
8146 &pSendBuffer, &usDataOffset, &usSendSize))||
8147 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8148 {
8149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008150 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 }
8155
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8158
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8161
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008163 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8164
8165 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8166 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8167
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8174
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8177
8178 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8179 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8182 }
8183
8184 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8185 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8186
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 wpalMemoryCopy( pSendBuffer+usDataOffset,
8188 &halFinishScanReqMsg.finishScanParams,
8189 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008190
8191 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008193
8194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8199}/*WDI_ProcessFinishScanReq*/
8200
8201
8202/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008204==========================================================================*/
8205/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 @brief Process BSS Join for a given Session
8207
8208 @param pWDICtx: pointer to the WLAN DAL context
8209 pEventData: pointer to the event information structure
8210
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 @see
8212 @return Result of the function call
8213*/
8214WDI_Status
8215WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008216(
Jeff Johnson295189b2012-06-20 16:38:30 -07008217 WDI_ControlBlockType* pWDICtx,
8218 WDI_JoinReqParamsType* pwdiJoinParams,
8219 WDI_JoinRspCb wdiJoinRspCb,
8220 void* pUserData
8221)
8222{
8223 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 wpt_uint16 usDataOffset = 0;
8226 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8231
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008232 wpalMutexAcquire(&pWDICtx->wptMutex);
8233
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 /*------------------------------------------------------------------------
8235 Check to see if we have any session with this BSSID already stored, we
8236 should not
8237 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8239 pwdiJoinParams->wdiReqInfo.macBSSID,
8240 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008241
8242 if ( NULL != pBSSSes )
8243 {
8244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008245 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8246 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008247
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008248 /*reset the bAssociationInProgress otherwise the next
8249 *join request will be queued*/
8250 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8251 wpalMutexRelease(&pWDICtx->wptMutex);
8252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 }
8254
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008256 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 if ( NULL == pBSSSes )
8260 {
8261
8262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8263 "DAL has no free sessions - cannot run another join");
8264
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008265 /*reset the bAssociationInProgress otherwise the next
8266 *join request will be queued*/
8267 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 }
8271
8272 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8274 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 WDI_MAC_ADDR_LEN);
8276
8277 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008280
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 wpalMutexRelease(&pWDICtx->wptMutex);
8282
8283 /*-----------------------------------------------------------------------
8284 Get message buffer
8285 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 sizeof(halJoinReqMsg.joinReqParams),
8288 &pSendBuffer, &usDataOffset, &usSendSize))||
8289 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8290 {
8291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008292 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 pUserData, pwdiJoinParams, wdiJoinRspCb);
8294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 }
8297
8298 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300
8301 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 pwdiJoinParams->wdiReqInfo.macSTASelf,
8303 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008304
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8307
8308 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8309
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008310#ifdef WLAN_FEATURE_VOWIFI
8311 halJoinReqMsg.joinReqParams.maxTxPower =
8312 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8313#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8316#endif
8317
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008319 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8320 wdiSecondaryChannelOffset);
8321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 wpalMemoryCopy( pSendBuffer+usDataOffset,
8323 &halJoinReqMsg.joinReqParams,
8324 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
8326 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8333 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008334
8335}/*WDI_ProcessBSSSessionJoinReq*/
8336
8337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008340
8341 @param pWDICtx: pointer to the WLAN DAL context
8342 pEventData: pointer to the event information structure
8343
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 @see
8345 @return Result of the function call
8346*/
8347WDI_Status
8348WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008349(
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 WDI_ControlBlockType* pWDICtx,
8351 WDI_EventInfoType* pEventData
8352)
8353{
8354 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8355 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8356 WDI_JoinRspCb wdiJoinRspCb = NULL;
8357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8358
8359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 -------------------------------------------------------------------------*/
8362 if (( NULL == pEventData ) ||
8363 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8364 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8365 {
8366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008371
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 /*-------------------------------------------------------------------------
8373 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 -------------------------------------------------------------------------*/
8376 wpalMutexAcquire(&pWDICtx->wptMutex);
8377
8378 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8379 {
8380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8381 "Association is currently in progress, queueing new join req");
8382
8383 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 pwdiJoinParams->wdiReqInfo.macBSSID);
8386
8387 wpalMutexRelease(&pWDICtx->wptMutex);
8388
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 }
8391
8392 /*Starting a new association */
8393 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8394 wpalMutexRelease(&pWDICtx->wptMutex);
8395
8396 /*Process the Join Request*/
8397 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8398 wdiJoinRspCb,pEventData->pUserData);
8399
8400}/*WDI_ProcessJoinReq*/
8401
8402
8403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008406
8407 @param pWDICtx: pointer to the WLAN DAL context
8408 pEventData: pointer to the event information structure
8409
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 @see
8411 @return Result of the function call
8412*/
8413WDI_Status
8414WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008415(
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 WDI_ControlBlockType* pWDICtx,
8417 WDI_EventInfoType* pEventData
8418)
8419{
8420 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8421 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 wpt_uint16 uMsgSize = 0;
8425 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 wpt_uint16 usDataOffset = 0;
8427 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008429
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8432
8433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 -------------------------------------------------------------------------*/
8436 if (( NULL == pEventData ) ||
8437 ( NULL == pEventData->pEventData ) ||
8438 ( NULL == pEventData->pCBfnc ))
8439 {
8440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 }
8445
Abhishek Singh6927fa02014-06-27 17:19:55 +05308446 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8448 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8449 /*-------------------------------------------------------------------------
8450 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 -------------------------------------------------------------------------*/
8453 wpalMutexAcquire(&pWDICtx->wptMutex);
8454
8455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8459 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8460 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008461
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 {
8464#ifdef WLAN_FEATURE_VOWIFI_11R
8465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 if ( NULL == pBSSSes )
8470 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008471
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8473 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008474
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008478
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8481 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008483
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8487#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 * Request in case of IBSS*/
8490 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8491 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8492 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8493 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8494 {
8495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 if ( NULL == pBSSSes )
8500 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008501
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8503 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008504
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008508
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8511 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008513
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8517 }
8518 else
8519 {
8520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008521 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8522 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8523 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8524
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 /* for IBSS testing */
8526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 }
8529#endif
8530 }
8531
8532 /*------------------------------------------------------------------------
8533 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 ------------------------------------------------------------------------*/
8536 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8537 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8539 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8540 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8541 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008542
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008544
8545 wpalMutexRelease(&pWDICtx->wptMutex);
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 }
8549
8550 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8552 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 sizeof(pWDICtx->wdiCachedConfigBssReq));
8554
8555 wpalMutexRelease(&pWDICtx->wptMutex);
8556
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8558#ifdef WLAN_FEATURE_11AC
8559 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008560 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 else
8562#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008563 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008564
8565 /*-----------------------------------------------------------------------
8566 Get message buffer
8567 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8570 ( usSendSize < (usDataOffset + uMsgSize )))
8571 {
8572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008573 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 }
8578
8579 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008580#ifdef WLAN_FEATURE_11AC
8581 if (WDI_getFwWlanFeatCaps(DOT11AC))
8582 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8583 &pwdiConfigBSSParams->wdiReqInfo);
8584 else
8585#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 &pwdiConfigBSSParams->wdiReqInfo);
8588
8589 /* Need to fill in the STA Index to invalid, since at this point we have not
8590 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592
8593 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8595
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008596#ifdef WLAN_FEATURE_11AC
8597 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8598 wpalMemoryCopy( pSendBuffer+usDataOffset,
8599 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8600 uMsgSize);
8601 }else
8602#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008603 {
8604 if ( uMsgSize <= sizeof(tConfigBssParams) )
8605 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008607 &halConfigBssReqMsg.uBssParams.configBssParams,
8608 uMsgSize);
8609 }
8610 else
8611 {
8612 return WDI_STATUS_E_FAILURE;
8613 }
8614 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008615
8616 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308618 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8623 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 WDI_CONFIG_BSS_RESP);
8625
8626}/*WDI_ProcessConfigBSSReq*/
8627
8628
8629/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008632
8633 @param pWDICtx: pointer to the WLAN DAL context
8634 pEventData: pointer to the event information structure
8635
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 @see
8637 @return Result of the function call
8638*/
8639WDI_Status
8640WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008641(
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 WDI_ControlBlockType* pWDICtx,
8643 WDI_EventInfoType* pEventData
8644)
8645{
8646 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8647 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 wpt_uint16 usDataOffset = 0;
8652 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8657
8658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 -------------------------------------------------------------------------*/
8661 if (( NULL == pEventData ) ||
8662 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8663 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8664 {
8665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
8671 /*-------------------------------------------------------------------------
8672 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 -------------------------------------------------------------------------*/
8675 wpalMutexAcquire(&pWDICtx->wptMutex);
8676
8677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8681 pwdiDelBSSParams->ucBssIdx,
8682 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008683
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 {
8686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 "%s: BSS does not yet exist. ucBssIdx %d",
8688 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008689
8690 wpalMutexRelease(&pWDICtx->wptMutex);
8691
8692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008694
8695 /*------------------------------------------------------------------------
8696 Check if this BSS is being currently processed or queued,
8697 if queued - queue the new request as well
8698 ------------------------------------------------------------------------*/
8699 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8702 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8703 __func__, pwdiDelBSSParams->ucBssIdx);
8704
8705 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8706
8707 wpalMutexRelease(&pWDICtx->wptMutex);
8708
8709 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008711
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 /*-----------------------------------------------------------------------
8713 If we receive a Del BSS request for an association that is already in
8714 progress, it indicates that the assoc has failed => we no longer have
8715 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 -----------------------------------------------------------------------*/
8718 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8719 {
8720 /*We can switch to false here because even if a subsequent Join comes in
8721 it will only be processed when DAL transitions out of BUSY state which
8722 happens when the Del BSS request comes */
8723 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8724
8725 /*Former association is complete - prepare next pending assoc for
8726 processing */
8727 WDI_DequeueAssocRequest(pWDICtx);
8728 }
8729
8730 wpalMutexRelease(&pWDICtx->wptMutex);
8731 /*-----------------------------------------------------------------------
8732 Get message buffer
8733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 sizeof(halBssReqMsg.deleteBssParams),
8736 &pSendBuffer, &usDataOffset, &usSendSize))||
8737 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8738 {
8739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008740 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 }
8745
8746 /*Fill in the message request structure*/
8747
8748 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008749 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 wpalMemoryCopy( pSendBuffer+usDataOffset,
8752 &halBssReqMsg.deleteBssParams,
8753 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008754
8755 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008757
Jeff Johnsone7245742012-09-05 17:12:55 -07008758
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8764
Jeff Johnsone7245742012-09-05 17:12:55 -07008765
Jeff Johnson295189b2012-06-20 16:38:30 -07008766}/*WDI_ProcessDelBSSReq*/
8767
8768/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008771
8772 @param pWDICtx: pointer to the WLAN DAL context
8773 pEventData: pointer to the event information structure
8774
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 @see
8776 @return Result of the function call
8777*/
8778WDI_Status
8779WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008780(
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 WDI_ControlBlockType* pWDICtx,
8782 WDI_EventInfoType* pEventData
8783)
8784{
8785 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8786 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 wpt_uint16 usDataOffset = 0;
8791 wpt_uint16 usSendSize = 0;
8792 wpt_uint16 uMsgSize = 0;
8793 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8798
8799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 -------------------------------------------------------------------------*/
8802 if (( NULL == pEventData ) ||
8803 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8804 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8805 {
8806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 }
8811
8812 /*-------------------------------------------------------------------------
8813 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 -------------------------------------------------------------------------*/
8816 wpalMutexAcquire(&pWDICtx->wptMutex);
8817
8818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8822 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8823 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008824
8825 if ( NULL == pBSSSes )
8826 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8828 "%s: Association sequence for this BSS does not yet exist - "
8829 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8830 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008831
8832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 }
8835
8836 /*------------------------------------------------------------------------
8837 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 ------------------------------------------------------------------------*/
8840 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8841 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8843 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8844 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008845
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008847
8848 wpalMutexRelease(&pWDICtx->wptMutex);
8849
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 }
8852
8853 /*-----------------------------------------------------------------------
8854 If Post Assoc was not yet received - the current association must
8855 be in progress
8856 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8859 {
8860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8861 "Association sequence for this BSS association no longer in "
8862 "progress - not allowed");
8863
8864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 }
8867
8868 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 -----------------------------------------------------------------------*/
8871 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8872 {
8873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8874 "Post Assoc not allowed before JOIN - failing request");
8875
8876 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 }
8879
8880 wpalMutexRelease(&pWDICtx->wptMutex);
8881
8882 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8883 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8884 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8889 ( usSendSize < (usDataOffset + uMsgSize )))
8890 {
8891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008892 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 }
8897
8898 /*Copy the STA parameters */
8899 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8900 &pwdiPostAssocParams->wdiSTAParams );
8901
8902 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 WDI_STATableFindStaidByAddr(pWDICtx,
8905 pwdiPostAssocParams->wdiSTAParams.macSTA,
8906 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8907 {
8908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008909 MAC_ADDRESS_STR
8910 ": This station does not exist in the WDI Station Table",
8911 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008913 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 }
8916
8917 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 pBSSSes->ucBSSIdx;
8920
8921 /*Copy the BSS parameters */
8922 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8923 &pwdiPostAssocParams->wdiBSSParams);
8924
8925 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_STATableFindStaidByAddr(pWDICtx,
8928 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 {
8931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008932 MAC_ADDRESS_STR
8933 ": This station does not exist in the WDI Station Table",
8934 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008936 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 }
8939
8940 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 pBSSSes->ucBSSIdx;
8943
Jeff Johnsone7245742012-09-05 17:12:55 -07008944
8945 wpalMemoryCopy( pSendBuffer+usDataOffset,
8946 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8947 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008948
8949 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8950
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8952 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8953 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008954
Jeff Johnsone7245742012-09-05 17:12:55 -07008955
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
Jeff Johnsone7245742012-09-05 17:12:55 -07008959
8960 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008963
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308964 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8970
Jeff Johnsone7245742012-09-05 17:12:55 -07008971
Jeff Johnson295189b2012-06-20 16:38:30 -07008972}/*WDI_ProcessPostAssocReq*/
8973
8974/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008977
8978 @param pWDICtx: pointer to the WLAN DAL context
8979 pEventData: pointer to the event information structure
8980
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 @see
8982 @return Result of the function call
8983*/
8984WDI_Status
8985WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008986(
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 WDI_ControlBlockType* pWDICtx,
8988 WDI_EventInfoType* pEventData
8989)
8990{
8991 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8992 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 wpt_uint16 usDataOffset = 0;
8997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9000
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9003
9004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009006 -------------------------------------------------------------------------*/
9007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9008 ( NULL == pEventData->pCBfnc ))
9009 {
9010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 }
9015
9016 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9017 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9018 /*-------------------------------------------------------------------------
9019 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009020 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009021 -------------------------------------------------------------------------*/
9022 wpalMutexAcquire(&pWDICtx->wptMutex);
9023
9024 /*------------------------------------------------------------------------
9025 Find the BSS for which the request is made and identify WDI session
9026 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9028 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 &macBSSID))
9030 {
9031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009032 "This station does not exist in the WDI Station Table %d",
9033 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 }
9037
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9039 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9042 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9043 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009044
9045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 }
9048
9049 /*------------------------------------------------------------------------
9050 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 ------------------------------------------------------------------------*/
9053 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9054 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9056 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9057 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009058
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 }
9063
9064 wpalMutexRelease(&pWDICtx->wptMutex);
9065 /*-----------------------------------------------------------------------
9066 Get message buffer
9067 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 sizeof(halDelStaReqMsg.delStaParams),
9070 &pSendBuffer, &usDataOffset, &usSendSize))||
9071 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9072 {
9073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009074 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 }
9079
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9081 wpalMemoryCopy( pSendBuffer+usDataOffset,
9082 &halDelStaReqMsg.delStaParams,
9083 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009084
9085 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009087
9088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9093
9094}/*WDI_ProcessDelSTAReq*/
9095
9096
9097/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009099==========================================================================*/
9100/**
9101 @brief Process Set BSS Key Request function (called when Main FSM
9102 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009103
9104 @param pWDICtx: pointer to the WLAN DAL context
9105 pEventData: pointer to the event information structure
9106
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 @see
9108 @return Result of the function call
9109*/
9110WDI_Status
9111WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009112(
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 WDI_ControlBlockType* pWDICtx,
9114 WDI_EventInfoType* pEventData
9115)
9116{
9117 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9118 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 wpt_uint16 usDataOffset = 0;
9123 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9126 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309127 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9130
9131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 -------------------------------------------------------------------------*/
9134 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9135 ( NULL == pEventData->pCBfnc ))
9136 {
9137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 }
9142
9143 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9144 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9145 /*-------------------------------------------------------------------------
9146 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009147 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 -------------------------------------------------------------------------*/
9149 wpalMutexAcquire(&pWDICtx->wptMutex);
9150
9151 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9155 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9156 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009157
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 {
9160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9162 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009163
9164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 }
9167
9168 /*------------------------------------------------------------------------
9169 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 ------------------------------------------------------------------------*/
9172 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9173 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9175 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9176 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009177
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 }
9182
9183
9184 wpalMutexRelease(&pWDICtx->wptMutex);
9185 /*-----------------------------------------------------------------------
9186 Get message buffer
9187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9190 &pSendBuffer, &usDataOffset, &usSendSize))||
9191 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9192 {
9193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009194 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 }
9199
9200 /*-----------------------------------------------------------------------
9201 Copy the Key parameters into the HAL message
9202 -----------------------------------------------------------------------*/
9203
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9208
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9211
9212 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9213 keyIndex++)
9214 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9217 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9218 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9219 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9220 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309221
9222 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9223 {
9224 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9225 {
9226 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9227 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9228 }
9229
9230 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9231 {
9232 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9233 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9234 }
9235
9236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9237 "%s: Negated Keys", __func__);
9238 }
9239 else
9240 {
9241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9242 "%s: No change in Keys", __func__);
9243 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309246 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9247 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9248 WDI_MAX_KEY_LENGTH);
9249 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309254 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009255
9256 wpalMemoryCopy( pSendBuffer+usDataOffset,
9257 &halSetBssKeyReqMsg.setBssKeyParams,
9258 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009259
9260 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009262
9263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9267 wdiSetBSSKeyRspCb, pEventData->pUserData,
9268 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009269
9270}/*WDI_ProcessSetBssKeyReq*/
9271
9272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009275
9276 @param pWDICtx: pointer to the WLAN DAL context
9277 pEventData: pointer to the event information structure
9278
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 @see
9280 @return Result of the function call
9281*/
9282WDI_Status
9283WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009284(
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 WDI_ControlBlockType* pWDICtx,
9286 WDI_EventInfoType* pEventData
9287)
9288{
9289 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9290 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 wpt_uint16 usDataOffset = 0;
9295 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9299
9300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 -------------------------------------------------------------------------*/
9303 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9304 ( NULL == pEventData->pCBfnc ))
9305 {
9306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 }
9311
9312 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9313 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9314 /*-------------------------------------------------------------------------
9315 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 -------------------------------------------------------------------------*/
9318 wpalMutexAcquire(&pWDICtx->wptMutex);
9319
9320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9324 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9325 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009326
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 {
9329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9331 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009332
9333 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 }
9336
9337 /*------------------------------------------------------------------------
9338 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 ------------------------------------------------------------------------*/
9341 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9342 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9344 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9345 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009346
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 }
9351
9352
9353 wpalMutexRelease(&pWDICtx->wptMutex);
9354
9355 /*-----------------------------------------------------------------------
9356 Get message buffer
9357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9360 &pSendBuffer, &usDataOffset, &usSendSize))||
9361 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9362 {
9363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009364 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 }
9369 /*-----------------------------------------------------------------------
9370 Copy the Key parameters into the HAL message
9371 -----------------------------------------------------------------------*/
9372 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9373
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9376
9377 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9378
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 wpalMemoryCopy( pSendBuffer+usDataOffset,
9383 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9384 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009388
9389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009395}/*WDI_ProcessRemoveBssKeyReq*/
9396
9397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009400
9401 @param pWDICtx: pointer to the WLAN DAL context
9402 pEventData: pointer to the event information structure
9403
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 @see
9405 @return Result of the function call
9406*/
9407WDI_Status
9408WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009409(
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 WDI_ControlBlockType* pWDICtx,
9411 WDI_EventInfoType* pEventData
9412)
9413{
9414 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9415 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9416 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 wpt_uint16 usDataOffset = 0;
9419 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9424 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309425 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
9427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9428
9429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 -------------------------------------------------------------------------*/
9432 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9433 ( NULL == pEventData->pCBfnc ))
9434 {
9435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 }
9440
9441 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9442 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9443 /*-------------------------------------------------------------------------
9444 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 -------------------------------------------------------------------------*/
9447 wpalMutexAcquire(&pWDICtx->wptMutex);
9448
9449 /*------------------------------------------------------------------------
9450 Find the BSS for which the request is made and identify WDI session
9451 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9453 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 &macBSSID))
9455 {
9456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009457 "This station does not exist in the WDI Station Table %d",
9458 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
9462
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9464 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9467 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9468 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009469
9470 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009473
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 /*------------------------------------------------------------------------
9475 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 ------------------------------------------------------------------------*/
9478 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9479 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9481 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9482 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 }
9488
9489
9490 wpalMutexRelease(&pWDICtx->wptMutex);
9491 /*-----------------------------------------------------------------------
9492 Get message buffer
9493 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9496 &pSendBuffer, &usDataOffset, &usSendSize))||
9497 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9498 {
9499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009500 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 }
9505 /*-----------------------------------------------------------------------
9506 Copy the STA Key parameters into the HAL message
9507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9510
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9513
9514 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9515
9516 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9517
9518 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9519
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9521 keyIndex++)
9522 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9525 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9526 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9527 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9528 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309529
9530 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9531 {
9532 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9533 {
9534 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9535 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9536 }
9537
9538 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9539 {
9540 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9541 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9542 }
9543
9544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9545 "%s: Negated Keys", __func__);
9546 }
9547 else
9548 {
9549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9550 "%s: No change in Keys", __func__);
9551 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309554 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9555 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9556 WDI_MAX_KEY_LENGTH);
9557 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309562 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009563
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 wpalMemoryCopy( pSendBuffer+usDataOffset,
9565 &halSetStaKeyReqMsg.setStaKeyParams,
9566 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009567
9568 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309570 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9575 wdiSetSTAKeyRspCb, pEventData->pUserData,
9576 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009577
9578}/*WDI_ProcessSetSTAKeyReq*/
9579
9580/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009583
9584 @param pWDICtx: pointer to the WLAN DAL context
9585 pEventData: pointer to the event information structure
9586
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 @see
9588 @return Result of the function call
9589*/
9590WDI_Status
9591WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009592(
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 WDI_ControlBlockType* pWDICtx,
9594 WDI_EventInfoType* pEventData
9595)
9596{
9597 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9598 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9599 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 wpt_uint16 usDataOffset = 0;
9602 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 wpt_macAddr macBSSID;
9605 wpt_uint8 ucCurrentBSSSesIdx;
9606 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9608
9609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 -------------------------------------------------------------------------*/
9612 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9613 ( NULL == pEventData->pCBfnc ))
9614 {
9615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 }
9620
9621 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9622 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9623 /*-------------------------------------------------------------------------
9624 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 -------------------------------------------------------------------------*/
9627 wpalMutexAcquire(&pWDICtx->wptMutex);
9628
9629 /*------------------------------------------------------------------------
9630 Find the BSS for which the request is made and identify WDI session
9631 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9633 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 &macBSSID))
9635 {
9636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009637 "This station does not exist in the WDI Station Table %d",
9638 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 }
9642
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9644 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9647 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9648 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009649
9650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009653
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 /*------------------------------------------------------------------------
9655 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 ------------------------------------------------------------------------*/
9658 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9659 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9661 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9662 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009663
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 }
9668
9669
9670
9671 wpalMutexRelease(&pWDICtx->wptMutex);
9672 /*-----------------------------------------------------------------------
9673 Get message buffer
9674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9677 &pSendBuffer, &usDataOffset, &usSendSize))||
9678 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9679 {
9680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009681 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 }
9686
9687 /*-----------------------------------------------------------------------
9688 Copy the Key parameters into the HAL message
9689 -----------------------------------------------------------------------*/
9690
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9693
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9696
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9699
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9702
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 wpalMemoryCopy( pSendBuffer+usDataOffset,
9704 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9705 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009706
9707 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009709
9710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009716
9717}/*WDI_ProcessRemoveSTAKeyReq*/
9718
9719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009722
9723 @param pWDICtx: pointer to the WLAN DAL context
9724 pEventData: pointer to the event information structure
9725
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 @see
9727 @return Result of the function call
9728*/
9729WDI_Status
9730WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009731(
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 WDI_ControlBlockType* pWDICtx,
9733 WDI_EventInfoType* pEventData
9734)
9735{
9736 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9737 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9738 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 wpt_uint16 usDataOffset = 0;
9741 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9746 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309747 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009748
9749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9750
9751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 -------------------------------------------------------------------------*/
9754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9755 ( NULL == pEventData->pCBfnc ))
9756 {
9757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 }
9762
9763 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9764 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9765 /*-------------------------------------------------------------------------
9766 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 -------------------------------------------------------------------------*/
9769 wpalMutexAcquire(&pWDICtx->wptMutex);
9770
9771 /*------------------------------------------------------------------------
9772 Find the BSS for which the request is made and identify WDI session
9773 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9775 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 &macBSSID))
9777 {
9778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009779 "This station does not exist in the WDI Station Table %d",
9780 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 }
9784
Jeff Johnsone7245742012-09-05 17:12:55 -07009785 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9786 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 {
9788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009789 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009795
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 /*------------------------------------------------------------------------
9797 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 ------------------------------------------------------------------------*/
9800 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9801 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9803 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9804 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009805
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
9810
9811
9812 wpalMutexRelease(&pWDICtx->wptMutex);
9813 /*-----------------------------------------------------------------------
9814 Get message buffer
9815 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9818 &pSendBuffer, &usDataOffset, &usSendSize))||
9819 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9820 {
9821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009822 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 }
9827 /*-----------------------------------------------------------------------
9828 Copy the STA Key parameters into the HAL message
9829 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9832
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9835
9836 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9837
9838 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9839
9840 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9841
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9843 keyIndex++)
9844 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9847 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9848 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9849 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9850 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309851
9852 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9853 {
9854 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9855 {
9856 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9857 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9858 }
9859
9860 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9861 {
9862 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9863 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9864 }
9865
9866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9867 "%s: Negated Keys", __func__);
9868 }
9869 else
9870 {
9871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9872 "%s: No change in Keys", __func__);
9873 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309876 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9877 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9878 WDI_MAX_KEY_LENGTH);
9879 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309884 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 wpalMemoryCopy( pSendBuffer+usDataOffset,
9886 &halSetStaKeyReqMsg.setStaKeyParams,
9887 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009888
9889 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009891
9892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9896 wdiSetSTAKeyRspCb, pEventData->pUserData,
9897 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009898
9899}/*WDI_ProcessSetSTABcastKeyReq*/
9900
9901/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009904
9905 @param pWDICtx: pointer to the WLAN DAL context
9906 pEventData: pointer to the event information structure
9907
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 @see
9909 @return Result of the function call
9910*/
9911WDI_Status
9912WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009913(
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 WDI_ControlBlockType* pWDICtx,
9915 WDI_EventInfoType* pEventData
9916)
9917{
9918 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9919 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9920 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 wpt_uint16 usDataOffset = 0;
9923 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 wpt_macAddr macBSSID;
9926 wpt_uint8 ucCurrentBSSSesIdx;
9927 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9929
9930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -------------------------------------------------------------------------*/
9933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9934 ( NULL == pEventData->pCBfnc ))
9935 {
9936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 }
9941
9942 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9943 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9944 /*-------------------------------------------------------------------------
9945 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 -------------------------------------------------------------------------*/
9948 wpalMutexAcquire(&pWDICtx->wptMutex);
9949
9950 /*------------------------------------------------------------------------
9951 Find the BSS for which the request is made and identify WDI session
9952 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9954 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 &macBSSID))
9956 {
9957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009958 "This station does not exist in the WDI Station Table %d",
9959 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 }
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9965 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9968 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9969 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009970
9971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009974
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 /*------------------------------------------------------------------------
9976 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 ------------------------------------------------------------------------*/
9979 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9980 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9982 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9983 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 }
9989
9990
9991
9992 wpalMutexRelease(&pWDICtx->wptMutex);
9993 /*-----------------------------------------------------------------------
9994 Get message buffer
9995 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9998 &pSendBuffer, &usDataOffset, &usSendSize))||
9999 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10000 {
10001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010002 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 }
10007
10008 /*-----------------------------------------------------------------------
10009 Copy the Key parameters into the HAL message
10010 -----------------------------------------------------------------------*/
10011
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10014
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10017
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10023
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 wpalMemoryCopy( pSendBuffer+usDataOffset,
10025 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10026 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010027
10028 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010030
10031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010037
10038}/*WDI_ProcessRemoveSTABcastKeyReq*/
10039
10040/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010042==========================================================================*/
10043/**
10044 @brief Process Add TSpec Request function (called when Main FSM
10045 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010046
10047 @param pWDICtx: pointer to the WLAN DAL context
10048 pEventData: pointer to the event information structure
10049
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 @see
10051 @return Result of the function call
10052*/
10053WDI_Status
10054WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010055(
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 WDI_ControlBlockType* pWDICtx,
10057 WDI_EventInfoType* pEventData
10058)
10059{
10060 WDI_AddTSReqParamsType* pwdiAddTSParams;
10061 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 wpt_uint16 usDataOffset = 0;
10066 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 wpt_macAddr macBSSID;
10069 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010070
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10072
10073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 -------------------------------------------------------------------------*/
10076 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10077 ( NULL == pEventData->pCBfnc ))
10078 {
10079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 }
10084
10085 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10086 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10087 /*-------------------------------------------------------------------------
10088 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 -------------------------------------------------------------------------*/
10091 wpalMutexAcquire(&pWDICtx->wptMutex);
10092
10093 /*------------------------------------------------------------------------
10094 Find the BSS for which the request is made and identify WDI session
10095 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10097 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 &macBSSID))
10099 {
10100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010101 "This station does not exist in the WDI Station Table %d",
10102 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 }
10106
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10108 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10111 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10112 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010113
10114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010117
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 /*------------------------------------------------------------------------
10119 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 ------------------------------------------------------------------------*/
10122 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10123 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10125 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10126 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010127
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 }
10132
10133 wpalMutexRelease(&pWDICtx->wptMutex);
10134 /*-----------------------------------------------------------------------
10135 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10139 sizeof(halAddTsParams),
10140 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 &usSendSize))||
10142 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10143 {
10144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010145 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 }
10150
10151 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10152 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10153
10154 //TSPEC IE
10155 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10156 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10187
10188 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010198 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10203
10204 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10209
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 wpalMemoryCopy( pSendBuffer+usDataOffset,
10211 &halAddTsParams,
10212 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010213
10214 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010216
10217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010223}/*WDI_ProcessAddTSpecReq*/
10224
10225
10226/**
10227 @brief Process Del TSpec Request function (called when Main FSM
10228 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010229
10230 @param pWDICtx: pointer to the WLAN DAL context
10231 pEventData: pointer to the event information structure
10232
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 @see
10234 @return Result of the function call
10235*/
10236WDI_Status
10237WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010238(
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 WDI_ControlBlockType* pWDICtx,
10240 WDI_EventInfoType* pEventData
10241)
10242{
10243 WDI_DelTSReqParamsType* pwdiDelTSParams;
10244 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 wpt_uint16 usDataOffset = 0;
10249 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10252
10253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 -------------------------------------------------------------------------*/
10256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10257 ( NULL == pEventData->pCBfnc ))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 }
10264
10265 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10266 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10267
10268 /*-------------------------------------------------------------------------
10269 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 -------------------------------------------------------------------------*/
10272 wpalMutexAcquire(&pWDICtx->wptMutex);
10273
10274 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10278 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10279 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010280
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10284 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10285 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10286
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 }
10290
10291 /*------------------------------------------------------------------------
10292 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 ------------------------------------------------------------------------*/
10295 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10296 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10298 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10299 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010300
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 }
10305
10306
10307 wpalMutexRelease(&pWDICtx->wptMutex);
10308 /*-----------------------------------------------------------------------
10309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10314 &pSendBuffer, &usDataOffset, &usSendSize))||
10315 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10316 {
10317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010318 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 }
10323
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 wpalMemoryCopy( pSendBuffer+usDataOffset,
10325 &pwdiDelTSParams->wdiDelTSInfo,
10326 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010327
10328 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010330
10331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10335 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010336}/*WDI_ProcessDelTSpecReq*/
10337
10338/**
10339 @brief Process Update EDCA Params Request function (called when
10340 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010341
10342 @param pWDICtx: pointer to the WLAN DAL context
10343 pEventData: pointer to the event information structure
10344
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 @see
10346 @return Result of the function call
10347*/
10348WDI_Status
10349WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010350(
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 WDI_ControlBlockType* pWDICtx,
10352 WDI_EventInfoType* pEventData
10353)
10354{
10355 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10356 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 wpt_uint16 usDataOffset = 0;
10361 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10364
10365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 -------------------------------------------------------------------------*/
10368 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10369 ( NULL == pEventData->pCBfnc ))
10370 {
10371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 }
10376
10377 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10378 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10379 /*-------------------------------------------------------------------------
10380 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 -------------------------------------------------------------------------*/
10383 wpalMutexAcquire(&pWDICtx->wptMutex);
10384
10385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10389 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10390 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 {
10394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10396 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010397
10398 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 }
10401
10402 /*------------------------------------------------------------------------
10403 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 ------------------------------------------------------------------------*/
10406 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10407 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10409 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10410 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010415 }
10416
10417
10418 wpalMutexRelease(&pWDICtx->wptMutex);
10419 /*-----------------------------------------------------------------------
10420 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10425 &pSendBuffer, &usDataOffset, &usSendSize))||
10426 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10427 {
10428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010429 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 }
10434
Jeff Johnsone7245742012-09-05 17:12:55 -070010435 wpalMemoryCopy( pSendBuffer+usDataOffset,
10436 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10437 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010438
10439 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010441
10442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10446 wdiUpdateEDCARspCb, pEventData->pUserData,
10447 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010448}/*WDI_ProcessUpdateEDCAParamsReq*/
10449
10450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010453
10454 @param pWDICtx: pointer to the WLAN DAL context
10455 pEventData: pointer to the event information structure
10456
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 @see
10458 @return Result of the function call
10459*/
10460WDI_Status
10461WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010462(
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 WDI_ControlBlockType* pWDICtx,
10464 WDI_EventInfoType* pEventData
10465)
10466{
10467 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10468 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 wpt_uint16 usDataOffset = 0;
10473 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 wpt_macAddr macBSSID;
10476
10477 tAddBASessionReqMsg halAddBASessionReq;
10478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10479
10480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 -------------------------------------------------------------------------*/
10483 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10484 ( NULL == pEventData->pCBfnc ))
10485 {
10486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 }
10491
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10496 /*-------------------------------------------------------------------------
10497 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010498 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010499 -------------------------------------------------------------------------*/
10500 wpalMutexAcquire(&pWDICtx->wptMutex);
10501
10502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10506 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 &macBSSID))
10508 {
10509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010510 "This station does not exist in the WDI Station Table %d",
10511 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010514 }
10515
10516
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010518
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10522 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10523 __func__, MAC_ADDR_ARRAY(macBSSID));
10524
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 }
10528
10529 /*------------------------------------------------------------------------
10530 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010532 ------------------------------------------------------------------------*/
10533 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10534 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10536 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10537 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010538
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 }
10543
10544
10545 wpalMutexRelease(&pWDICtx->wptMutex);
10546 /*-----------------------------------------------------------------------
10547 Get message buffer
10548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10550 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 sizeof(halAddBASessionReq.addBASessionParams),
10552 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10555 {
10556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010557 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 }
10562
10563 halAddBASessionReq.addBASessionParams.staIdx =
10564 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10565 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10566 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10567 WDI_MAC_ADDR_LEN);
10568 halAddBASessionReq.addBASessionParams.baTID =
10569 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10570 halAddBASessionReq.addBASessionParams.baPolicy =
10571 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10572 halAddBASessionReq.addBASessionParams.baBufferSize =
10573 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10574 halAddBASessionReq.addBASessionParams.baTimeout =
10575 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10576 halAddBASessionReq.addBASessionParams.baSSN =
10577 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10578 halAddBASessionReq.addBASessionParams.baDirection =
10579 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10580
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 wpalMemoryCopy( pSendBuffer+usDataOffset,
10582 &halAddBASessionReq.addBASessionParams,
10583 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010584
10585 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010587
10588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10592 wdiAddBASessionRspCb, pEventData->pUserData,
10593 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010594}/*WDI_ProcessAddBASessionReq*/
10595
10596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010599
10600 @param pWDICtx: pointer to the WLAN DAL context
10601 pEventData: pointer to the event information structure
10602
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 @see
10604 @return Result of the function call
10605*/
10606WDI_Status
10607WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010608(
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 WDI_ControlBlockType* pWDICtx,
10610 WDI_EventInfoType* pEventData
10611)
10612{
10613 WDI_DelBAReqParamsType* pwdiDelBAParams;
10614 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 wpt_uint16 usDataOffset = 0;
10619 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 wpt_macAddr macBSSID;
10622 tDelBAParams halDelBAparam;
10623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10624
10625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 -------------------------------------------------------------------------*/
10628 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10629 ( NULL == pEventData->pCBfnc ))
10630 {
10631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 }
10636
10637 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10638 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10639 /*-------------------------------------------------------------------------
10640 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 -------------------------------------------------------------------------*/
10643 wpalMutexAcquire(&pWDICtx->wptMutex);
10644
10645 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10649 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 &macBSSID))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010653 "This station does not exist in the WDI Station Table %d",
10654 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 }
10658
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010660
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010662 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10664 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10665 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010666
10667 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 }
10670
10671 /*------------------------------------------------------------------------
10672 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 ------------------------------------------------------------------------*/
10675 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10676 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10678 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10679 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010680
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 }
10685
10686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010688 sizeof(halDelBAparam),
10689 &pSendBuffer, &usDataOffset, &usSendSize))||
10690 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10691 {
10692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010693 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 }
10698
10699 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10700 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10701 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10702
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 wpalMemoryCopy( pSendBuffer+usDataOffset,
10704 &halDelBAparam,
10705 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010706
10707 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709
10710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10714 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010715}/*WDI_ProcessDelBAReq*/
10716
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010717#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010718
10719WDI_Status
10720WDI_ProcessTSMStatsReq
10721(
10722 WDI_ControlBlockType* pWDICtx,
10723 WDI_EventInfoType* pEventData
10724)
10725{
10726 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10727 WDI_TsmRspCb wdiTSMRspCb;
10728 wpt_uint8 ucCurrentBSSSesIdx = 0;
10729 WDI_BSSSessionType* pBSSSes = NULL;
10730 wpt_uint8* pSendBuffer = NULL;
10731 wpt_uint16 usDataOffset = 0;
10732 wpt_uint16 usSendSize = 0;
10733 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10734 tTsmStatsParams halTsmStatsReqParams = {0};
10735
10736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10737
10738 /*-------------------------------------------------------------------------
10739 Sanity check
10740 -------------------------------------------------------------------------*/
10741 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10742 ( NULL == pEventData->pCBfnc ))
10743 {
10744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 WDI_ASSERT(0);
10747 return WDI_STATUS_E_FAILURE;
10748 }
10749
10750 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10751 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10752 /*-------------------------------------------------------------------------
10753 Check to see if we are in the middle of an association, if so queue, if
10754 not it means it is free to process request
10755 -------------------------------------------------------------------------*/
10756 wpalMutexAcquire(&pWDICtx->wptMutex);
10757
10758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10759 if ( NULL == pBSSSes )
10760 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10762 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10763 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010764
10765 wpalMutexRelease(&pWDICtx->wptMutex);
10766 return WDI_STATUS_E_NOT_ALLOWED;
10767 }
10768
10769 /*------------------------------------------------------------------------
10770 Check if this BSS is being currently processed or queued,
10771 if queued - queue the new request as well
10772 ------------------------------------------------------------------------*/
10773 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10774 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010776 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010778
10779 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10780 wpalMutexRelease(&pWDICtx->wptMutex);
10781 return wdiStatus;
10782 }
10783
10784 wpalMutexRelease(&pWDICtx->wptMutex);
10785 /*-----------------------------------------------------------------------
10786 Get message buffer
10787 ! TO DO : proper conversion into the HAL Message Request Format
10788 -----------------------------------------------------------------------*/
10789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10790 sizeof(halTsmStatsReqParams),
10791 &pSendBuffer, &usDataOffset, &usSendSize))||
10792 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010795 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 pEventData, pwdiTSMParams, wdiTSMRspCb);
10797 WDI_ASSERT(0);
10798 return WDI_STATUS_E_FAILURE;
10799 }
10800
10801 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10802 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10803 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10804 WDI_MAC_ADDR_LEN);
10805 wpalMemoryCopy( pSendBuffer+usDataOffset,
10806 &halTsmStatsReqParams,
10807 sizeof(halTsmStatsReqParams));
10808
10809 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10810 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10811
10812 /*-------------------------------------------------------------------------
10813 Send TSM Stats Request to HAL
10814 -------------------------------------------------------------------------*/
10815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10816 wdiTSMRspCb, pEventData->pUserData,
10817 WDI_TSM_STATS_RESP);
10818}/*WDI_ProcessTSMStatsReq*/
10819
10820#endif
10821
10822
10823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010826
10827 @param pWDICtx: pointer to the WLAN DAL context
10828 pEventData: pointer to the event information structure
10829
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 @see
10831 @return Result of the function call
10832*/
10833WDI_Status
10834WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010835(
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 WDI_ControlBlockType* pWDICtx,
10837 WDI_EventInfoType* pEventData
10838)
10839{
10840 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10841 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 wpt_uint16 usDataOffset = 0;
10844 wpt_uint16 usSendSize = 0;
10845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10846
10847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 -------------------------------------------------------------------------*/
10850 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10851 ( NULL == pEventData->pCBfnc ))
10852 {
10853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 }
10858
10859 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10860 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10861 /*-----------------------------------------------------------------------
10862 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10867 &pSendBuffer, &usDataOffset, &usSendSize))||
10868 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10869 {
10870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010871 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010875 }
10876
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 wpalMemoryCopy( pSendBuffer+usDataOffset,
10878 &pwdiFlushAcParams->wdiFlushAcInfo,
10879 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010883
10884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010886 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10888 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010889}/*WDI_ProcessFlushAcReq*/
10890
10891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010894
10895 @param pWDICtx: pointer to the WLAN DAL context
10896 pEventData: pointer to the event information structure
10897
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 @see
10899 @return Result of the function call
10900*/
10901WDI_Status
10902WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010903(
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 WDI_ControlBlockType* pWDICtx,
10905 WDI_EventInfoType* pEventData
10906)
10907{
10908 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10909 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 wpt_uint16 usDataOffset = 0;
10912 wpt_uint16 usSendSize = 0;
10913
10914 tBtAmpEventMsg haltBtAmpEventMsg;
10915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10916
10917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 -------------------------------------------------------------------------*/
10920 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10921 ( NULL == pEventData->pCBfnc ))
10922 {
10923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 }
10928
10929 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10930 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10931 /*-----------------------------------------------------------------------
10932 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10937 &pSendBuffer, &usDataOffset, &usSendSize))||
10938 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10939 {
10940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010941 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 }
10946
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 wpalMemoryCopy( pSendBuffer+usDataOffset,
10950 &haltBtAmpEventMsg.btAmpEventParams,
10951 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010952
10953 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010955
10956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10960 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010961}/*WDI_ProcessBtAmpEventReq*/
10962
10963/**
10964 @brief Process Add STA self Request function (called when Main FSM
10965 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010966
10967 @param pWDICtx: pointer to the WLAN DAL context
10968 pEventData: pointer to the event information structure
10969
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 @see
10971 @return Result of the function call
10972*/
10973WDI_Status
10974WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010975(
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 WDI_ControlBlockType* pWDICtx,
10977 WDI_EventInfoType* pEventData
10978)
10979{
10980 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10981 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 wpt_uint16 usDataOffset = 0;
10984 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010985 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10987
10988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 -------------------------------------------------------------------------*/
10991 if (( NULL == pEventData ) ||
10992 ( NULL == pEventData->pEventData) ||
10993 ( NULL == pEventData->pCBfnc))
10994 {
10995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 }
11000
Jeff Johnsone7245742012-09-05 17:12:55 -070011001 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011002 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11005 /*-----------------------------------------------------------------------
11006 Get message buffer
11007 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11009 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011010 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011011 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011012 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 {
11014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011015 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 }
11020
11021 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11024
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011026 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11027 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11028 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11029 {
11030 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11031 }
11032 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11033 VOS_P2P_CLIENT_MODE) ||
11034 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11035 VOS_P2P_DEVICE))
11036 {
11037 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11038 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011040 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011041
11042 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011044
11045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11049 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11050 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011051}/*WDI_ProcessAddSTASelfReq*/
11052
11053
11054
11055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011058
11059 @param pWDICtx: pointer to the WLAN DAL context
11060 pEventData: pointer to the event information structure
11061
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 @see
11063 @return Result of the function call
11064*/
11065WDI_Status
11066WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011067(
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 WDI_ControlBlockType* pWDICtx,
11069 WDI_EventInfoType* pEventData
11070)
11071{
11072 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11073 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 wpt_uint16 usDataOffset = 0;
11076 wpt_uint16 usSendSize = 0;
11077 tDelStaSelfParams halSetDelSelfSTAParams;
11078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11079
11080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 -------------------------------------------------------------------------*/
11083 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11084 ( NULL == pEventData->pCBfnc ))
11085 {
11086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 }
11091
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11094 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11095
11096 /*-----------------------------------------------------------------------
11097 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11102 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11105 {
11106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011107 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 }
11112
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11115
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11117 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011118
11119 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121
11122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11126 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 WDI_DEL_STA_SELF_RESP);
11128
11129}
11130
Jeff Johnsone7245742012-09-05 17:12:55 -070011131#ifdef FEATURE_OEM_DATA_SUPPORT
11132/**
11133 @brief Process Start Oem Data Request function (called when Main
11134 FSM allows it)
11135
11136 @param pWDICtx: pointer to the WLAN DAL context
11137 pEventData: pointer to the event information structure
11138
11139 @see
11140 @return Result of the function call
11141*/
11142WDI_Status
11143WDI_ProcessStartOemDataReq
11144(
11145 WDI_ControlBlockType* pWDICtx,
11146 WDI_EventInfoType* pEventData
11147)
11148{
11149 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11150 WDI_oemDataRspCb wdiOemDataRspCb;
11151 wpt_uint8* pSendBuffer = NULL;
11152 wpt_uint16 usDataOffset = 0;
11153 wpt_uint16 usSendSize = 0;
11154 wpt_uint16 reqLen;
11155 tStartOemDataReqParams* halStartOemDataReqParams;
11156
11157 /*-------------------------------------------------------------------------
11158 Sanity check
11159 -------------------------------------------------------------------------*/
11160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11161 ( NULL == pEventData->pCBfnc ))
11162 {
11163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011164 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 WDI_ASSERT(0);
11166 return WDI_STATUS_E_FAILURE;
11167 }
11168
11169 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11170 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11171
11172 /*-----------------------------------------------------------------------
11173 Get message buffer
11174 -----------------------------------------------------------------------*/
11175
11176 reqLen = sizeof(tStartOemDataReqParams);
11177
11178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11179 WDI_START_OEM_DATA_REQ, reqLen,
11180 &pSendBuffer, &usDataOffset, &usSendSize))||
11181 (usSendSize < (usDataOffset + reqLen)))
11182 {
11183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011184 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11186 WDI_ASSERT(0);
11187 return WDI_STATUS_E_FAILURE;
11188 }
11189
11190 //copying WDI OEM DATA REQ PARAMS to shared memory
11191 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11192
11193 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11194 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11195
11196 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11197 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11198
11199 /*-------------------------------------------------------------------------
11200 Send Start Request to HAL
11201 -------------------------------------------------------------------------*/
11202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11203 wdiOemDataRspCb, pEventData->pUserData,
11204 WDI_START_OEM_DATA_RESP);
11205}/*WDI_ProcessStartOemDataReq*/
11206#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011207
11208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011211
11212 @param pWDICtx: pointer to the WLAN DAL context
11213 pEventData: pointer to the event information structure
11214
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 @see
11216 @return Result of the function call
11217*/
11218WDI_Status
11219WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011220(
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 WDI_ControlBlockType* pWDICtx,
11222 WDI_EventInfoType* pEventData
11223)
11224{
11225 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11226 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 wpt_uint16 usDataOffset = 0;
11229 wpt_uint16 usSendSize = 0;
11230 tHalWlanHostResumeReqParam halResumeReqParams;
11231
11232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11233
11234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 -------------------------------------------------------------------------*/
11237 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11238 ( NULL == pEventData->pCBfnc ))
11239 {
11240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011241 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 }
11245
11246 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11247 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11248
11249 /*-----------------------------------------------------------------------
11250 Get message buffer
11251 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011253 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11254 &pSendBuffer, &usDataOffset, &usSendSize))||
11255 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11256 {
11257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011258 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 }
11263
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011266
11267 wpalMemoryCopy( pSendBuffer+usDataOffset,
11268 &halResumeReqParams,
11269 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011270
11271 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011273
11274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11278 wdiHostResumeRspCb, pEventData->pUserData,
11279 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011280}/*WDI_ProcessHostResumeReq*/
11281
11282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011285
11286 @param pWDICtx: pointer to the WLAN DAL context
11287 pEventData: pointer to the event information structure
11288
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 @see
11290 @return Result of the function call
11291*/
11292WDI_Status
11293WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011294(
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 WDI_ControlBlockType* pWDICtx,
11296 WDI_EventInfoType* pEventData
11297)
11298{
11299 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11300 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 wpt_uint16 usDataOffset = 0;
11303 wpt_uint16 usSendSize = 0;
11304 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11306
11307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 -------------------------------------------------------------------------*/
11310 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11311 ( NULL == pEventData->pCBfnc ))
11312 {
11313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011314 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 }
11318
11319 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11320 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011321
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 /*-----------------------------------------------------------------------
11323 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 sizeof(halTxPerTrackingReqParam),
11328 &pSendBuffer, &usDataOffset, &usSendSize))||
11329 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11330 {
11331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011332 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011337
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11339 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11340 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11341 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011342
11343 wpalMemoryCopy( pSendBuffer+usDataOffset,
11344 &halTxPerTrackingReqParam,
11345 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011346
11347 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011349
11350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11354 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011355}/*WDI_ProcessSetTxPerTrackingReq*/
11356
11357/*=========================================================================
11358 Indications
11359=========================================================================*/
11360
11361/**
11362 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011363
11364 @param pWDICtx: pointer to the WLAN DAL context
11365 pEventData: pointer to the event information structure
11366
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 @see
11368 @return Result of the function call
11369*/
11370WDI_Status
11371WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011372(
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 WDI_ControlBlockType* pWDICtx,
11374 WDI_EventInfoType* pEventData
11375)
11376{
11377 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011379 wpt_uint16 usDataOffset = 0;
11380 wpt_uint16 usSendSize = 0;
11381 WDI_Status wdiStatus;
11382 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11384
11385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 -------------------------------------------------------------------------*/
11388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11389 {
11390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011391 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 }
11395
11396 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11397
11398 /*-----------------------------------------------------------------------
11399 Get message buffer
11400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11402 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 sizeof(halWlanSuspendIndparams),
11404 &pSendBuffer, &usDataOffset, &usSendSize))||
11405 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11406 {
11407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11408 "Unable to get send buffer in Suspend Ind ");
11409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 }
11412
11413 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11414 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11415
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011417 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11420 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011421
11422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -------------------------------------------------------------------------*/
11425 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011427
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11430}/*WDI_ProcessHostSuspendInd*/
11431
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011432
11433
11434/**
11435 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11436
11437 @param pWDICtx: pointer to the WLAN DAL context
11438 pEventData: pointer to the event information structure
11439
11440 @see
11441 @return Result of the function call
11442*/
11443WDI_Status
11444WDI_ProcessTrafficStatsInd
11445(
11446 WDI_ControlBlockType* pWDICtx,
11447 WDI_EventInfoType* pEventData
11448)
11449{
11450 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11451 wpt_uint8* pSendBuffer = NULL;
11452 wpt_uint16 usDataOffset = 0;
11453 wpt_uint16 usSendSize = 0;
11454 WDI_Status wdiStatus;
11455 tStatsClassBIndParams* pStatsClassBIndParams;
11456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11457
11458 /*-------------------------------------------------------------------------
11459 Sanity check
11460 -------------------------------------------------------------------------*/
11461 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11462 {
11463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11464 "%s: Invalid parameters in Traffic Stats ind",__func__);
11465 WDI_ASSERT(0);
11466 return WDI_STATUS_E_FAILURE;
11467 }
11468
11469 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11470
11471 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11472 {
11473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11474 "%s: Invalid parameters in Traffic Stats ind",__func__);
11475 WDI_ASSERT(0);
11476 return WDI_STATUS_E_FAILURE;
11477 }
11478
11479 /*-----------------------------------------------------------------------
11480 Get message buffer
11481 -----------------------------------------------------------------------*/
11482 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11483 WDI_TRAFFIC_STATS_IND,
11484 sizeof(tStatsClassBIndParams),
11485 &pSendBuffer, &usDataOffset, &usSendSize))||
11486 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11487 {
11488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11489 "Unable to get send buffer in Traffic Stats Ind ");
11490 WDI_ASSERT(0);
11491 return WDI_STATUS_E_FAILURE;
11492 }
11493
11494 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11495
11496 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11497
11498 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11499 pTrafficStatsIndParams->pTrafficStats,
11500 pTrafficStatsIndParams->length);
11501
11502 /*-------------------------------------------------------------------------
11503 Send Suspend Request to HAL
11504 -------------------------------------------------------------------------*/
11505 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11506 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11507
11508 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11509 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11510}/*WDI_ProcessTrafficStatsInd*/
11511
Chet Lanctot186b5732013-03-18 10:26:30 -070011512#ifdef WLAN_FEATURE_11W
11513/**
11514 @brief Process Exclude Unencrypted Indications function (called
11515 when Main FSM allows it)
11516
11517 @param pWDICtx: pointer to the WLAN DAL context
11518 pEventData: pointer to the event information structure
11519
11520 @see
11521 @return Result of the function call
11522*/
11523WDI_Status
11524WDI_ProcessExcludeUnencryptInd
11525(
11526 WDI_ControlBlockType* pWDICtx,
11527 WDI_EventInfoType* pEventData
11528)
11529{
11530 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11531 wpt_uint8* pSendBuffer = NULL;
11532 wpt_uint16 usDataOffset = 0;
11533 wpt_uint16 usSendSize = 0;
11534 WDI_Status wdiStatus;
11535 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11537
11538 /*-------------------------------------------------------------------------
11539 Sanity check
11540 -------------------------------------------------------------------------*/
11541 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11542 {
11543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11544 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11545 WDI_ASSERT(0);
11546 return WDI_STATUS_E_FAILURE;
11547 }
11548
11549 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11550
11551 /*-----------------------------------------------------------------------
11552 Get message buffer
11553 -----------------------------------------------------------------------*/
11554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11555 WDI_EXCLUDE_UNENCRYPTED_IND,
11556 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11557 &pSendBuffer, &usDataOffset, &usSendSize))||
11558 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11559 {
11560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11561 "Unable to get send buffer in Exclude Unencrypted Ind ");
11562 WDI_ASSERT(0);
11563 return WDI_STATUS_E_FAILURE;
11564 }
11565
11566 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11567
11568 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11569
11570 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11571 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11572
11573 /*-------------------------------------------------------------------------
11574 Send Suspend Request to HAL
11575 -------------------------------------------------------------------------*/
11576 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11577 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11578
11579 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11580 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11581}/*WDI_ProcessExcludeUnencryptInd*/
11582#endif
11583
Yue Mab9c86f42013-08-14 15:59:08 -070011584/**
11585 @brief Process Add Periodic Tx Pattern Indication function (called when
11586 Main FSM allows it)
11587
11588 @param pWDICtx: pointer to the WLAN DAL context
11589 pEventData: pointer to the event information structure
11590
11591 @see
11592 @return Result of the function call
11593*/
11594WDI_Status
11595WDI_ProcessAddPeriodicTxPtrnInd
11596(
11597 WDI_ControlBlockType* pWDICtx,
11598 WDI_EventInfoType* pEventData
11599)
11600{
11601 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11602 wpt_uint8* pSendBuffer = NULL;
11603 wpt_uint16 usDataOffset = 0;
11604 wpt_uint16 usSendSize = 0;
11605 WDI_Status wdiStatus;
11606 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11607 wpt_uint8 selfStaIdx = 0;
11608
11609 /*-------------------------------------------------------------------------
11610 Sanity check
11611 -------------------------------------------------------------------------*/
11612 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11613 {
11614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11615 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11616 WDI_ASSERT(0);
11617 return WDI_STATUS_E_FAILURE;
11618 }
11619
11620 pAddPeriodicTxPtrnParams =
11621 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11622
11623 /*------------------------------------------------------------------------
11624 Get message buffer
11625 ------------------------------------------------------------------------*/
11626 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11627 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11628 &pSendBuffer, &usDataOffset, &usSendSize))||
11629 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11630 {
11631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11632 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11633 __func__);
11634 WDI_ASSERT(0);
11635 return WDI_STATUS_E_FAILURE;
11636 }
11637
11638 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11639
11640 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11641 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11642 &selfStaIdx))
11643 {
11644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11645 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011646 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011647
11648 return WDI_STATUS_E_FAILURE;
11649 }
11650
11651 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11652 halAddPeriodicTxPtrn->ucPtrnId =
11653 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11654 halAddPeriodicTxPtrn->usPtrnSize =
11655 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11656 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11657 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11658
11659 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11660 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11661 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11662
11663 /*-------------------------------------------------------------------------
11664 Send Indication to HAL
11665 -------------------------------------------------------------------------*/
11666 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11667 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11668
11669 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11670
11671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11672 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11673
11674 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11675} /* WDI_ProcessAddPeriodicTxPtrnInd */
11676
11677/**
11678 @brief Process Delete Periodic Tx Pattern Indication function (called when
11679 Main FSM allows it)
11680
11681 @param pWDICtx: pointer to the WLAN DAL context
11682 pEventData: pointer to the event information structure
11683
11684 @see
11685 @return Result of the function call
11686*/
11687WDI_Status
11688WDI_ProcessDelPeriodicTxPtrnInd
11689(
11690 WDI_ControlBlockType* pWDICtx,
11691 WDI_EventInfoType* pEventData
11692)
11693{
11694 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11695 wpt_uint8* pSendBuffer = NULL;
11696 wpt_uint16 usDataOffset = 0;
11697 wpt_uint16 usSendSize = 0;
11698 WDI_Status wdiStatus;
11699 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11700 wpt_uint8 selfStaIdx = 0;
11701
11702 /*-------------------------------------------------------------------------
11703 Sanity check
11704 -------------------------------------------------------------------------*/
11705 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11706 {
11707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11708 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11709 WDI_ASSERT(0);
11710 return WDI_STATUS_E_FAILURE;
11711 }
11712
11713 pDelPeriodicTxPtrnParams =
11714 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11715
11716 /*------------------------------------------------------------------------
11717 Get message buffer
11718 ------------------------------------------------------------------------*/
11719 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11720 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11721 &pSendBuffer, &usDataOffset, &usSendSize))||
11722 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11723 {
11724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11725 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11726 __func__);
11727 WDI_ASSERT(0);
11728 return WDI_STATUS_E_FAILURE;
11729 }
11730
11731 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11732
11733 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11734 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11735 &selfStaIdx))
11736 {
11737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11738 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011739 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011740
11741 return WDI_STATUS_E_FAILURE;
11742 }
11743
11744 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11745 halDelPeriodicTxPtrn->uPatternIdBitmap =
11746 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11747
11748 /*-------------------------------------------------------------------------
11749 Send Indication to HAL
11750 -------------------------------------------------------------------------*/
11751 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11752 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11753
11754 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11755
11756 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11757 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11758
11759 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11760} /* WDI_ProcessDelPeriodicTxPtrnInd */
11761
Jeff Johnson295189b2012-06-20 16:38:30 -070011762/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011764==========================================================================*/
11765/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011768
11769 @param pWDICtx: pointer to the WLAN DAL context
11770 pEventData: pointer to the event information structure
11771
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 @see
11773 @return Result of the function call
11774*/
11775WDI_Status
11776WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011777(
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 WDI_ControlBlockType* pWDICtx,
11779 WDI_EventInfoType* pEventData
11780)
11781{
11782 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11783 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011784 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 wpt_uint16 usDataOffset = 0;
11786 wpt_uint16 usSendSize = 0;
11787 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11789
11790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 -------------------------------------------------------------------------*/
11793 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11794 ( NULL == pEventData->pCBfnc ))
11795 {
11796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011800 }
11801
11802 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11803 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11804 /*-----------------------------------------------------------------------
11805 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 sizeof(halSwitchChannelReq.switchChannelParams),
11810 &pSendBuffer, &usDataOffset, &usSendSize))||
11811 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11812 {
11813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011814 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 }
11819
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011822#ifndef WLAN_FEATURE_VOWIFI
11823 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11825#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11828
11829#ifdef WLAN_FEATURE_VOWIFI
11830 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011831 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11833 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11834 WDI_MAC_ADDR_LEN);
11835 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11836 pwdiSwitchChParams->wdiChInfo.macBSSId,
11837 WDI_MAC_ADDR_LEN);
11838#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011839 wpalMemoryCopy( pSendBuffer+usDataOffset,
11840 &halSwitchChannelReq.switchChannelParams,
11841 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011842
11843 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011845
11846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11850 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011851}/*WDI_ProcessChannelSwitchReq*/
11852
11853/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011854 @brief Process Channel Switch Request function (called when
11855 Main FSM allows it)
11856
11857 @param pWDICtx: pointer to the WLAN DAL context
11858 pEventData: pointer to the event information structure
11859
11860 @see
11861 @return Result of the function call
11862*/
11863WDI_Status WDI_ProcessChannelSwitchReq_V1
11864(
11865 WDI_ControlBlockType* pWDICtx,
11866 WDI_EventInfoType* pEventData
11867)
11868{
11869 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11870 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11871 wpt_uint8* pSendBuffer = NULL;
11872 wpt_uint16 usDataOffset = 0;
11873 wpt_uint16 usSendSize = 0;
11874 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11876
11877 /*-------------------------------------------------------------------------
11878 Sanity check
11879 -------------------------------------------------------------------------*/
11880 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11881 ( NULL == pEventData->pCBfnc ))
11882 {
11883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11884 "%s: Invalid parameters", __func__);
11885 WDI_ASSERT(0);
11886 return WDI_STATUS_E_FAILURE;
11887 }
11888
11889 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11890 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11891 /*-----------------------------------------------------------------------
11892 Get message buffer
11893 ! TO DO : proper conversion into the HAL Message Request Format
11894 -----------------------------------------------------------------------*/
11895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11896 WDI_CH_SWITCH_REQ_V1,
11897 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11898 &pSendBuffer, &usDataOffset, &usSendSize))||
11899 ( usSendSize < (usDataOffset +
11900 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11901 {
11902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11903 "Unable to get send buffer in channel switch req %p %p %p",
11904 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11905 WDI_ASSERT(0);
11906 return WDI_STATUS_E_FAILURE;
11907 }
11908
11909 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11910 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11911
11912 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11913 pwdiSwitchChParams->wdiChInfo.ucChannel;
11914#ifndef WLAN_FEATURE_VOWIFI
11915 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11916 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11917#endif
11918 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11919 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11920
11921#ifdef WLAN_FEATURE_VOWIFI
11922 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11923 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11924 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11925 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11926 WDI_MAC_ADDR_LEN);
11927 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11928 pwdiSwitchChParams->wdiChInfo.macBSSId,
11929 WDI_MAC_ADDR_LEN);
11930#endif
11931 wpalMemoryCopy( pSendBuffer+usDataOffset,
11932 &halSwitchChannelReq.switchChannelParams_V1,
11933 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11934
11935 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11936 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11937
11938 /*-------------------------------------------------------------------------
11939 Send Switch Channel Request to HAL
11940 -------------------------------------------------------------------------*/
11941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11942 wdiSwitchChRspCb, pEventData->pUserData,
11943 WDI_CH_SWITCH_RESP_V1);
11944}/*WDI_ProcessChannelSwitchReq_V1*/
11945
11946/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011947 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011948 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011949
11950 @param pWDICtx: pointer to the WLAN DAL context
11951 pEventData: pointer to the event information structure
11952
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 @see
11954 @return Result of the function call
11955*/
11956WDI_Status
11957WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011958(
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 WDI_ControlBlockType* pWDICtx,
11960 WDI_EventInfoType* pEventData
11961)
11962{
11963 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11964 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011965 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 wpt_uint16 usDataOffset = 0;
11969 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 tConfigStaReqMsg halConfigStaReqMsg;
11973 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11975
11976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 -------------------------------------------------------------------------*/
11979 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11980 ( NULL == pEventData->pCBfnc ))
11981 {
11982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 }
11987
Abhishek Singh6927fa02014-06-27 17:19:55 +053011988 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11990 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11991 /*-------------------------------------------------------------------------
11992 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 -------------------------------------------------------------------------*/
11995 wpalMutexAcquire(&pWDICtx->wptMutex);
11996
11997 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12001 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12002 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012003
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12007 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12008 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012009
12010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 }
12013
12014 /*------------------------------------------------------------------------
12015 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 ------------------------------------------------------------------------*/
12018 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12019 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12021 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12022 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012023
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 }
12028
12029 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012030
12031 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12032#ifdef WLAN_FEATURE_11AC
12033 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012034 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 else
12036#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012037 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012038
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 /*-----------------------------------------------------------------------
12040 Get message buffer
12041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12043 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 {
12047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012048 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 }
12053
12054 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 &pwdiConfigSTAParams->wdiReqInfo);
12057
12058 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12059 {
12060 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 WDI_STATableFindStaidByAddr(pWDICtx,
12063 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012065 {
12066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012067 MAC_ADDRESS_STR
12068 ": This station does not exist in the WDI Station Table",
12069 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012071 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 }
12074 }
12075 else
12076 {
12077 /* Need to fill in the STA Index to invalid, since at this point we have not
12078 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012079 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012080 }
12081
12082 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012084
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 wpalMemoryCopy( pSendBuffer+usDataOffset,
12086 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012087 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012088
12089 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012091
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12093 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 sizeof(pWDICtx->wdiCachedConfigStaReq));
12095
12096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012097 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12100 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012101}/*WDI_ProcessConfigStaReq*/
12102
12103
12104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012107
12108 @param pWDICtx: pointer to the WLAN DAL context
12109 pEventData: pointer to the event information structure
12110
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 @see
12112 @return Result of the function call
12113*/
12114WDI_Status
12115WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012116(
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 WDI_ControlBlockType* pWDICtx,
12118 WDI_EventInfoType* pEventData
12119)
12120{
12121 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12122 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 wpt_uint16 usDataOffset = 0;
12127 wpt_uint16 usSendSize = 0;
12128 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12131
12132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 -------------------------------------------------------------------------*/
12135 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12136 ( NULL == pEventData->pCBfnc ))
12137 {
12138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 }
12143
12144 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12145 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12146 /*-------------------------------------------------------------------------
12147 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 -------------------------------------------------------------------------*/
12150 wpalMutexAcquire(&pWDICtx->wptMutex);
12151
12152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012153 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12156 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12157 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012158
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012162 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12163 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 }
12165 else
12166 {
12167 /*------------------------------------------------------------------------
12168 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 ------------------------------------------------------------------------*/
12171 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12172 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12174 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12175 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12176
12177 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 }
12181 }
12182 /* If the link is set to enter IDLE - the Session allocated for this BSS
12183 will be deleted on the Set Link State response coming from HAL
12184 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12187
12188 wpalMutexRelease(&pWDICtx->wptMutex);
12189 /*-----------------------------------------------------------------------
12190 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012193
12194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 sizeof(halLinkStateReqMsg),
12196 &pSendBuffer, &usDataOffset, &usSendSize))||
12197 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12198 {
12199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012200 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 }
12205
12206 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12207 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12208
12209 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12210 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12211
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12214
Jeff Johnsone7245742012-09-05 17:12:55 -070012215 wpalMemoryCopy( pSendBuffer+usDataOffset,
12216 &halLinkStateReqMsg,
12217 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012218
12219 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012221
12222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12226 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012227}/*WDI_ProcessSetLinkStateReq*/
12228
12229
12230/**
12231 @brief Process Get Stats Request function (called when Main FSM
12232 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012233
12234 @param pWDICtx: pointer to the WLAN DAL context
12235 pEventData: pointer to the event information structure
12236
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 @see
12238 @return Result of the function call
12239*/
12240WDI_Status
12241WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012242(
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 WDI_ControlBlockType* pWDICtx,
12244 WDI_EventInfoType* pEventData
12245)
12246{
12247 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12248 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 wpt_uint16 usDataOffset = 0;
12251 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012252 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 WDI_BSSSessionType* pBSSSes = NULL;
12254 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012255 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012256 tHalStatsReqMsg halStatsReqMsg;
12257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12258
12259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 -------------------------------------------------------------------------*/
12262 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12263 ( NULL == pEventData->pCBfnc ) )
12264 {
12265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 }
12270
12271 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12272 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12273
12274 /*-------------------------------------------------------------------------
12275 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 -------------------------------------------------------------------------*/
12278 wpalMutexAcquire(&pWDICtx->wptMutex);
12279
12280 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12284 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 &macBSSID))
12286 {
12287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012288 "This station does not exist in the WDI Station Table %d",
12289 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 }
12293
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12295 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12298 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12299 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012300
12301 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 }
12304
12305 /*------------------------------------------------------------------------
12306 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 ------------------------------------------------------------------------*/
12309 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12312 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12313 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012314
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 }
12319
12320
12321 wpalMutexRelease(&pWDICtx->wptMutex);
12322
12323 /*-----------------------------------------------------------------------
12324 Get message buffer
12325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 sizeof(halStatsReqMsg.statsReqParams),
12328 &pSendBuffer, &usDataOffset, &usSendSize))||
12329 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12330 {
12331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012332 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 }
12337
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 wpalMemoryCopy( pSendBuffer+usDataOffset,
12343 &halStatsReqMsg.statsReqParams,
12344 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348
12349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12353 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012354}/*WDI_ProcessGetStatsReq*/
12355
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012356#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012357/**
12358 @brief Process Get Roam Rssi Request function (called when Main FSM
12359 allows it)
12360
12361 @param pWDICtx: pointer to the WLAN DAL context
12362 pEventData: pointer to the event information structure
12363
12364 @see
12365 @return Result of the function call
12366*/
12367WDI_Status
12368WDI_ProcessGetRoamRssiReq
12369(
12370 WDI_ControlBlockType* pWDICtx,
12371 WDI_EventInfoType* pEventData
12372)
12373{
12374 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12375 WDI_GetStatsRspCb wdiGetStatsRspCb;
12376 wpt_uint8* pSendBuffer = NULL;
12377 wpt_uint16 usDataOffset = 0;
12378 wpt_uint16 usSendSize = 0;
12379 wpt_uint8 ucCurrentBSSSesIdx = 0;
12380 WDI_BSSSessionType* pBSSSes = NULL;
12381 wpt_macAddr macBSSID;
12382 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12383 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12385 /*-------------------------------------------------------------------------
12386 Sanity check
12387 -------------------------------------------------------------------------*/
12388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12389 ( NULL == pEventData->pCBfnc ) )
12390 {
12391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12392 "%s: Invalid parameters", __func__);
12393 WDI_ASSERT(0);
12394 return WDI_STATUS_E_FAILURE;
12395 }
12396
12397 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12398 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12399
12400 /*-------------------------------------------------------------------------
12401 Check to see if we are in the middle of an association, if so queue, if
12402 not it means it is free to process request
12403 -------------------------------------------------------------------------*/
12404 wpalMutexAcquire(&pWDICtx->wptMutex);
12405
12406 /*------------------------------------------------------------------------
12407 Find the BSS for which the request is made
12408 ------------------------------------------------------------------------*/
12409 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12410 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12411 &macBSSID))
12412 {
12413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012414 "This station does not exist in the WDI Station Table %d",
12415 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012416 wpalMutexRelease(&pWDICtx->wptMutex);
12417 return WDI_STATUS_E_FAILURE;
12418 }
12419
12420 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12421 if ( NULL == pBSSSes )
12422 {
12423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12424 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12425 __func__, MAC_ADDR_ARRAY(macBSSID));
12426
12427 wpalMutexRelease(&pWDICtx->wptMutex);
12428 return WDI_STATUS_E_NOT_ALLOWED;
12429 }
12430
12431 /*------------------------------------------------------------------------
12432 Check if this BSS is being currently processed or queued,
12433 if queued - queue the new request as well
12434 ------------------------------------------------------------------------*/
12435 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12436 {
12437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12438 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12439 __func__, MAC_ADDR_ARRAY(macBSSID));
12440
12441 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12442 wpalMutexRelease(&pWDICtx->wptMutex);
12443 return wdiStatus;
12444 }
12445
12446 wpalMutexRelease(&pWDICtx->wptMutex);
12447
12448 /*-----------------------------------------------------------------------
12449 Get message buffer
12450 -----------------------------------------------------------------------*/
12451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12452 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12453 &pSendBuffer, &usDataOffset, &usSendSize))||
12454 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12455 {
12456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012457 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012458 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12459 WDI_ASSERT(0);
12460 return WDI_STATUS_E_FAILURE;
12461 }
12462
12463 halRssiRoamReqMsg.roamRssiReqParams.staId =
12464 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12465 wpalMemoryCopy( pSendBuffer+usDataOffset,
12466 &halRssiRoamReqMsg.roamRssiReqParams,
12467 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12468
12469 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12470 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12471
12472 /*-------------------------------------------------------------------------
12473 Send Get STA Request to HAL
12474 -------------------------------------------------------------------------*/
12475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12476 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12477}/*WDI_ProcessGetRoamRssiReq*/
12478#endif
12479
Jeff Johnson295189b2012-06-20 16:38:30 -070012480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012483
12484 @param pWDICtx: pointer to the WLAN DAL context
12485 pEventData: pointer to the event information structure
12486
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 @see
12488 @return Result of the function call
12489*/
12490WDI_Status
12491WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012492(
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 WDI_ControlBlockType* pWDICtx,
12494 WDI_EventInfoType* pEventData
12495)
12496{
12497 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12498 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12499
Jeff Johnsone7245742012-09-05 17:12:55 -070012500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 wpt_uint16 usDataOffset = 0;
12502 wpt_uint16 usSendSize = 0;
12503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12504
12505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 -------------------------------------------------------------------------*/
12508 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12509 ( NULL == pEventData->pCBfnc))
12510 {
12511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 }
12516
12517 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12518 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12519
12520 /*-----------------------------------------------------------------------
12521 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 -----------------------------------------------------------------------*/
12524
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12527 &pSendBuffer, &usDataOffset, &usSendSize))||
12528 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12529 {
12530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012531 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 }
12536
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 wpalMemoryCopy( pSendBuffer+usDataOffset,
12538 &pwdiUpdateCfgParams->uConfigBufferLen,
12539 sizeof(wpt_uint32));
12540 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12541 pwdiUpdateCfgParams->pConfigBuffer,
12542 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012543
12544 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012546
12547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 -------------------------------------------------------------------------*/
12550
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12552 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012553
12554}/*WDI_ProcessUpdateCfgReq*/
12555
12556
12557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012560
12561 @param pWDICtx: pointer to the WLAN DAL context
12562 pEventData: pointer to the event information structure
12563
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 @see
12565 @return Result of the function call
12566*/
12567WDI_Status
12568WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012569(
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 WDI_ControlBlockType* pWDICtx,
12571 WDI_EventInfoType* pEventData
12572)
12573{
12574 WDI_AddBAReqParamsType* pwdiAddBAParams;
12575 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 wpt_uint16 usDataOffset = 0;
12580 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 wpt_macAddr macBSSID;
12583
12584 tAddBAReqMsg halAddBAReq;
12585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12586
12587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 -------------------------------------------------------------------------*/
12590 if (( NULL == pEventData ) ||
12591 ( NULL == pEventData->pEventData) ||
12592 ( NULL == pEventData->pCBfnc ))
12593 {
12594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 }
12599
12600 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12601 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12602
12603 /*-------------------------------------------------------------------------
12604 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 -------------------------------------------------------------------------*/
12607 wpalMutexAcquire(&pWDICtx->wptMutex);
12608
12609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12613 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 &macBSSID))
12615 {
12616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012617 "This station does not exist in the WDI Station Table %d",
12618 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 }
12622
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12624 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12627 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12628 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012629
12630 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 }
12633
12634 /*------------------------------------------------------------------------
12635 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 ------------------------------------------------------------------------*/
12638 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12639 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12641 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12642 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012643
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 }
12648
12649
12650 wpalMutexRelease(&pWDICtx->wptMutex);
12651 /*-----------------------------------------------------------------------
12652 Get message buffer
12653 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 sizeof(halAddBAReq.addBAParams),
12656 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12659 {
12660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012661 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 }
12666
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12669 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12670#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12673#endif
12674
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 wpalMemoryCopy( pSendBuffer+usDataOffset,
12676 &halAddBAReq.addBAParams,
12677 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012678
12679 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
12682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12686 wdiAddBARspCb, pEventData->pUserData,
12687 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012688}/*WDI_ProcessAddBAReq*/
12689
12690
12691
12692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012695
12696 @param pWDICtx: pointer to the WLAN DAL context
12697 pEventData: pointer to the event information structure
12698
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 @see
12700 @return Result of the function call
12701*/
12702WDI_Status
12703WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012704(
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ControlBlockType* pWDICtx,
12706 WDI_EventInfoType* pEventData
12707)
12708{
12709 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12710 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 wpt_uint16 usDataOffset = 0;
12715 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 wpt_uint16 index;
12718 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012719
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 tTriggerBAReqMsg halTriggerBAReq;
12721 tTriggerBaReqCandidate* halTriggerBACandidate;
12722 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12724
12725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 -------------------------------------------------------------------------*/
12728 if (( NULL == pEventData ) ||
12729 ( NULL == pEventData->pEventData ) ||
12730 ( NULL == pEventData->pCBfnc ))
12731 {
12732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 }
12737
12738 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12739 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12740 /*-------------------------------------------------------------------------
12741 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 -------------------------------------------------------------------------*/
12744 wpalMutexAcquire(&pWDICtx->wptMutex);
12745
12746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12750 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 &macBSSID))
12752 {
12753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012754 "This station does not exist in the WDI Station Table %d",
12755 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 }
12759
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12761 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12764 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12765 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012766
12767 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 }
12770
12771 /*------------------------------------------------------------------------
12772 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012774 ------------------------------------------------------------------------*/
12775 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12776 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12778 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12779 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012780
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 }
12785
12786
12787 wpalMutexRelease(&pWDICtx->wptMutex);
12788 /*-----------------------------------------------------------------------
12789 Get message buffer
12790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12792 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12796 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12801 {
12802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012803 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 }
12808
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12813
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 wpalMemoryCopy( pSendBuffer+usDataOffset,
12815 &halTriggerBAReq.triggerBAParams,
12816 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012817
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12820 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12821 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012822
12823 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012824 index++)
12825 {
12826 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12827 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12828 halTriggerBACandidate++;
12829 wdiTriggerBACandidate++;
12830 }
12831
12832 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012834
12835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12839 wdiTriggerBARspCb, pEventData->pUserData,
12840 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012841}/*WDI_ProcessTriggerBAReq*/
12842
12843
12844
12845/**
12846 @brief Process Update Beacon Params Request function (called when Main FSM
12847 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012848
12849 @param pWDICtx: pointer to the WLAN DAL context
12850 pEventData: pointer to the event information structure
12851
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 @see
12853 @return Result of the function call
12854*/
12855WDI_Status
12856WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012857(
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 WDI_ControlBlockType* pWDICtx,
12859 WDI_EventInfoType* pEventData
12860)
12861{
12862 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12863 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 wpt_uint16 usDataOffset = 0;
12866 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12869
12870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 -------------------------------------------------------------------------*/
12873 if (( NULL == pEventData ) ||
12874 ( NULL == pEventData->pEventData) ||
12875 ( NULL == pEventData->pCBfnc))
12876 {
12877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 }
12882
12883 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12884 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12885 /*-----------------------------------------------------------------------
12886 Get message buffer
12887 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 sizeof(halUpdateBeaconParams),
12890 &pSendBuffer, &usDataOffset, &usSendSize))||
12891 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12892 {
12893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012894 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 }
12899
12900 /*BSS Index of the BSS*/
12901 halUpdateBeaconParams.bssIdx =
12902 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12903 /*shortPreamble mode. HAL should update all the STA rates when it
12904 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12907 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12910 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12913
12914 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12927 halUpdateBeaconParams.fRIFSMode =
12928 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012929 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012930 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12931
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12933 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012934
12935 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012937
12938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12942 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012943}/*WDI_ProcessUpdateBeaconParamsReq*/
12944
12945
12946
12947/**
12948 @brief Process Send Beacon template Request function (called when Main FSM
12949 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012950
12951 @param pWDICtx: pointer to the WLAN DAL context
12952 pEventData: pointer to the event information structure
12953
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 @see
12955 @return Result of the function call
12956*/
12957WDI_Status
12958WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012959(
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 WDI_ControlBlockType* pWDICtx,
12961 WDI_EventInfoType* pEventData
12962)
12963{
12964 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12965 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012966 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012967 wpt_uint16 usDataOffset = 0;
12968 wpt_uint16 usSendSize = 0;
12969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12970
12971 tSendBeaconReqMsg halSendBeaconReq;
12972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 -------------------------------------------------------------------------*/
12975 if (( NULL == pEventData ) ||
12976 ( NULL == pEventData->pEventData ) ||
12977 ( NULL == pEventData->pCBfnc ))
12978 {
12979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 }
12984
12985 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12986 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12987 /*-----------------------------------------------------------------------
12988 Get message buffer
12989 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 sizeof(halSendBeaconReq.sendBeaconParam),
12992 &pSendBuffer, &usDataOffset, &usSendSize))||
12993 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12994 {
12995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012996 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013000 }
13001
13002 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13003 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13004 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13007 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13008 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13009 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013010 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013012 /* usP2PIeOffset should be atleast greater than timIeOffset */
13013 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13014 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13015 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13016 {
13017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13018 "Invalid usP2PIeOffset %hu",
13019 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13020 WDI_ASSERT(0);
13021 return WDI_STATUS_E_FAILURE;
13022 }
13023
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013026
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 wpalMemoryCopy( pSendBuffer+usDataOffset,
13028 &halSendBeaconReq.sendBeaconParam,
13029 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013030
13031 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013033
13034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13038 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013039}/*WDI_ProcessSendBeaconParamsReq*/
13040
13041/**
13042 @brief Process Update Beacon Params Request function (called when Main FSM
13043 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013044
13045 @param pWDICtx: pointer to the WLAN DAL context
13046 pEventData: pointer to the event information structure
13047
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 @see
13049 @return Result of the function call
13050*/
13051WDI_Status
13052WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013053(
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 WDI_ControlBlockType* pWDICtx,
13055 WDI_EventInfoType* pEventData
13056)
13057{
13058 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13059 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 wpt_uint16 usDataOffset = 0;
13062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13065
13066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013068 -------------------------------------------------------------------------*/
13069 if (( NULL == pEventData ) ||
13070 ( NULL == pEventData->pEventData) ||
13071 ( NULL == pEventData->pCBfnc))
13072 {
13073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 }
13078
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13083 /*-----------------------------------------------------------------------
13084 Get message buffer
13085 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 sizeof(halUpdateProbeRspTmplParams),
13088 &pSendBuffer, &usDataOffset, &usSendSize))||
13089 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13090 {
13091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013092 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 }
13097
13098 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 WDI_MAC_ADDR_LEN);
13101
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13104
13105 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13106 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013108
13109
13110 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13111 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13112 WDI_PROBE_REQ_BITMAP_IE_LEN);
13113
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 wpalMemoryCopy( pSendBuffer+usDataOffset,
13115 &halUpdateProbeRspTmplParams,
13116 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013117
13118 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013120
13121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13125 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13126 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013127}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13128
13129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013132
13133 @param pWDICtx: pointer to the WLAN DAL context
13134 pEventData: pointer to the event information structure
13135
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 @see
13137 @return Result of the function call
13138*/
13139WDI_Status
13140WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013141(
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 WDI_ControlBlockType* pWDICtx,
13143 WDI_EventInfoType* pEventData
13144)
13145{
13146
13147 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13148 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13149
13150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 -------------------------------------------------------------------------*/
13153 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013154 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013155 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13158 {
13159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 }
13164
13165 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13168
13169 /*cache the wdi nv request message here if the the first fragment
13170 * To issue the request to HAL for the next fragment */
13171 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13172 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13174 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13176
13177 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13178 pWDICtx->pRspCBUserData = pEventData->pUserData;
13179 }
13180
13181 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13182}
13183
13184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013187
13188 @param pWDICtx: pointer to the WLAN DAL context
13189 pEventData: pointer to the event information structure
13190
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 @see
13192 @return Result of the function call
13193*/
13194WDI_Status WDI_ProcessSetMaxTxPowerReq
13195(
13196 WDI_ControlBlockType* pWDICtx,
13197 WDI_EventInfoType* pEventData
13198)
13199{
13200 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13201 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 wpt_uint16 usDataOffset = 0;
13204 wpt_uint16 usSendSize = 0;
13205 tSetMaxTxPwrReq halSetMaxTxPower;
13206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13207
13208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 -------------------------------------------------------------------------*/
13211 if (( NULL == pEventData ) ||
13212 ( NULL == pEventData->pEventData ) ||
13213 ( NULL == pEventData->pCBfnc ))
13214 {
13215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13224
13225 /*-----------------------------------------------------------------------
13226 Get message buffer
13227 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013228if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13230 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013232)))
13233 {
13234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013235 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 }
13240
13241 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13242 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13243 WDI_MAC_ADDR_LEN);
13244
13245 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13246 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13247 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250
13251 wpalMemoryCopy( pSendBuffer+usDataOffset,
13252 &halSetMaxTxPower.setMaxTxPwrParams,
13253 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013254
13255 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013257
13258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13262 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13263 WDI_SET_MAX_TX_POWER_RESP);
13264
Jeff Johnson295189b2012-06-20 16:38:30 -070013265}
13266
Arif Hussaina5ebce02013-08-09 15:09:58 -070013267/*
13268 @brief Process Set Max Tx Power Per Band Request function (called when Main
13269 FSM allows it)
13270
13271 @param pWDICtx: pointer to the WLAN DAL context
13272 pEventData: pointer to the event information structure
13273
13274 @see
13275 @return Result of the function call
13276*/
13277WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13278(
13279 WDI_ControlBlockType* pWDICtx,
13280 WDI_EventInfoType* pEventData
13281)
13282{
13283 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13284 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13285 wpt_uint8* pSendBuffer = NULL;
13286 wpt_uint16 usDataOffset = 0;
13287 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013288 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013289 WDI_Status rValue = WDI_STATUS_SUCCESS;
13290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13291
13292 /*-------------------------------------------------------------------------
13293 Sanity check
13294 -------------------------------------------------------------------------*/
13295 if (( NULL == pEventData ) ||
13296 ( NULL == pEventData->pEventData ) ||
13297 ( NULL == pEventData->pCBfnc ))
13298 {
13299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13300 "%s: Invalid parameters", __func__);
13301 WDI_ASSERT(0);
13302 return WDI_STATUS_E_FAILURE;
13303 }
13304 pwdiSetMaxTxPowerPerBandParams = \
13305 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13306
13307 wdiSetMaxTxPowerPerBandRspCb = \
13308 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13309
13310 /*-----------------------------------------------------------------------
13311 Get message buffer
13312 -----------------------------------------------------------------------*/
13313
13314 rValue = WDI_GetMessageBuffer(pWDICtx,
13315 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13316 sizeof(tSetMaxTxPwrPerBandParams),
13317 &pSendBuffer, &usDataOffset, &usSendSize);
13318
13319 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13320 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13321 {
13322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13323 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13324 pEventData, pwdiSetMaxTxPowerPerBandParams,
13325 wdiSetMaxTxPowerPerBandRspCb);
13326 WDI_ASSERT(0);
13327 return WDI_STATUS_E_FAILURE;
13328 }
13329
13330
Arif Hussainf8f080c2014-04-03 09:48:36 -070013331 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13332 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013333 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13334
Arif Hussainf8f080c2014-04-03 09:48:36 -070013335 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013336 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13337
13338 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13339 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13340
13341 /*-------------------------------------------------------------------------
13342 Send Set Max Tx Power Per Band Request to HAL
13343 -------------------------------------------------------------------------*/
13344 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13345 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13346 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13347}
13348
schang86c22c42013-03-13 18:41:24 -070013349/**
13350 @brief Process Set Tx Power Request function (called when Main
13351 FSM allows it)
13352
13353 @param pWDICtx: pointer to the WLAN DAL context
13354 pEventData: pointer to the event information structure
13355
13356 @see
13357 @return Result of the function call
13358*/
13359WDI_Status WDI_ProcessSetTxPowerReq
13360(
13361 WDI_ControlBlockType* pWDICtx,
13362 WDI_EventInfoType* pEventData
13363)
13364{
13365 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13366 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13367 wpt_uint8* pSendBuffer = NULL;
13368 wpt_uint16 usDataOffset = 0;
13369 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013370 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13372
13373 /*-------------------------------------------------------------------------
13374 Sanity check
13375 -------------------------------------------------------------------------*/
13376 if (( NULL == pEventData ) ||
13377 ( NULL == pEventData->pEventData ) ||
13378 ( NULL == pEventData->pCBfnc ))
13379 {
13380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13381 "%s: Invalid parameters", __func__);
13382 WDI_ASSERT(0);
13383 return WDI_STATUS_E_FAILURE;
13384 }
13385
13386 pwdiSetTxPowerParams =
13387 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13388 wdiSetTxPowerRspCb =
13389 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13390
13391 /*-----------------------------------------------------------------------
13392 Get message buffer
13393 -----------------------------------------------------------------------*/
13394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13395 sizeof(tSetTxPwrReqParams),
13396 &pSendBuffer, &usDataOffset, &usSendSize))||
13397 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13398 )))
13399 {
13400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013401 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013402 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13403 WDI_ASSERT(0);
13404 return WDI_STATUS_E_FAILURE;
13405 }
13406
Leo Chang9a43db92013-03-25 17:39:58 -070013407 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13408 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13409 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013410
13411 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13412 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13413
13414 /*-------------------------------------------------------------------------
13415 Send Set Tx Power Request to HAL
13416 -------------------------------------------------------------------------*/
13417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13418 wdiSetTxPowerRspCb, pEventData->pUserData,
13419 WDI_SET_TX_POWER_RESP);
13420}
Jeff Johnson295189b2012-06-20 16:38:30 -070013421
13422/**
13423 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13424 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013425
13426 @param pWDICtx: pointer to the WLAN DAL context
13427 pEventData: pointer to the event information structure
13428
Jeff Johnson295189b2012-06-20 16:38:30 -070013429 @see
13430 @return Result of the function call
13431*/
13432WDI_Status
13433WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013434(
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 WDI_ControlBlockType* pWDICtx,
13436 WDI_EventInfoType* pEventData
13437)
13438{
13439 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13440 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 wpt_uint16 usDataOffset = 0;
13443 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13446
13447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 -------------------------------------------------------------------------*/
13450 if (( NULL == pEventData ) ||
13451 ( NULL == pEventData->pEventData) ||
13452 ( NULL == pEventData->pCBfnc))
13453 {
13454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 }
13459
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13464 /*-----------------------------------------------------------------------
13465 Get message buffer
13466 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13468 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 sizeof(halSetP2PGONOAParams),
13470 &pSendBuffer, &usDataOffset, &usSendSize))||
13471 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13472 {
13473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013474 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 }
13479
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13484 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013492 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13493
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 wpalMemoryCopy( pSendBuffer+usDataOffset,
13495 &halSetP2PGONOAParams,
13496 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500
13501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13505 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13506 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013507}/*WDI_ProcessP2PGONOAReq*/
13508
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013509#ifdef FEATURE_WLAN_TDLS
13510
13511/**
13512 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13513 allows it)
13514
13515 @param pWDICtx: pointer to the WLAN DAL context
13516 pEventData: pointer to the event information structure
13517
13518 @see
13519 @return Result of the function call
13520*/
13521WDI_Status
13522WDI_ProcessTdlsLinkEstablishReq
13523(
13524 WDI_ControlBlockType* pWDICtx,
13525 WDI_EventInfoType* pEventData
13526)
13527{
13528 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13529 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13530 wpt_uint8* pSendBuffer = NULL;
13531 wpt_uint16 usDataOffset = 0;
13532 wpt_uint16 usSendSize = 0;
13533
13534 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13536
13537 /*-------------------------------------------------------------------------
13538 Sanity check
13539 -------------------------------------------------------------------------*/
13540 if (( NULL == pEventData ) ||
13541 ( NULL == pEventData->pEventData) ||
13542 ( NULL == pEventData->pCBfnc))
13543 {
13544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13545 "%s: Invalid parameters", __func__);
13546 WDI_ASSERT(0);
13547 return WDI_STATUS_E_FAILURE;
13548 }
13549 pwdiTDLSLinkEstablishReqParams =
13550 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13551 wdiTDLSLinkEstablishReqRspCb =
13552 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13553
13554
13555 /*-----------------------------------------------------------------------
13556 Get message buffer
13557 -----------------------------------------------------------------------*/
13558 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13559 WDI_TDLS_LINK_ESTABLISH_REQ,
13560 sizeof(halSetTDLSLinkEstablishParams),
13561 &pSendBuffer, &usDataOffset, &usSendSize))||
13562 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13563 {
13564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013565 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013566 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13567 WDI_ASSERT(0);
13568 return WDI_STATUS_E_FAILURE;
13569 }
13570
13571 halSetTDLSLinkEstablishParams.staIdx =
13572 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13573 halSetTDLSLinkEstablishParams.bIsResponder =
13574 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13575 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13576 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13577 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13578 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13579 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13580 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13581 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13582 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13583 halSetTDLSLinkEstablishParams.aAck = 0;
13584 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13585 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13586 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013587 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13588 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13589
13590 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13591 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13592 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13593 halSetTDLSLinkEstablishParams.validChannelsLen =
13594 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13595
13596 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13597 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13598 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13599 halSetTDLSLinkEstablishParams.validOperClassesLen =
13600 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013601
13602 wpalMemoryCopy( pSendBuffer+usDataOffset,
13603 &halSetTDLSLinkEstablishParams,
13604 sizeof(halSetTDLSLinkEstablishParams));
13605
13606 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13607 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13608
13609 /*-------------------------------------------------------------------------
13610 Send Update Probe Resp Template Request to HAL
13611 -------------------------------------------------------------------------*/
13612 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13613 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13614 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13615 return 0;
13616}/*WDI_ProcessTdlsLinkEstablishReq*/
13617
13618
Atul Mittalc0f739f2014-07-31 13:47:47 +053013619/**
13620 @brief sends the channel switch command to f/w (called when Main FSM
13621 allows it)
13622
13623 @param pWDICtx: pointer to the WLAN DAL context
13624 pEventData: pointer to the event information structure
13625
13626 @see
13627 @return Result of the function call
13628*/
13629WDI_Status
13630WDI_ProcessTdlsChanSwitchReq
13631(
13632 WDI_ControlBlockType* pWDICtx,
13633 WDI_EventInfoType* pEventData
13634)
13635{
13636 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13637 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13638 wpt_uint8* pSendBuffer = NULL;
13639 wpt_uint16 usDataOffset = 0;
13640 wpt_uint16 usSendSize = 0;
13641 //WDI_Status wdiStatus;
13642 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13644
13645 /*-------------------------------------------------------------------------
13646 Sanity check
13647 -------------------------------------------------------------------------*/
13648 if (( NULL == pEventData ) ||
13649 ( NULL == pEventData->pEventData))
13650 {
13651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13652 "%s: Invalid parameters", __func__);
13653 WDI_ASSERT(0);
13654 return WDI_STATUS_E_FAILURE;
13655 }
13656 pwdiTDLSChanSwitchReqParams =
13657 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13658 wdiTDLSChanSwitchReqRspCb =
13659 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13660
13661 /*-----------------------------------------------------------------------
13662 Get message buffer
13663 -----------------------------------------------------------------------*/
13664 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13665 WDI_TDLS_CHAN_SWITCH_REQ,
13666 sizeof(halSetTDLSChanSwitchParams),
13667 &pSendBuffer, &usDataOffset, &usSendSize))||
13668 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13669 {
13670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13671 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13672 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13673 WDI_ASSERT(0);
13674 return WDI_STATUS_E_FAILURE;
13675 }
13676
13677 halSetTDLSChanSwitchParams.staIdx =
13678 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13679 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13680 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13681 halSetTDLSChanSwitchParams.targetOperClass =
13682 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13683 halSetTDLSChanSwitchParams.targetChannel =
13684 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13685 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13686 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13687 wpalMemoryCopy( pSendBuffer+usDataOffset,
13688 &halSetTDLSChanSwitchParams,
13689 sizeof(halSetTDLSChanSwitchParams));
13690
13691 pWDICtx->wdiReqStatusCB = NULL;
13692 pWDICtx->pReqStatusUserData = NULL;
13693
13694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13695 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13696 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13697}/*WDI_ProcessTdlsChanSwitchReq*/
13698
13699#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013700
Jeff Johnson295189b2012-06-20 16:38:30 -070013701
13702
13703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013704 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013706 @param None
13707
13708 @see
13709 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013710*/
13711void
13712WDI_SetPowerStateCb
13713(
13714 wpt_status status,
13715 unsigned int dxePhyAddr,
13716 void *pContext
13717)
13718{
13719 wpt_status wptStatus;
13720 WDI_ControlBlockType *pCB = NULL;
13721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 /*
13723 * Trigger the event to bring the Enter BMPS req function to come
13724 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013725*/
13726 if( NULL != pContext )
13727 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 }
13730 else
13731 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 pCB = &gWDICb;
13734 }
Mihir Shetea4306052014-03-25 00:02:54 +053013735
13736 if(eWLAN_PAL_STATUS_SUCCESS == status )
13737 {
13738 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13739 }
13740 else
13741 {
13742 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13743 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 pCB->dxePhyAddr = dxePhyAddr;
13745 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13746 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13747 {
13748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13749 "Failed to set an event");
13750
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 }
13753 return;
13754}
13755
13756
13757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013760
13761 @param pWDICtx: pointer to the WLAN DAL context
13762 pEventData: pointer to the event information structure
13763
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 @see
13765 @return Result of the function call
13766*/
13767WDI_Status
13768WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013769(
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 WDI_ControlBlockType* pWDICtx,
13771 WDI_EventInfoType* pEventData
13772)
13773{
Jeff Johnson43971f52012-07-17 12:26:56 -070013774 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 wpt_uint16 usDataOffset = 0;
13778 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013779 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13781
13782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013785 if ((NULL == pEventData ) ||
13786 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13787 (NULL == (pwdiEnterImpsReqParams =
13788 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 {
13790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013793 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 }
13795
13796 /*-----------------------------------------------------------------------
13797 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 0,
13802 &pSendBuffer, &usDataOffset, &usSendSize))||
13803 ( usSendSize < (usDataOffset )))
13804 {
13805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013806 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 pEventData, wdiEnterImpsRspCb);
13808 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013809 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 }
13811
13812 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013813 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13814 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013815 {
13816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13817 "WDI Init failed to reset an event");
13818
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013820 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 }
13822
13823 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013824 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13825 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013827 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013828 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013829 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013830 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013831
13832 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013835 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13836 WDI_SET_POWER_STATE_TIMEOUT);
13837 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 {
13839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13840 "WDI Init failed to wait on an event");
13841
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013843 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 }
13845
Mihir Shetea4306052014-03-25 00:02:54 +053013846 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13847 {
13848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13849 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13850
13851 goto fail;
13852 }
13853
13854 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13855 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13860 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013861
13862fail:
13863 // Release the message buffer so we don't leak
13864 wpalMemoryFree(pSendBuffer);
13865
13866failRequest:
13867 //WDA should have failure check to avoid the memory leak
13868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013869}/*WDI_ProcessEnterImpsReq*/
13870
13871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013874
13875 @param pWDICtx: pointer to the WLAN DAL context
13876 pEventData: pointer to the event information structure
13877
Jeff Johnson295189b2012-06-20 16:38:30 -070013878 @see
13879 @return Result of the function call
13880*/
13881WDI_Status
13882WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013883(
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 WDI_ControlBlockType* pWDICtx,
13885 WDI_EventInfoType* pEventData
13886)
13887{
13888 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 wpt_uint16 usDataOffset = 0;
13891 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013892 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13894
13895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 -------------------------------------------------------------------------*/
13898 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013899 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
13900 (NULL == (pwdiExitImpsReqParams =
13901 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 {
13903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 }
13908
13909 /*-----------------------------------------------------------------------
13910 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 0,
13915 &pSendBuffer, &usDataOffset, &usSendSize))||
13916 ( usSendSize < (usDataOffset )))
13917 {
13918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013919 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 pEventData, wdiExitImpsRspCb);
13921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013924 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
13925 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13930 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013931}/*WDI_ProcessExitImpsReq*/
13932
13933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013936
13937 @param pWDICtx: pointer to the WLAN DAL context
13938 pEventData: pointer to the event information structure
13939
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 @see
13941 @return Result of the function call
13942*/
13943WDI_Status
13944WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013945(
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 WDI_ControlBlockType* pWDICtx,
13947 WDI_EventInfoType* pEventData
13948)
13949{
13950 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13951 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 wpt_uint16 usDataOffset = 0;
13954 wpt_uint16 usSendSize = 0;
13955 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013956 wpt_status wptStatus;
13957
Jeff Johnson295189b2012-06-20 16:38:30 -070013958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13959
13960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 -------------------------------------------------------------------------*/
13963 if (( NULL == pEventData ) ||
13964 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13965 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13966 {
13967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013970 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 }
13972
13973 /*-----------------------------------------------------------------------
13974 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 sizeof(enterBmpsReq),
13979 &pSendBuffer, &usDataOffset, &usSendSize))||
13980 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13981 {
13982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013983 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13985 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013986 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 }
13988
13989 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013990 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13991 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 {
13993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13994 "WDI Init failed to reset an event");
13995
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013997 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 }
13999
14000 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014001 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14002 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14003 {
14004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014005 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014006 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014007 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014008 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014009
14010/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014013 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14014 WDI_SET_POWER_STATE_TIMEOUT);
14015 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 {
14017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14018 "WDI Init failed to wait on an event");
14019
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014021 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 }
14023
14024 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14025
14026 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14027 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14028 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14029 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14030
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014031 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14033 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14034 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14035
14036 wpalMemoryCopy( pSendBuffer+usDataOffset,
14037 &enterBmpsReq,
14038 sizeof(enterBmpsReq));
14039
14040 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014041 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014042
14043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14047 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014048
14049fail:
14050 // Release the message buffer so we don't leak
14051 wpalMemoryFree(pSendBuffer);
14052
14053failRequest:
14054 //WDA should have failure check to avoid the memory leak
14055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056}/*WDI_ProcessEnterBmpsReq*/
14057
14058/**
14059 @brief Process Exit BMPS Request function (called when Main FSM
14060 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014061
14062 @param pWDICtx: pointer to the WLAN DAL context
14063 pEventData: pointer to the event information structure
14064
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 @see
14066 @return Result of the function call
14067*/
14068WDI_Status
14069WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014070(
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 WDI_ControlBlockType* pWDICtx,
14072 WDI_EventInfoType* pEventData
14073)
14074{
14075 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14076 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 wpt_uint16 usDataOffset = 0;
14079 wpt_uint16 usSendSize = 0;
14080 tHalExitBmpsReqParams exitBmpsReq;
14081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14082
14083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 -------------------------------------------------------------------------*/
14086 if (( NULL == pEventData ) ||
14087 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14088 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14089 {
14090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 }
14095
14096 /*-----------------------------------------------------------------------
14097 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 sizeof(exitBmpsReq),
14102 &pSendBuffer, &usDataOffset, &usSendSize))||
14103 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14104 {
14105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014106 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 }
14111 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14112
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14114
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 wpalMemoryCopy( pSendBuffer+usDataOffset,
14116 &exitBmpsReq,
14117 sizeof(exitBmpsReq));
14118
14119 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014121
14122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14126 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014127}/*WDI_ProcessExitBmpsReq*/
14128
14129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014132
14133 @param pWDICtx: pointer to the WLAN DAL context
14134 pEventData: pointer to the event information structure
14135
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 @see
14137 @return Result of the function call
14138*/
14139WDI_Status
14140WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014141(
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 WDI_ControlBlockType* pWDICtx,
14143 WDI_EventInfoType* pEventData
14144)
14145{
14146 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14147 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 wpt_uint16 usDataOffset = 0;
14150 wpt_uint16 usSendSize = 0;
14151 tUapsdReqParams enterUapsdReq;
14152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14153
14154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 -------------------------------------------------------------------------*/
14157 if (( NULL == pEventData ) ||
14158 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14159 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14160 {
14161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014165 }
14166
14167 /*-----------------------------------------------------------------------
14168 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 sizeof(enterUapsdReq),
14173 &pSendBuffer, &usDataOffset, &usSendSize))||
14174 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14175 {
14176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014177 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 }
14182
14183 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14184 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14185 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14186 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14187 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14188 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14189 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14190 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014192
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 wpalMemoryCopy( pSendBuffer+usDataOffset,
14194 &enterUapsdReq,
14195 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014196
14197 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->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 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014205}/*WDI_ProcessEnterUapsdReq*/
14206
14207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 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_ProcessExitUapsdReq
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_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 wpt_uint16 usDataOffset = 0;
14227 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014228 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14229 wpt_uint8 bssIdx = 0;
14230
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14232
14233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 -------------------------------------------------------------------------*/
14236 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014237 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14239 {
14240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 }
14245
14246 /*-----------------------------------------------------------------------
14247 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014248 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014251 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014253 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 {
14255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014256 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 pEventData, wdiExitUapsdRspCb);
14258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 }
14261
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014262 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14263
14264 wpalMemoryCopy( pSendBuffer+usDataOffset,
14265 &bssIdx,
14266 sizeof(wpt_uint8));
14267
14268 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14269 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14270
Jeff Johnson295189b2012-06-20 16:38:30 -070014271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014272 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14275 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014276}/*WDI_ProcessExitUapsdReq*/
14277
14278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014281
14282 @param pWDICtx: pointer to the WLAN DAL context
14283 pEventData: pointer to the event information structure
14284
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 @see
14286 @return Result of the function call
14287*/
14288WDI_Status
14289WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014290(
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 WDI_ControlBlockType* pWDICtx,
14292 WDI_EventInfoType* pEventData
14293)
14294{
14295 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14296 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 wpt_uint16 usDataOffset = 0;
14299 wpt_uint16 usSendSize = 0;
14300 tUapsdInfo uapsdAcParamsReq;
14301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14302
14303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 -------------------------------------------------------------------------*/
14306 if (( NULL == pEventData ) ||
14307 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14308 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14309 {
14310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 }
14315
14316 /*-----------------------------------------------------------------------
14317 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 sizeof(uapsdAcParamsReq),
14322 &pSendBuffer, &usDataOffset, &usSendSize))||
14323 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14324 {
14325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014326 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 }
14331
14332 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14333 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14334 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14335 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14336 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14337 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14338
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 wpalMemoryCopy( pSendBuffer+usDataOffset,
14340 &uapsdAcParamsReq,
14341 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014342
14343 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014345
14346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14350 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014351}/*WDI_ProcessSetUapsdAcParamsReq*/
14352
14353/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014354 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014356
14357 @param pWDICtx: pointer to the WLAN DAL context
14358 pEventData: pointer to the event information structure
14359
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 @see
14361 @return Result of the function call
14362*/
14363WDI_Status
14364WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014365(
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 WDI_ControlBlockType* pWDICtx,
14367 WDI_EventInfoType* pEventData
14368)
14369{
14370 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14371 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014372 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 wpt_uint16 usDataOffset = 0;
14374 wpt_uint16 usSendSize = 0;
14375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14376
14377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014379 -------------------------------------------------------------------------*/
14380 if (( NULL == pEventData ) ||
14381 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14382 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14383 {
14384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 }
14389
14390 /*-----------------------------------------------------------------------
14391 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014395 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14396 &pSendBuffer, &usDataOffset, &usSendSize))||
14397 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14398 {
14399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014400 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 }
14405
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 wpalMemoryCopy( pSendBuffer+usDataOffset,
14407 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14408 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014409
14410 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014412
14413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014414 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14417 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014418}/*WDI_ProcessUpdateUapsdParamsReq*/
14419
14420/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014423
14424 @param pWDICtx: pointer to the WLAN DAL context
14425 pEventData: pointer to the event information structure
14426
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 @see
14428 @return Result of the function call
14429*/
14430WDI_Status
14431WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014432(
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 WDI_ControlBlockType* pWDICtx,
14434 WDI_EventInfoType* pEventData
14435)
14436{
14437 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14438 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wpt_uint16 usDataOffset = 0;
14441 wpt_uint16 usSendSize = 0;
14442 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14443
14444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14445
14446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 -------------------------------------------------------------------------*/
14449 if (( NULL == pEventData ) ||
14450 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14451 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14452 {
14453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 }
14458
14459 /*-----------------------------------------------------------------------
14460 Get message buffer
14461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 sizeof(halRxpFilterParams),
14464 &pSendBuffer, &usDataOffset, &usSendSize))||
14465 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14466 {
14467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014468 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 }
14473
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14478
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 wpalMemoryCopy( pSendBuffer+usDataOffset,
14480 &halRxpFilterParams,
14481 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014482
14483 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014485
14486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14490 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014491}/*WDI_ProcessConfigureRxpFilterReq*/
14492
14493/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014496
14497 @param pWDICtx: pointer to the WLAN DAL context
14498 pEventData: pointer to the event information structure
14499
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 @see
14501 @return Result of the function call
14502*/
14503WDI_Status
14504WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014505(
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 WDI_ControlBlockType* pWDICtx,
14507 WDI_EventInfoType* pEventData
14508)
14509{
14510 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14511 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 wpt_uint16 usDataOffset = 0;
14514 wpt_uint16 usSendSize = 0;
14515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14516
14517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 -------------------------------------------------------------------------*/
14520 if (( NULL == pEventData ) ||
14521 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14522 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14523 {
14524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 }
14529
14530 /*-----------------------------------------------------------------------
14531 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14536 &pSendBuffer, &usDataOffset, &usSendSize))||
14537 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14538 {
14539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014540 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 }
14545
Jeff Johnsone7245742012-09-05 17:12:55 -070014546 wpalMemoryCopy( pSendBuffer+usDataOffset,
14547 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14548 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14549 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14550 &pwdiBeaconFilterParams->aFilters[0],
14551 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014552
14553 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014555
14556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14560 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014561}/*WDI_ProcessSetBeaconFilterReq*/
14562
14563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014566
14567 @param pWDICtx: pointer to the WLAN DAL context
14568 pEventData: pointer to the event information structure
14569
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 @see
14571 @return Result of the function call
14572*/
14573WDI_Status
14574WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014575(
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 WDI_ControlBlockType* pWDICtx,
14577 WDI_EventInfoType* pEventData
14578)
14579{
14580 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14581 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 wpt_uint16 usDataOffset = 0;
14584 wpt_uint16 usSendSize = 0;
14585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14586
14587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 -------------------------------------------------------------------------*/
14590 if (( NULL == pEventData ) ||
14591 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14592 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14593 {
14594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 }
14599
14600 /*-----------------------------------------------------------------------
14601 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14606 &pSendBuffer, &usDataOffset, &usSendSize))||
14607 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14608 {
14609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014610 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 }
14615
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 wpalMemoryCopy( pSendBuffer+usDataOffset,
14617 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14618 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014619
14620 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014622
14623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14627 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014628}
14629
14630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014631 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014633
14634 @param pWDICtx: pointer to the WLAN DAL context
14635 pEventData: pointer to the event information structure
14636
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 @see
14638 @return Result of the function call
14639*/
14640WDI_Status
14641WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014642(
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 WDI_ControlBlockType* pWDICtx,
14644 WDI_EventInfoType* pEventData
14645)
14646{
14647 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14648 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 wpt_uint16 usDataOffset = 0;
14651 wpt_uint16 usSendSize = 0;
14652 tHalRSSIThresholds rssiThresholdsReq;
14653 WDI_Status ret_status = 0;
14654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14655
14656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 -------------------------------------------------------------------------*/
14659 if (( NULL == pEventData ) ||
14660 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14661 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14662 {
14663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 }
14668
14669 /*-----------------------------------------------------------------------
14670 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 sizeof(rssiThresholdsReq),
14675 &pSendBuffer, &usDataOffset, &usSendSize))||
14676 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14677 {
14678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014679 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 }
14684
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14705
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpalMemoryCopy( pSendBuffer+usDataOffset,
14707 &rssiThresholdsReq,
14708 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014709
14710 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014711 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014712
14713 /*-------------------------------------------------------------------------
14714 Send Set threshold req to HAL
14715 -------------------------------------------------------------------------*/
14716 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14717 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14718 {
14719 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14720 // req. Then as a result of processing the threshold cross ind, we trigger
14721 // a Set threshold req, then we need to indicate to WDI that it needs to
14722 // go to busy state as a result of the indication as we sent a req in the
14723 // same WDI context.
14724 // Hence expected state transition is to busy.
14725 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14726 }
14727
14728 return ret_status;
14729}
14730
14731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014734
14735 @param pWDICtx: pointer to the WLAN DAL context
14736 pEventData: pointer to the event information structure
14737
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 @see
14739 @return Result of the function call
14740*/
14741WDI_Status
14742WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014743(
Jeff Johnson295189b2012-06-20 16:38:30 -070014744 WDI_ControlBlockType* pWDICtx,
14745 WDI_EventInfoType* pEventData
14746)
14747{
14748 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14749 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 wpt_uint16 usDataOffset = 0;
14752 wpt_uint16 usSendSize = 0;
14753 tHalHostOffloadReq hostOffloadParams;
14754 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014755 wpt_uint8 ucCurrentBSSSesIdx = 0;
14756 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
14758 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14759
14760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 -------------------------------------------------------------------------*/
14763 if (( NULL == pEventData ) ||
14764 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14765 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14766 {
14767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014770 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 }
14772
14773 /*-----------------------------------------------------------------------
14774 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14779 &pSendBuffer, &usDataOffset, &usSendSize))||
14780 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14781 {
14782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014783 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14785 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014786 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 }
14788
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014789 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14790 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14791 &pBSSSes);
14792 if ( NULL == pBSSSes )
14793 {
c_hpothu86feba52014-10-28 15:51:18 +053014794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014795 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14796 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014797 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014798 }
14799
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14801 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014802
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14804 {
14805 // ARP Offload
14806 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14807 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14808 4);
14809 }
14810 else
14811 {
14812 // NS Offload
14813 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14814 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14815 16);
14816
14817#ifdef WLAN_NS_OFFLOAD
14818 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14819 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14820 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14821 16);
14822 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14823 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14824 16);
14825 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14826 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14827 16);
14828 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14829 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14830 16);
14831 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14832 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14833 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014834 nsOffloadParams.srcIPv6AddrValid =
14835 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14836
14837 nsOffloadParams.targetIPv6Addr1Valid =
14838 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14839
14840 nsOffloadParams.targetIPv6Addr2Valid =
14841 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14842
14843 nsOffloadParams.slotIndex =
14844 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014845
Jeff Johnson295189b2012-06-20 16:38:30 -070014846#endif // WLAN_NS_OFFLOAD
14847 }
14848
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014849 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14850
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 // copy hostOffloadParams into pSendBuffer
14852 wpalMemoryCopy( pSendBuffer+usDataOffset,
14853 &hostOffloadParams,
14854 sizeof(hostOffloadParams));
14855
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014856 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014858 // copy nsOffloadParams into pSendBuffer
14859 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014860 &nsOffloadParams,
14861 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014862 }
14863 else
14864 {
14865#ifdef WLAN_NS_OFFLOAD
14866 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14867 {
14868 // copy nsOffloadParams into pSendBuffer
14869 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14870 &nsOffloadParams,
14871 sizeof(nsOffloadParams));
14872 }
14873#endif
14874 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014875
14876 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878
14879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14883 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014884
14885fail:
14886 // Release the message buffer so we don't leak
14887 wpalMemoryFree(pSendBuffer);
14888
14889failRequest:
14890 //WDA should have failure check to avoid the memory leak
14891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014892}/*WDI_ProcessHostOffloadReq*/
14893
14894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014897
14898 @param pWDICtx: pointer to the WLAN DAL context
14899 pEventData: pointer to the event information structure
14900
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 @see
14902 @return Result of the function call
14903*/
14904WDI_Status
14905WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014906(
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 WDI_ControlBlockType* pWDICtx,
14908 WDI_EventInfoType* pEventData
14909)
14910{
14911 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14912 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 wpt_uint16 usDataOffset = 0;
14915 wpt_uint16 usSendSize = 0;
14916 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014917 wpt_uint8 ucCurrentBSSSesIdx = 0;
14918 WDI_BSSSessionType* pBSSSes = NULL;
14919
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14921
14922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 -------------------------------------------------------------------------*/
14925 if (( NULL == pEventData ) ||
14926 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14927 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14928 {
14929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14930 "Invalid parameters in Keep Alive req");
14931 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014932 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 }
14934
14935 /*-----------------------------------------------------------------------
14936 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 sizeof(keepAliveReq),
14941 &pSendBuffer, &usDataOffset, &usSendSize))||
14942 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14943 {
14944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014945 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14947 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014948 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 }
14950
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014951 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14952 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14953 &pBSSSes);
14954 if ( NULL == pBSSSes )
14955 {
14956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014957 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014958 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014959 }
14960
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14962 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014964 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014965
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14967 {
14968 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14969 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14970 HAL_IPV4_ADDR_LEN);
14971 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14972 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 wpalMemoryCopy(keepAliveReq.destMacAddr,
14975 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14976 HAL_MAC_ADDR_LEN);
14977 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014978
14979 wpalMemoryCopy( pSendBuffer+usDataOffset,
14980 &keepAliveReq,
14981 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014982
14983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014984 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014985
14986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014987 "Process keep alive req time period %d",
14988 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014989
14990 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014992
14993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14994 "Sending keep alive req to HAL");
14995
14996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15000 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015001
15002fail:
15003 // Release the message buffer so we don't leak
15004 wpalMemoryFree(pSendBuffer);
15005
15006failRequest:
15007 //WDA should have failure check to avoid the memory leak
15008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015009}/*WDI_ProcessKeepAliveReq*/
15010
15011
15012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015015
15016 @param pWDICtx: pointer to the WLAN DAL context
15017 pEventData: pointer to the event information structure
15018
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 @see
15020 @return Result of the function call
15021*/
15022WDI_Status
15023WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015024(
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 WDI_ControlBlockType* pWDICtx,
15026 WDI_EventInfoType* pEventData
15027)
15028{
15029 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15030 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 wpt_uint16 usDataOffset = 0;
15033 wpt_uint16 usSendSize = 0;
15034 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015035 wpt_uint8 ucCurrentBSSSesIdx = 0;
15036 WDI_BSSSessionType* pBSSSes = NULL;
15037
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15039
15040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 -------------------------------------------------------------------------*/
15043 if (( NULL == pEventData ) ||
15044 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15045 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15046 {
15047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015050 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 }
15052
15053 /*-----------------------------------------------------------------------
15054 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015055 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 sizeof(wowlAddBcPtrnReq),
15059 &pSendBuffer, &usDataOffset, &usSendSize))||
15060 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15061 {
15062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015063 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15065 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015066 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 }
15068
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015069 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15070 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15071 &pBSSSes);
15072 if ( NULL == pBSSSes )
15073 {
15074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015075 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015076 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015077 }
15078
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15087
15088 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15089 {
15090 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15091 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15092 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15093 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15094 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15095 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15096 }
15097 else
15098 {
15099 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15100 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15101 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15102 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15103 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15104 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15105
15106 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15107 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15108 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15109 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15110 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15111 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15112 }
15113
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015114 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15115
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 wpalMemoryCopy( pSendBuffer+usDataOffset,
15117 &wowlAddBcPtrnReq,
15118 sizeof(wowlAddBcPtrnReq));
15119
15120 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122
15123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015124 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15127 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015128fail:
15129 // Release the message buffer so we don't leak
15130 wpalMemoryFree(pSendBuffer);
15131
15132failRequest:
15133 //WDA should have failure check to avoid the memory leak
15134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015135}/*WDI_ProcessWowlAddBcPtrnReq*/
15136
15137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15155 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 wpt_uint16 usDataOffset = 0;
15158 wpt_uint16 usSendSize = 0;
15159 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015160 wpt_uint8 ucCurrentBSSSesIdx = 0;
15161 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15163
15164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 -------------------------------------------------------------------------*/
15167 if (( NULL == pEventData ) ||
15168 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15169 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15170 {
15171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015174 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 }
15176
15177 /*-----------------------------------------------------------------------
15178 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 sizeof(wowlDelBcPtrnReq),
15183 &pSendBuffer, &usDataOffset, &usSendSize))||
15184 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15185 {
15186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015187 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15189 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015190 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 }
15192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015193 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15194 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15195 &pBSSSes);
15196 if ( NULL == pBSSSes )
15197 {
15198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015199 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015200 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015201 }
15202
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015205
15206 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15207
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 wpalMemoryCopy( pSendBuffer+usDataOffset,
15209 &wowlDelBcPtrnReq,
15210 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015211
15212 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214
15215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15219 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015220
15221fail:
15222 // Release the message buffer so we don't leak
15223 wpalMemoryFree(pSendBuffer);
15224
15225failRequest:
15226 //WDA should have failure check to avoid the memory leak
15227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015228}/*WDI_ProcessWowlDelBcPtrnReq*/
15229
15230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015233
15234 @param pWDICtx: pointer to the WLAN DAL context
15235 pEventData: pointer to the event information structure
15236
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 @see
15238 @return Result of the function call
15239*/
15240WDI_Status
15241WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015242(
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 WDI_ControlBlockType* pWDICtx,
15244 WDI_EventInfoType* pEventData
15245)
15246{
15247 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15248 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 wpt_uint16 usDataOffset = 0;
15251 wpt_uint16 usSendSize = 0;
15252 tHalWowlEnterParams wowlEnterReq;
15253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15254
15255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 -------------------------------------------------------------------------*/
15258 if (( NULL == pEventData ) ||
15259 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15260 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15261 {
15262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 }
15267
15268 /*-----------------------------------------------------------------------
15269 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015273 sizeof(wowlEnterReq),
15274 &pSendBuffer, &usDataOffset, &usSendSize))||
15275 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15276 {
15277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015278 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 }
15283
Kumar Anandaca924e2013-07-22 14:35:34 -070015284 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15285
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015298 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015300 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15302
15303#ifdef WLAN_WAKEUP_EVENTS
15304 wowlEnterReq.ucWoWEAPIDRequestEnable =
15305 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15306
15307 wowlEnterReq.ucWoWEAPOL4WayEnable =
15308 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15309
15310 wowlEnterReq.ucWowNetScanOffloadMatch =
15311 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15312
15313 wowlEnterReq.ucWowGTKRekeyError =
15314 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15315
15316 wowlEnterReq.ucWoWBSSConnLoss =
15317 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15318#endif // WLAN_WAKEUP_EVENTS
15319
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015320 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15321
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15323 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15324 sizeof(tSirMacAddr));
15325
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 wpalMemoryCopy( pSendBuffer+usDataOffset,
15327 &wowlEnterReq,
15328 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015329
15330 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015332
15333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15337 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015338}/*WDI_ProcessWowlEnterReq*/
15339
15340/**
15341 @brief Process Wowl exit Request function (called when Main FSM
15342 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015343
15344 @param pWDICtx: pointer to the WLAN DAL context
15345 pEventData: pointer to the event information structure
15346
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 @see
15348 @return Result of the function call
15349*/
15350WDI_Status
15351WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015352(
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 WDI_ControlBlockType* pWDICtx,
15354 WDI_EventInfoType* pEventData
15355)
15356{
15357 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015358 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 wpt_uint16 usDataOffset = 0;
15361 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015362 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15364
15365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 -------------------------------------------------------------------------*/
15368 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015369 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15371 {
15372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 }
15377
15378 /*-----------------------------------------------------------------------
15379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015383 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015385 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 {
15387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015388 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 pEventData, wdiWowlExitCb);
15390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 }
15393
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015394 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15395
15396 wpalMemoryCopy( pSendBuffer+usDataOffset,
15397 &wowlExitparams,
15398 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15403 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015404}/*WDI_ProcessWowlExitReq*/
15405
15406/**
15407 @brief Process Configure Apps Cpu Wakeup State Request function
15408 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015409
15410 @param pWDICtx: pointer to the WLAN DAL context
15411 pEventData: pointer to the event information structure
15412
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 @see
15414 @return Result of the function call
15415*/
15416WDI_Status
15417WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015418(
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 WDI_ControlBlockType* pWDICtx,
15420 WDI_EventInfoType* pEventData
15421)
15422{
15423 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15424 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015425 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 wpt_uint16 usDataOffset = 0;
15427 wpt_uint16 usSendSize = 0;
15428 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15430
15431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015433 -------------------------------------------------------------------------*/
15434 if (( NULL == pEventData ) ||
15435 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15436 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15437 {
15438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 }
15443
15444 /*-----------------------------------------------------------------------
15445 Get message buffer
15446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 sizeof(halCfgAppsCpuWakeupStateReqParams),
15449 &pSendBuffer, &usDataOffset, &usSendSize))||
15450 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15451 {
15452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015453 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 }
15458
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15461
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 wpalMemoryCopy( pSendBuffer+usDataOffset,
15463 &halCfgAppsCpuWakeupStateReqParams,
15464 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015465
15466 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015468
15469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15473 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15474 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015475}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15476
15477#ifdef WLAN_FEATURE_VOWIFI_11R
15478/**
15479 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15480 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015481
15482 @param pWDICtx: pointer to the WLAN DAL context
15483 pEventData: pointer to the event information structure
15484
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 @see
15486 @return Result of the function call
15487*/
15488WDI_Status
15489WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015490(
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 WDI_ControlBlockType* pWDICtx,
15492 WDI_EventInfoType* pEventData
15493)
15494{
15495 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15496 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 wpt_uint16 usDataOffset = 0;
15501 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 wpt_macAddr macBSSID;
15504 tAggrAddTsReq halAggrAddTsReq;
15505 int i;
15506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15507
15508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 -------------------------------------------------------------------------*/
15511 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15512 ( NULL == pEventData->pCBfnc ))
15513 {
15514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 }
15519 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15520 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15521 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15522 /*-------------------------------------------------------------------------
15523 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015524 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 -------------------------------------------------------------------------*/
15526 wpalMutexAcquire(&pWDICtx->wptMutex);
15527
15528 /*------------------------------------------------------------------------
15529 Find the BSS for which the request is made and identify WDI session
15530 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15532 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 &macBSSID))
15534 {
15535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015536 "This station does not exist in the WDI Station Table %d",
15537 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 }
15541
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15543 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15546 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15547 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015548
15549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015552
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 /*------------------------------------------------------------------------
15554 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 ------------------------------------------------------------------------*/
15557 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15558 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15560 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15561 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015562
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015565 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 }
15567
15568 wpalMutexRelease(&pWDICtx->wptMutex);
15569 /*-----------------------------------------------------------------------
15570 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 sizeof(tAggrAddTsParams),
15575 &pSendBuffer, &usDataOffset, &usSendSize))||
15576 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15577 {
15578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015579 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 }
15584
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15589
15590 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15591 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15598 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15601 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15604 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15607 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15610 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15613 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15616 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15619 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624
15625
15626 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15656 }
15657
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 wpalMemoryCopy( pSendBuffer+usDataOffset,
15659 &halAggrAddTsReq,
15660 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015661
15662 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015664
15665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015666 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015671}/*WDI_ProcessAggrAddTSpecReq*/
15672#endif /* WLAN_FEATURE_VOWIFI_11R */
15673
15674/**
15675 @brief Process Shutdown Request function (called when Main FSM
15676 allows it)
15677
15678 @param pWDICtx: pointer to the WLAN DAL context
15679 pEventData: pointer to the event information structure
15680
15681 @see
15682 @return Result of the function call
15683*/
15684WDI_Status
15685WDI_ProcessShutdownReq
15686(
15687 WDI_ControlBlockType* pWDICtx,
15688 WDI_EventInfoType* pEventData
15689 )
15690{
15691 wpt_status wptStatus;
15692
15693
15694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15695
15696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 -------------------------------------------------------------------------*/
15699 if ( NULL == pEventData )
15700 {
15701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 WDI_ASSERT(0);
15704 return WDI_STATUS_E_FAILURE;
15705 }
15706
15707 wpalMutexAcquire(&pWDICtx->wptMutex);
15708
15709
15710 gWDIInitialized = eWLAN_PAL_FALSE;
15711 /*! TO DO: stop the data services */
15712 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15713 {
15714 /*Stop the STA Table !UT- check this logic again
15715 It is safer to do it here than on the response - because a stop is imminent*/
15716 WDI_STATableStop(pWDICtx);
15717
15718 /* Stop Transport Driver, DXE */
15719 WDTS_Stop(pWDICtx);
15720 }
15721
15722 /*Clear all pending request*/
15723 WDI_ClearPendingRequests(pWDICtx);
15724 /* Close Data transport*/
15725 /* FTM mode does not open Data Path */
15726 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15727 {
15728 WDTS_Close(pWDICtx);
15729 }
15730 /*Close the STA Table !UT- check this logic again*/
15731 WDI_STATableClose(pWDICtx);
15732 /*close the PAL */
15733 wptStatus = wpalClose(pWDICtx->pPALContext);
15734 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15735 {
15736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15737 "Failed to wpal Close %d", wptStatus);
15738 WDI_ASSERT(0);
15739 }
15740
15741 /*Transition back to init state*/
15742 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15743
15744 wpalMutexRelease(&pWDICtx->wptMutex);
15745
15746 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015748
15749
Jeff Johnsone7245742012-09-05 17:12:55 -070015750 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015751}/*WDI_ProcessShutdownReq*/
15752
15753/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015754 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015755========================================================================*/
15756
15757/**
15758 @brief Process Start Response function (called when a response
15759 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015760
15761 @param pWDICtx: pointer to the WLAN DAL context
15762 pEventData: pointer to the event information structure
15763
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 @see
15765 @return Result of the function call
15766*/
15767WDI_Status
15768WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015769(
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 WDI_ControlBlockType* pWDICtx,
15771 WDI_EventInfoType* pEventData
15772)
15773{
15774 WDI_StartRspParamsType wdiRspParams;
15775 WDI_StartRspCb wdiStartRspCb = NULL;
15776
15777 tHalMacStartRspParams* startRspParams;
15778
15779#ifndef HAL_SELF_STA_PER_BSS
15780 WDI_AddStaParams wdiAddSTAParam = {0};
15781#endif
15782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15783
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 -------------------------------------------------------------------------*/
15788 if (( NULL == pEventData ) ||
15789 ( NULL == pEventData->pEventData) ||
15790 ( NULL == wdiStartRspCb ))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 }
15797
15798 /*-------------------------------------------------------------------------
15799 Extract response and send it to UMAC
15800 -------------------------------------------------------------------------*/
15801 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15802 {
15803 // not enough data was received
15804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015805 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 }
15810
15811 /*-------------------------------------------------------------------------
15812 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 -------------------------------------------------------------------------*/
15815 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15816
15817 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15818 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15819 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15820 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15821 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15822 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15823 wdiRspParams.wlanReportedVersion.major =
15824 startRspParams->wcnssWlanVersion.major;
15825 wdiRspParams.wlanReportedVersion.minor =
15826 startRspParams->wcnssWlanVersion.minor;
15827 wdiRspParams.wlanReportedVersion.version =
15828 startRspParams->wcnssWlanVersion.version;
15829 wdiRspParams.wlanReportedVersion.revision =
15830 startRspParams->wcnssWlanVersion.revision;
15831 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15832 startRspParams->wcnssCrmVersionString,
15833 sizeof(wdiRspParams.wcnssSoftwareVersion));
15834 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15835 startRspParams->wcnssWlanVersionString,
15836 sizeof(wdiRspParams.wcnssHardwareVersion));
15837 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15838
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015839 /*Save the HAL Version*/
15840 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15841
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 wpalMutexAcquire(&pWDICtx->wptMutex);
15843 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15844 {
15845 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15846
15847 /*Cache the start response for further use*/
15848 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 sizeof(pWDICtx->wdiCachedStartRspParams));
15851
15852 }
15853 else
15854 {
15855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15856 "Failed to start device with status %s(%d)",
15857 WDI_getHALStatusMsgString(startRspParams->status),
15858 startRspParams->status);
15859
15860 /*Set the expected state transition to stopped - because the start has
15861 failed*/
15862 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15863
15864 wpalMutexRelease(&pWDICtx->wptMutex);
15865
15866 /*Notify UMAC*/
15867 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015868
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015870 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015871
15872 /*Although the response is an error - it was processed by our function
15873 so as far as the caller is concerned this is a succesful reponse processing*/
15874 return WDI_STATUS_SUCCESS;
15875 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015876
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 wpalMutexRelease(&pWDICtx->wptMutex);
15878
15879 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15880 {
15881 /* FTM mode does not need to execute below */
15882 /* Notify UMAC */
15883 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15884 return WDI_STATUS_SUCCESS;
15885 }
15886
15887 /* START the Data transport */
15888 WDTS_startTransport(pWDICtx);
15889
15890 /*Start the STA Table !- check this logic again*/
15891 WDI_STATableStart(pWDICtx);
15892
15893#ifndef HAL_SELF_STA_PER_BSS
15894 /* Store the Self STA Index */
15895 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15896
15897 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15898 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15899 WDI_MAC_ADDR_LEN);
15900
15901 /* At this point add the self-STA */
15902
15903 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15904 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15905 /*! TO DO: wdiAddSTAParam.dpuSig */
15906 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15907 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15908 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15909
15910 //all DPU indices are the same for self STA
15911 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15912 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015913 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15915 WDI_MAC_ADDR_LEN);
15916 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15917 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15918
15919 /* Note: Since we don't get an explicit config STA request for self STA, we
15920 add the self STA upon receiving the Start response message. But the
15921 self STA entry in the table is deleted when WDI gets an explicit delete STA
15922 request */
15923 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15924#endif
15925
15926 /*Notify UMAC*/
15927 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15928
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015930}/*WDI_ProcessStartRsp*/
15931
15932
15933/**
15934 @brief Process Stop Response function (called when a response
15935 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015936
15937 @param pWDICtx: pointer to the WLAN DAL context
15938 pEventData: pointer to the event information structure
15939
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 @see
15941 @return Result of the function call
15942*/
15943WDI_Status
15944WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015945(
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 WDI_ControlBlockType* pWDICtx,
15947 WDI_EventInfoType* pEventData
15948)
15949{
15950 WDI_Status wdiStatus;
15951 WDI_StopRspCb wdiStopRspCb = NULL;
15952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15955
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 -------------------------------------------------------------------------*/
15960 if (( NULL == pEventData ) ||
15961 ( NULL == pEventData->pEventData) ||
15962 ( NULL == wdiStopRspCb ))
15963 {
15964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 }
15969
15970 /*-------------------------------------------------------------------------
15971 Extract response and send it to UMAC
15972 -------------------------------------------------------------------------*/
15973 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15974 {
15975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015976 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 pEventData->uEventDataSize);
15978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 }
15981
15982 /*-------------------------------------------------------------------------
15983 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15987 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 sizeof(halMacStopRspMsg.stopRspParams));
15989
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015991
15992 wpalMutexAcquire(&pWDICtx->wptMutex);
15993
15994 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015996 --------------------------------------------------------------------------*/
15997 if ( WDI_STATUS_SUCCESS != wdiStatus )
15998 {
15999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16000 "Failed to stop the device with status %s (%d)",
16001 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16002 halMacStopRspMsg.stopRspParams.status);
16003
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016005 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016006
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016009 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016010
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16012
16013 /*Transition now as WDI may get preempted imediately after it sends
16014 up the Stop Response and it will not get to process the state transition
16015 from Main Rsp function*/
16016 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16017 wpalMutexRelease(&pWDICtx->wptMutex);
16018
16019 /*! TO DO: - STOP the Data transport */
16020
16021 /*Notify UMAC*/
16022 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16023
Jeff Johnsone7245742012-09-05 17:12:55 -070016024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016025}/*WDI_ProcessStopRsp*/
16026
16027/**
16028 @brief Process Close Rsp function (called when a response
16029 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016030
16031 @param pWDICtx: pointer to the WLAN DAL context
16032 pEventData: pointer to the event information structure
16033
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 @see
16035 @return Result of the function call
16036*/
16037WDI_Status
16038WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016039(
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 WDI_ControlBlockType* pWDICtx,
16041 WDI_EventInfoType* pEventData
16042)
16043{
16044 /*There is no close response comming from HAL - function just kept for
16045 simmetry */
16046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016048}/*WDI_ProcessCloseRsp*/
16049
16050
16051/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016053============================================================================*/
16054
16055/**
16056 @brief Process Init Scan Rsp function (called when a response
16057 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016058
16059 @param pWDICtx: pointer to the WLAN DAL context
16060 pEventData: pointer to the event information structure
16061
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 @see
16063 @return Result of the function call
16064*/
16065WDI_Status
16066WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016067(
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 WDI_ControlBlockType* pWDICtx,
16069 WDI_EventInfoType* pEventData
16070)
16071{
16072 WDI_Status wdiStatus;
16073 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016075 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16077
16078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 -------------------------------------------------------------------------*/
16081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16082 ( NULL == pEventData->pEventData))
16083 {
16084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 }
16089
16090 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16091 if( NULL == wdiInitScanRspCb)
16092 {
16093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016094 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 }
16098
16099 /*-------------------------------------------------------------------------
16100 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16104 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 sizeof(halInitScanRspMsg.initScanRspParams));
16106
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016108
16109 if ( pWDICtx->bInBmps )
16110 {
16111 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016112 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16113 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016115 "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 -080016116 WDI_ASSERT(0);
16117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 }
16119
16120 /*Notify UMAC*/
16121 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16122
Jeff Johnsone7245742012-09-05 17:12:55 -070016123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016124}/*WDI_ProcessInitScanRsp*/
16125
16126
16127/**
16128 @brief Process Start Scan Rsp function (called when a response
16129 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016130
16131 @param pWDICtx: pointer to the WLAN DAL context
16132 pEventData: pointer to the event information structure
16133
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 @see
16135 @return Result of the function call
16136*/
16137WDI_Status
16138WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016139(
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 WDI_ControlBlockType* pWDICtx,
16141 WDI_EventInfoType* pEventData
16142)
16143{
16144 WDI_StartScanRspParamsType wdiStartScanParams;
16145 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016146
16147 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16149
16150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 -------------------------------------------------------------------------*/
16153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16154 ( NULL == pEventData->pEventData))
16155 {
16156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 }
16161
16162 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16163 if( NULL == wdiStartScanRspCb)
16164 {
16165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016166 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016169 }
16170
16171 /*-------------------------------------------------------------------------
16172 Extract response and send it to UMAC
16173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16175 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 sizeof(halStartScanRspMsg.startScanRspParams));
16177
16178 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16179 halStartScanRspMsg.startScanRspParams.status);
16180#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 halStartScanRspMsg.startScanRspParams.startTSF,
16185 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016186#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016187
16188 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16189 {
16190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16191 "Start scan failed with status %s (%d)",
16192 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16193 halStartScanRspMsg.startScanRspParams.status);
16194 /* send the status to UMAC, don't return from here*/
16195 }
16196
16197 /*Notify UMAC*/
16198 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016201
16202}/*WDI_ProcessStartScanRsp*/
16203
16204
16205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016208
16209 @param pWDICtx: pointer to the WLAN DAL context
16210 pEventData: pointer to the event information structure
16211
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 @see
16213 @return Result of the function call
16214*/
16215WDI_Status
16216WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016217(
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 WDI_ControlBlockType* pWDICtx,
16219 WDI_EventInfoType* pEventData
16220)
16221{
16222 WDI_Status wdiStatus;
16223 tHalEndScanRspMsg halEndScanRspMsg;
16224 WDI_EndScanRspCb wdiEndScanRspCb;
16225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16226
16227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 -------------------------------------------------------------------------*/
16230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16231 ( NULL == pEventData->pEventData))
16232 {
16233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 }
16238
16239 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16240
16241 /*-------------------------------------------------------------------------
16242 Extract response and send it to UMAC
16243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016244 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16245 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 sizeof(halEndScanRspMsg.endScanRspParams));
16247
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016249
16250 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16251 {
16252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16253 "End Scan failed with status %s (%d )",
16254 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16255 halEndScanRspMsg.endScanRspParams.status);
16256 /* send the status to UMAC, don't return from here*/
16257 }
16258
16259 /*Notify UMAC*/
16260 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16261
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016263}/*WDI_ProcessEndScanRsp*/
16264
16265
16266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016269
16270 @param pWDICtx: pointer to the WLAN DAL context
16271 pEventData: pointer to the event information structure
16272
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 @see
16274 @return Result of the function call
16275*/
16276WDI_Status
16277WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016278(
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 WDI_ControlBlockType* pWDICtx,
16280 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016281)
Jeff Johnson295189b2012-06-20 16:38:30 -070016282{
16283 WDI_Status wdiStatus;
16284 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016285
16286 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16288
16289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 -------------------------------------------------------------------------*/
16292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16293 ( NULL == pEventData->pEventData))
16294 {
16295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 }
16300
16301 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16302
16303 /*-------------------------------------------------------------------------
16304 Extract response and send it to UMAC
16305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16309
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016311
16312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 halFinishScanRspMsg.finishScanRspParams.status);
16315
16316 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16317 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16318 {
16319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16320 "Finish Scan failed with status %s (%d)",
16321 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16322 halFinishScanRspMsg.finishScanRspParams.status);
16323 /* send the status to UMAC, don't return from here*/
16324 }
16325
16326 /*Notify UMAC*/
16327 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16328
Jeff Johnsone7245742012-09-05 17:12:55 -070016329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016330}/*WDI_ProcessFinishScanRsp*/
16331
16332/**
16333 @brief Process Join Response function (called when a response
16334 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016335
16336 @param pWDICtx: pointer to the WLAN DAL context
16337 pEventData: pointer to the event information structure
16338
Jeff Johnson295189b2012-06-20 16:38:30 -070016339 @see
16340 @return Result of the function call
16341*/
16342WDI_Status
16343WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016344(
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 WDI_ControlBlockType* pWDICtx,
16346 WDI_EventInfoType* pEventData
16347)
16348{
16349 WDI_Status wdiStatus;
16350 WDI_JoinRspCb wdiJoinRspCb;
16351 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016352
16353 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16355
16356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 -------------------------------------------------------------------------*/
16359 if (( NULL == pWDICtx ) ||
16360 ( NULL == pWDICtx->pfncRspCB ) ||
16361 ( NULL == pEventData ) ||
16362 ( NULL == pEventData->pEventData))
16363 {
16364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 }
16369
16370 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16371
16372 /*-------------------------------------------------------------------------
16373 Extract response and send it to UMAC
16374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16376 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 sizeof(halJoinRspMsg.joinRspParams));
16378
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016380
16381 wpalMutexAcquire(&pWDICtx->wptMutex);
16382
16383 /*-----------------------------------------------------------------------
16384 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16389 {
16390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16392 "association no longer in progress %d - mysterious HAL response",
16393 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016394
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 }
16399
16400 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16401
16402 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016403 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 -----------------------------------------------------------------------*/
16405 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16406 {
16407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16408 "Join only allowed in Joining state - failure state is %d "
16409 "strange HAL response", pBSSSes->wdiAssocState);
16410
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16412
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 }
16416
16417
16418 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 -----------------------------------------------------------------------*/
16421 if ( WDI_STATUS_SUCCESS != wdiStatus )
16422 {
16423 /*Association was failed by HAL - remove session*/
16424 WDI_DeleteSession(pWDICtx, pBSSSes);
16425
16426 /*Association no longer in progress */
16427 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16428
16429 /*Association no longer in progress - prepare pending assoc for processing*/
16430 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016431
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 }
16433 else
16434 {
16435 /*Transition to state Joining - this may be redundant as we are supposed
16436 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 }
16439
16440 wpalMutexRelease(&pWDICtx->wptMutex);
16441
16442 /*Notify UMAC*/
16443 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16444
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016446}/*WDI_ProcessJoinRsp*/
16447
16448
16449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016450 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016451 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016452
16453 @param pWDICtx: pointer to the WLAN DAL context
16454 pEventData: pointer to the event information structure
16455
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 @see
16457 @return Result of the function call
16458*/
16459WDI_Status
16460WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016461(
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 WDI_ControlBlockType* pWDICtx,
16463 WDI_EventInfoType* pEventData
16464)
16465{
16466 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16467 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_BSSSessionType* pBSSSes = NULL;
16470
Jeff Johnsone7245742012-09-05 17:12:55 -070016471 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016472 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16473 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016474
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16476
16477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 -------------------------------------------------------------------------*/
16480 if (( NULL == pEventData ) ||
16481 ( NULL == pEventData->pEventData))
16482 {
16483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 }
16488
16489 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16490
16491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016492 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16495 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 sizeof(halConfigBssRspMsg.configBssRspParams));
16497
16498 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16499 halConfigBssRspMsg.configBssRspParams.status);
16500 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16501 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16504 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016505
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016507
16508 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016510
16511 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016513
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016515
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16519 #endif
16520 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16521 halConfigBssRspMsg.configBssRspParams.staMac,
16522 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016523
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 wpalMutexAcquire(&pWDICtx->wptMutex);
16525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16529 wdiConfigBSSParams.macBSSID,
16530 &pBSSSes);
16531
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 /*-----------------------------------------------------------------------
16533 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 -----------------------------------------------------------------------*/
16536 if ( NULL == pBSSSes )
16537 {
16538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16539 "Association sequence for this BSS does not yet exist "
16540 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016541
16542 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16543
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 /*Save data for this BSS*/
16549 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16550 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016559 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16561 pBSSSes->bcastStaIdx =
16562 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016563
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016565
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 /*-------------------------------------------------------------------------
16567 Add Peer STA
16568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16571 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016572
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 wdiAddSTAParam.ucHTCapable =
16577 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16578 wdiAddSTAParam.ucStaType =
16579 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16580
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16583 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016585
16586 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16587 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16588 WDI_MAC_ADDR_LEN);
16589
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016603
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16605 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016606
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16608 /*-------------------------------------------------------------------------
16609 Add Broadcast STA only in AP mode
16610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016611 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016612 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 {
16614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16615 "Add BCAST STA to table for index: %d",
16616 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016617
16618 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016620
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16622 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16623 }
16624 wpalMutexRelease(&pWDICtx->wptMutex);
16625 }
16626 else
16627 {
16628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16629 "Config BSS RSP failed with status : %s(%d)",
16630 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 halConfigBssRspMsg.configBssRspParams.status);
16633
Jeff Johnsone7245742012-09-05 17:12:55 -070016634
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 /*Association was failed by HAL - remove session*/
16636 WDI_DeleteSession(pWDICtx, pBSSSes);
16637
16638 /*Association no longer in progress */
16639 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16640
16641 /*Association no longer in progress - prepare pending assoc for processing*/
16642 WDI_DequeueAssocRequest(pWDICtx);
16643
16644 }
16645
16646 /*Notify UMAC*/
16647 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16648
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016650}/*WDI_ProcessConfigBSSRsp*/
16651
16652
16653/**
16654 @brief Process Del BSS Response function (called when a response
16655 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016656
16657 @param pWDICtx: pointer to the WLAN DAL context
16658 pEventData: pointer to the event information structure
16659
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 @see
16661 @return Result of the function call
16662*/
16663WDI_Status
16664WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016665(
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 WDI_ControlBlockType* pWDICtx,
16667 WDI_EventInfoType* pEventData
16668)
16669{
16670 WDI_DelBSSRspParamsType wdiDelBSSParams;
16671 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 WDI_BSSSessionType* pBSSSes = NULL;
16674
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16677
16678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 -------------------------------------------------------------------------*/
16681 if (( NULL == pEventData ) ||
16682 ( NULL == pEventData->pEventData))
16683 {
16684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 }
16689
16690 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16691
16692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16696 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 sizeof(halDelBssRspMsg.deleteBssRspParams));
16698
16699
16700 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016701 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016702
16703 wpalMutexAcquire(&pWDICtx->wptMutex);
16704
16705 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16709 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16710 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016711
16712 /*-----------------------------------------------------------------------
16713 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 -----------------------------------------------------------------------*/
16716 if ( NULL == pBSSSes )
16717 {
16718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16719 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016720 "association no longer in progress - mysterious HAL response");
16721
16722 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16723
16724 wpalMutexRelease(&pWDICtx->wptMutex);
16725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016727
16728 /*Extract BSSID for the response to UMAC*/
16729 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16730 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16731
16732 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16733
16734 /*-----------------------------------------------------------------------
16735 The current session will be deleted
16736 -----------------------------------------------------------------------*/
16737 WDI_DeleteSession(pWDICtx, pBSSSes);
16738
16739
16740 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016741 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16742 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016744 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016745 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016746
16747 /* Delete the STA's in this BSS */
16748 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16749
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 wpalMutexRelease(&pWDICtx->wptMutex);
16751
16752 /*Notify UMAC*/
16753 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16754
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016756}/*WDI_ProcessDelBSSRsp*/
16757
16758/**
16759 @brief Process Post Assoc Rsp function (called when a response
16760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016761
16762 @param pWDICtx: pointer to the WLAN DAL context
16763 pEventData: pointer to the event information structure
16764
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 @see
16766 @return Result of the function call
16767*/
16768WDI_Status
16769WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016770(
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 WDI_ControlBlockType* pWDICtx,
16772 WDI_EventInfoType* pEventData
16773)
16774{
16775 WDI_PostAssocRspParamsType wdiPostAssocParams;
16776 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16781
16782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 -------------------------------------------------------------------------*/
16785 if (( NULL == pEventData ) ||
16786 ( NULL == pEventData->pEventData))
16787 {
16788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 }
16793
16794 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16795
16796 /*-------------------------------------------------------------------------
16797 Extract response and send it to UMAC
16798 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16800 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016801 sizeof(halPostAssocRspMsg.postAssocRspParams));
16802
16803 /*Extract the Post Assoc STA Params */
16804
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16811
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 wdiPostAssocParams.wdiStatus =
16813 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016814
16815 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16816 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16818 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 WDI_MAC_ADDR_LEN);
16820
16821 /* Extract Post Assoc BSS Params */
16822
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16824 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16825 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016826
16827 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16828 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16831 .macSTA, WDI_MAC_ADDR_LEN);
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16835
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16838
16839 wdiPostAssocParams.bssParams.ucBSSIdx =
16840 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16841
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16844
16845 wpalMutexAcquire(&pWDICtx->wptMutex);
16846
16847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016848 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016853
16854 /*-----------------------------------------------------------------------
16855 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016856 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 -----------------------------------------------------------------------*/
16858 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16861 {
16862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16863 "Association sequence for this BSS does not yet exist or "
16864 "association no longer in progress - mysterious HAL response");
16865
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16867
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 }
16871
16872 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 -----------------------------------------------------------------------*/
16875 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16876 {
16877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16878 "Post Assoc not allowed before JOIN - failing request "
16879 "strange HAL response");
16880
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16882
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 }
16886
16887 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 -----------------------------------------------------------------------*/
16890 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16891 {
16892 /*Association was failed by HAL - remove session*/
16893 WDI_DeleteSession(pWDICtx, pBSSSes);
16894 }
16895 else
16896 {
16897 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016899
16900 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016903 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16909
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16912 }
16913
16914 /*Association no longer in progress */
16915 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16916
16917 /*Association no longer in progress - prepare pending assoc for processing*/
16918 WDI_DequeueAssocRequest(pWDICtx);
16919
16920 wpalMutexRelease(&pWDICtx->wptMutex);
16921
16922 /*Notify UMAC*/
16923 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016926}/*WDI_ProcessPostAssocRsp*/
16927
16928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016929 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016930 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016931
16932 @param pWDICtx: pointer to the WLAN DAL context
16933 pEventData: pointer to the event information structure
16934
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 @see
16936 @return Result of the function call
16937*/
16938WDI_Status
16939WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016940(
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 WDI_ControlBlockType* pWDICtx,
16942 WDI_EventInfoType* pEventData
16943)
16944{
16945 WDI_DelSTARspParamsType wdiDelSTARsp;
16946 WDI_DelSTARspCb wdiDelSTARspCb;
16947 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16950
16951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 -------------------------------------------------------------------------*/
16954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16955 ( NULL == pEventData->pEventData))
16956 {
16957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 }
16962
16963 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16964
16965 /*-------------------------------------------------------------------------
16966 Extract response and send it to UMAC
16967 -------------------------------------------------------------------------*/
16968 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016969 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 sizeof(halDelStaRspMsg.delStaRspParams));
16971
16972 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 wdiDelSTARsp.wdiStatus =
16974 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016975
16976 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16977
16978 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16979 if(staType == WDI_STA_ENTRY_SELF)
16980 {
16981 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16982
16983 /* At this point add the self-STA */
16984
16985 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16986 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16987 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16988
16989#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16990#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16991
16992 //all DPU indices are the same for self STA
16993 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16994 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16995 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16996 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16997 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16998 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016999
17000 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017001 }
17002 else
17003 {
17004 //Delete the station in the table
17005 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17006 }
17007
17008 /*Notify UMAC*/
17009 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17010
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017012}/*WDI_ProcessDelSTARsp*/
17013
17014
17015/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017017==========================================================================*/
17018
17019/**
17020 @brief Process Set BSS Key Rsp function (called when a response
17021 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017022
17023 @param pWDICtx: pointer to the WLAN DAL context
17024 pEventData: pointer to the event information structure
17025
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 @see
17027 @return Result of the function call
17028*/
17029WDI_Status
17030WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017031(
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 WDI_ControlBlockType* pWDICtx,
17033 WDI_EventInfoType* pEventData
17034)
17035{
17036 WDI_Status wdiStatus;
17037 eHalStatus halStatus;
17038 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17040
17041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 -------------------------------------------------------------------------*/
17044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17045 ( NULL == pEventData->pEventData))
17046 {
17047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 }
17052
17053 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17054
17055 /*-------------------------------------------------------------------------
17056 Extract response and send it to UMAC
17057 -------------------------------------------------------------------------*/
17058 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017060
17061 if ( eHAL_STATUS_SUCCESS != halStatus )
17062 {
17063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17064 "Set BSS Key failed with status %s (%d)",
17065 WDI_getHALStatusMsgString(halStatus),
17066 halStatus);
17067 /* send the status to UMAC, don't return from here*/
17068 }
17069
17070 /*Notify UMAC*/
17071 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17072
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017074}/*WDI_ProcessSetBssKeyRsp*/
17075
17076/**
17077 @brief Process Remove BSS Key Rsp function (called when a response
17078 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017079
17080 @param pWDICtx: pointer to the WLAN DAL context
17081 pEventData: pointer to the event information structure
17082
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 @see
17084 @return Result of the function call
17085*/
17086WDI_Status
17087WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017088(
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDI_ControlBlockType* pWDICtx,
17090 WDI_EventInfoType* pEventData
17091)
17092{
17093 WDI_Status wdiStatus;
17094 eHalStatus halStatus;
17095 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17097
17098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 -------------------------------------------------------------------------*/
17101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17102 ( NULL == pEventData->pEventData))
17103 {
17104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 }
17109
17110 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17111
17112 /*-------------------------------------------------------------------------
17113 Extract response and send it to UMAC
17114 -------------------------------------------------------------------------*/
17115 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017117
17118 if ( eHAL_STATUS_SUCCESS != halStatus )
17119 {
17120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17121 "Remove BSS Key failed with status %s (%d )",
17122 WDI_getHALStatusMsgString(halStatus),
17123 halStatus);
17124 /* send the status to UMAC, don't return from here*/
17125 }
17126
17127 /*Notify UMAC*/
17128 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17129
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017131}/*WDI_ProcessSetBssKeyRsp*/
17132
17133
17134/**
17135 @brief Process Set STA Key Rsp function (called when a response
17136 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017137
17138 @param pWDICtx: pointer to the WLAN DAL context
17139 pEventData: pointer to the event information structure
17140
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 @see
17142 @return Result of the function call
17143*/
17144WDI_Status
17145WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017146(
Jeff Johnson295189b2012-06-20 16:38:30 -070017147 WDI_ControlBlockType* pWDICtx,
17148 WDI_EventInfoType* pEventData
17149)
17150{
17151 WDI_Status wdiStatus;
17152 eHalStatus halStatus;
17153 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17155
17156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 -------------------------------------------------------------------------*/
17159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17160 ( NULL == pEventData->pEventData))
17161 {
17162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 }
17167
17168 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17169
17170 /*-------------------------------------------------------------------------
17171 Extract response and send it to UMAC
17172 -------------------------------------------------------------------------*/
17173 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017175
17176 if ( eHAL_STATUS_SUCCESS != halStatus )
17177 {
17178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17179 "Set STA Key failed with status %s (%d)",
17180 WDI_getHALStatusMsgString(halStatus),
17181 halStatus);
17182 /* send the status to UMAC, don't return from here*/
17183 }
17184
17185 /*Notify UMAC*/
17186 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17187
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017189}/*WDI_ProcessSetSTAKeyRsp*/
17190
17191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017192 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017194
17195 @param pWDICtx: pointer to the WLAN DAL context
17196 pEventData: pointer to the event information structure
17197
Jeff Johnson295189b2012-06-20 16:38:30 -070017198 @see
17199 @return Result of the function call
17200*/
17201WDI_Status
17202WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017203(
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 WDI_ControlBlockType* pWDICtx,
17205 WDI_EventInfoType* pEventData
17206)
17207{
17208 WDI_Status wdiStatus;
17209 eHalStatus halStatus;
17210 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17212
17213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017214 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 -------------------------------------------------------------------------*/
17216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17217 ( NULL == pEventData->pEventData))
17218 {
17219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 }
17224
17225 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17226
17227 /*-------------------------------------------------------------------------
17228 Extract response and send it to UMAC
17229 -------------------------------------------------------------------------*/
17230 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017232
17233 if ( eHAL_STATUS_SUCCESS != halStatus )
17234 {
17235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17236 "Remove STA Key failed with status %s (%d)",
17237 WDI_getHALStatusMsgString(halStatus),
17238 halStatus);
17239 /* send the status to UMAC, don't return from here*/
17240 }
17241
17242 /*Notify UMAC*/
17243 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17244
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017246}/*WDI_ProcessRemoveStaKeyRsp*/
17247
17248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017251
17252 @param pWDICtx: pointer to the WLAN DAL context
17253 pEventData: pointer to the event information structure
17254
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 @see
17256 @return Result of the function call
17257*/
17258WDI_Status
17259WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017260(
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 WDI_ControlBlockType* pWDICtx,
17262 WDI_EventInfoType* pEventData
17263)
17264{
17265 WDI_Status wdiStatus;
17266 eHalStatus halStatus;
17267 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17269
17270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 -------------------------------------------------------------------------*/
17273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17274 ( NULL == pEventData->pEventData))
17275 {
17276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 }
17281
17282 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17283
17284 /*-------------------------------------------------------------------------
17285 Extract response and send it to UMAC
17286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 wpalMemoryCopy( &halStatus,
17288 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 sizeof(halStatus));
17290
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017292
17293 if ( eHAL_STATUS_SUCCESS != halStatus )
17294 {
17295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17296 "Set STA Key failed with status %s (%d)",
17297 WDI_getHALStatusMsgString(halStatus),
17298 halStatus);
17299 /* send the status to UMAC, don't return from here*/
17300 }
17301
17302 /*Notify UMAC*/
17303 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17304
Jeff Johnsone7245742012-09-05 17:12:55 -070017305 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017306}/*WDI_ProcessSetSTABcastKeyRsp*/
17307
17308/**
17309 @brief Process Remove STA Bcast Key Rsp function (called when a
17310 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017311
17312 @param pWDICtx: pointer to the WLAN DAL context
17313 pEventData: pointer to the event information structure
17314
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 @see
17316 @return Result of the function call
17317*/
17318WDI_Status
17319WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017320(
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 WDI_ControlBlockType* pWDICtx,
17322 WDI_EventInfoType* pEventData
17323)
17324{
17325 WDI_Status wdiStatus;
17326 eHalStatus halStatus;
17327 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17329
17330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 -------------------------------------------------------------------------*/
17333 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17334 ( NULL == pEventData->pEventData))
17335 {
17336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 }
17341
17342 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17343
17344 /*-------------------------------------------------------------------------
17345 Extract response and send it to UMAC
17346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 wpalMemoryCopy( &halStatus,
17348 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 sizeof(halStatus));
17350
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017352
17353 if ( eHAL_STATUS_SUCCESS != halStatus )
17354 {
17355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17356 "Remove STA Key failed with status %s (%d)",
17357 WDI_getHALStatusMsgString(halStatus),
17358 halStatus);
17359 /* send the status to UMAC, don't return from here*/
17360 }
17361
17362 /*Notify UMAC*/
17363 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17364
Jeff Johnsone7245742012-09-05 17:12:55 -070017365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017366}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17367
17368
17369/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017371==========================================================================*/
17372
17373/**
17374 @brief Process Add TSpec Rsp function (called when a response
17375 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017376
17377 @param pWDICtx: pointer to the WLAN DAL context
17378 pEventData: pointer to the event information structure
17379
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 @see
17381 @return Result of the function call
17382*/
17383WDI_Status
17384WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017385(
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 WDI_ControlBlockType* pWDICtx,
17387 WDI_EventInfoType* pEventData
17388)
17389{
17390 WDI_Status wdiStatus;
17391 eHalStatus halStatus;
17392 WDI_AddTsRspCb wdiAddTsRspCb;
17393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17394
17395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 -------------------------------------------------------------------------*/
17398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17399 ( NULL == pEventData->pEventData))
17400 {
17401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 }
17406
17407 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17408
17409 /*-------------------------------------------------------------------------
17410 Extract response and send it to UMAC
17411 -------------------------------------------------------------------------*/
17412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017414
17415 /*Notify UMAC*/
17416 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17417
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017419}/*WDI_ProcessAddTSpecRsp*/
17420
17421
Sunil Duttbd736ed2014-05-26 21:19:41 +053017422
17423#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17424
17425WDI_Status
17426WDI_ProcessLLStatsSetRsp
17427(
17428 WDI_ControlBlockType* pWDICtx,
17429 WDI_EventInfoType* pEventData
17430)
17431{
17432 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17433
17434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17435 "%s: Enter ", __func__);
17436 /*-------------------------------------------------------------------------
17437 Sanity check
17438 -------------------------------------------------------------------------*/
17439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17440 ( NULL == pEventData->pEventData))
17441 {
17442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17443 "%s: Invalid parameters", __func__);
17444 WDI_ASSERT(0);
17445 return WDI_STATUS_E_FAILURE;
17446 }
17447
17448 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17449
17450 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17451
17452 return WDI_STATUS_SUCCESS;
17453}
17454
17455WDI_Status
17456WDI_ProcessLLStatsGetRsp
17457(
17458 WDI_ControlBlockType* pWDICtx,
17459 WDI_EventInfoType* pEventData
17460)
17461{
17462 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17463
17464 /*-------------------------------------------------------------------------
17465 Sanity check
17466 -------------------------------------------------------------------------*/
17467 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17468 ( NULL == pEventData->pEventData))
17469 {
17470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17471 "%s: Invalid parameters", __func__);
17472 WDI_ASSERT(0);
17473 return WDI_STATUS_E_FAILURE;
17474 }
17475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17476 "%s: Enter ", __func__);
17477
17478 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17479
17480 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17481
17482 return WDI_STATUS_SUCCESS;
17483}
17484
17485WDI_Status
17486WDI_ProcessLLStatsClearRsp
17487(
17488 WDI_ControlBlockType* pWDICtx,
17489 WDI_EventInfoType* pEventData
17490)
17491{
17492 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17493
17494 /*-------------------------------------------------------------------------
17495 Sanity check
17496 -------------------------------------------------------------------------*/
17497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17498 ( NULL == pEventData->pEventData))
17499 {
17500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17501 "%s: Invalid parameters", __func__);
17502 WDI_ASSERT(0);
17503 return WDI_STATUS_E_FAILURE;
17504 }
17505
17506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17507 "%s: CLEAR RESPONSE CALL BACK", __func__);
17508 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17509
17510 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17511
17512 return WDI_STATUS_SUCCESS;
17513}
17514#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17515
Jeff Johnson295189b2012-06-20 16:38:30 -070017516/**
17517 @brief Process Del TSpec Rsp function (called when a response
17518 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017519
17520 @param pWDICtx: pointer to the WLAN DAL context
17521 pEventData: pointer to the event information structure
17522
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 @see
17524 @return Result of the function call
17525*/
17526WDI_Status
17527WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017528(
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 WDI_ControlBlockType* pWDICtx,
17530 WDI_EventInfoType* pEventData
17531)
17532{
17533 WDI_Status wdiStatus;
17534 eHalStatus halStatus;
17535 WDI_DelTsRspCb wdiDelTsRspCb;
17536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17537
17538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 -------------------------------------------------------------------------*/
17541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17542 ( NULL == pEventData->pEventData))
17543 {
17544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 }
17549
17550 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17551
17552 /*-------------------------------------------------------------------------
17553 Extract response and send it to UMAC
17554 -------------------------------------------------------------------------*/
17555 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017557
17558 /*Notify UMAC*/
17559 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17560
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562}/*WDI_ProcessDelTSpecRsp*/
17563
17564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017567
17568 @param pWDICtx: pointer to the WLAN DAL context
17569 pEventData: pointer to the event information structure
17570
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 @see
17572 @return Result of the function call
17573*/
17574WDI_Status
17575WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017576(
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 WDI_ControlBlockType* pWDICtx,
17578 WDI_EventInfoType* pEventData
17579)
17580{
17581 WDI_Status wdiStatus;
17582 eHalStatus halStatus;
17583 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17585
17586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 -------------------------------------------------------------------------*/
17589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17590 ( NULL == pEventData->pEventData))
17591 {
17592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 }
17597
17598 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17599
17600 /*-------------------------------------------------------------------------
17601 Extract response and send it to UMAC
17602 -------------------------------------------------------------------------*/
17603 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017605
17606 /*Notify UMAC*/
17607 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17608
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017610}/*WDI_ProcessUpdateEDCAParamsRsp*/
17611
17612
17613/**
17614 @brief Process Add BA Rsp function (called when a response
17615 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017616
17617 @param pWDICtx: pointer to the WLAN DAL context
17618 pEventData: pointer to the event information structure
17619
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 @see
17621 @return Result of the function call
17622*/
17623WDI_Status
17624WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017625(
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 WDI_ControlBlockType* pWDICtx,
17627 WDI_EventInfoType* pEventData
17628)
17629{
17630 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17631
17632 tAddBASessionRspParams halBASessionRsp;
17633 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17634
Jeff Johnsone7245742012-09-05 17:12:55 -070017635
Jeff Johnson295189b2012-06-20 16:38:30 -070017636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17637
17638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017640 -------------------------------------------------------------------------*/
17641 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17642 ( NULL == pEventData->pEventData))
17643 {
17644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 }
17649
17650 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17651
17652 /*-------------------------------------------------------------------------
17653 Extract response and send it to UMAC
17654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017655 wpalMemoryCopy( &halBASessionRsp,
17656 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 sizeof(halBASessionRsp));
17658
17659 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17660
Jeff Johnson43971f52012-07-17 12:26:56 -070017661 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 {
17663 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17664 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17665 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17666 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17667 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17668 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17669 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17670 }
17671
17672 /*Notify UMAC*/
17673 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17674
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017676}/*WDI_ProcessAddSessionBARsp*/
17677
17678
17679/**
17680 @brief Process Del BA Rsp function (called when a response
17681 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017682
17683 @param pWDICtx: pointer to the WLAN DAL context
17684 pEventData: pointer to the event information structure
17685
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 @see
17687 @return Result of the function call
17688*/
17689WDI_Status
17690WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017691(
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ControlBlockType* pWDICtx,
17693 WDI_EventInfoType* pEventData
17694)
17695{
17696 WDI_Status wdiStatus;
17697 eHalStatus halStatus;
17698 WDI_DelBARspCb wdiDelBARspCb;
17699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17700
17701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 -------------------------------------------------------------------------*/
17704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17705 ( NULL == pEventData->pEventData))
17706 {
17707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 }
17712
17713 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17714
17715 /*-------------------------------------------------------------------------
17716 Extract response and send it to UMAC
17717 -------------------------------------------------------------------------*/
17718 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017719 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017720
17721 if ( eHAL_STATUS_SUCCESS == halStatus )
17722 {
17723 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17724 }
17725
17726 /*Notify UMAC*/
17727 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17728
Jeff Johnsone7245742012-09-05 17:12:55 -070017729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017730}/*WDI_ProcessDelBARsp*/
17731
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017732#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017733/**
17734 @brief Process TSM Stats Rsp function (called when a response
17735 is being received over the bus from HAL)
17736
17737 @param pWDICtx: pointer to the WLAN DAL context
17738 pEventData: pointer to the event information structure
17739
17740 @see
17741 @return Result of the function call
17742*/
17743WDI_Status
17744WDI_ProcessTsmStatsRsp
17745(
17746 WDI_ControlBlockType* pWDICtx,
17747 WDI_EventInfoType* pEventData
17748)
17749{
17750 WDI_TsmRspCb wdiTsmStatsRspCb;
17751 tTsmStatsRspMsg halTsmStatsRspMsg;
17752 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17754
17755 /*-------------------------------------------------------------------------
17756 Sanity check
17757 -------------------------------------------------------------------------*/
17758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17759 ( NULL == pEventData->pEventData))
17760 {
17761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017763 WDI_ASSERT(0);
17764 return WDI_STATUS_E_FAILURE;
17765 }
17766
17767 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17768
17769 /*-------------------------------------------------------------------------
17770 Unpack HAL Response Message - the header was already extracted by the
17771 main Response Handling procedure
17772 -------------------------------------------------------------------------*/
17773 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17774 pEventData->pEventData,
17775 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17776
17777 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17778 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17779 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17780 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17781 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17782 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17783 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17784 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17785 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17786 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17787 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17788 halTsmStatsRspMsg.tsmStatsRspParams.status);
17789
17790 /*Notify UMAC*/
17791 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17792
17793 return WDI_STATUS_SUCCESS;
17794}/*WDI_ProcessTsmStatsRsp*/
17795
17796#endif
17797
17798
17799
17800/**
17801 @brief Process Flush AC Rsp function (called when a response
17802 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017803
17804 @param pWDICtx: pointer to the WLAN DAL context
17805 pEventData: pointer to the event information structure
17806
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 @see
17808 @return Result of the function call
17809*/
17810WDI_Status
17811WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017812(
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 WDI_ControlBlockType* pWDICtx,
17814 WDI_EventInfoType* pEventData
17815)
17816{
17817 WDI_Status wdiStatus;
17818 eHalStatus halStatus;
17819 WDI_FlushAcRspCb wdiFlushAcRspCb;
17820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17821
17822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 -------------------------------------------------------------------------*/
17825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17826 ( NULL == pEventData->pEventData))
17827 {
17828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 }
17833
17834 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17835
17836 /*-------------------------------------------------------------------------
17837 Extract response and send it to UMAC
17838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 wpalMemoryCopy( &halStatus,
17840 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 sizeof(halStatus));
17842
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017844
17845 /*Notify UMAC*/
17846 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17847
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849}/*WDI_ProcessFlushAcRsp*/
17850
17851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017854
17855 @param pWDICtx: pointer to the WLAN DAL context
17856 pEventData: pointer to the event information structure
17857
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 @see
17859 @return Result of the function call
17860*/
17861WDI_Status
17862WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017863(
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 WDI_ControlBlockType* pWDICtx,
17865 WDI_EventInfoType* pEventData
17866)
17867{
17868 WDI_Status wdiStatus;
17869 eHalStatus halStatus;
17870 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17872
17873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 -------------------------------------------------------------------------*/
17876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17877 ( NULL == pEventData->pEventData))
17878 {
17879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 }
17884
17885 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17886
17887 /*-------------------------------------------------------------------------
17888 Extract response and send it to UMAC
17889 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017890 wpalMemoryCopy( &halStatus,
17891 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017892 sizeof(halStatus));
17893
Jeff Johnsone7245742012-09-05 17:12:55 -070017894 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017895
17896 /*Notify UMAC*/
17897 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17898
Jeff Johnsone7245742012-09-05 17:12:55 -070017899 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017900}/*WDI_ProcessBtAmpEventRsp*/
17901
17902
17903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017906
17907 @param pWDICtx: pointer to the WLAN DAL context
17908 pEventData: pointer to the event information structure
17909
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 @see
17911 @return Result of the function call
17912*/
17913WDI_Status
17914WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017915(
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 WDI_ControlBlockType* pWDICtx,
17917 WDI_EventInfoType* pEventData
17918)
17919{
17920 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17921 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17922 tAddStaSelfRspMsg halAddStaSelfRsp;
17923 WDI_AddStaParams wdiAddSTAParam = {0};
17924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17925
17926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 -------------------------------------------------------------------------*/
17929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17930 ( NULL == pEventData->pEventData))
17931 {
17932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 }
17937
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17940
17941 /*-------------------------------------------------------------------------
17942 Extract response and send it to UMAC
17943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17947
17948
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 wdiAddSTASelfParams.wdiStatus =
17950 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017951
Jeff Johnsone7245742012-09-05 17:12:55 -070017952 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17958
17959 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17960 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17961 WDI_MAC_ADDR_LEN);
17962
17963
17964#ifdef HAL_SELF_STA_PER_BSS
17965
17966 /* At this point add the self-STA */
17967
17968 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17969 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17970 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17971
17972 //all DPU indices are the same for self STA
17973
17974 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17977 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17978 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17979 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17980 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17981
17982 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17983 WDI_MAC_ADDR_LEN);
17984
17985 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17986 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17987
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17990 {
17991 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17992 }
17993#endif
17994
17995 /*Notify UMAC*/
17996 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17997
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017999}/*WDI_ProcessAddSTASelfRsp*/
18000
18001
18002
18003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018004 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018006
18007 @param pWDICtx: pointer to the WLAN DAL context
18008 pEventData: pointer to the event information structure
18009
Jeff Johnson295189b2012-06-20 16:38:30 -070018010 @see
18011 @return Result of the function call
18012*/
18013WDI_Status
18014WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018015(
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 WDI_ControlBlockType* pWDICtx,
18017 WDI_EventInfoType* pEventData
18018)
18019{
18020 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18021 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18022 tDelStaSelfRspParams delStaSelfRspParams;
18023 wpt_uint8 ucStaIdx;
18024
18025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18026
18027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018029 -------------------------------------------------------------------------*/
18030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18031 ( NULL == pEventData->pEventData))
18032 {
18033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 }
18038
18039 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18040
18041 /*-------------------------------------------------------------------------
18042 Extract response and send it to UMAC
18043 -------------------------------------------------------------------------*/
18044
Jeff Johnsone7245742012-09-05 17:12:55 -070018045 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 (wpt_uint8*)pEventData->pEventData,
18047 sizeof(tDelStaSelfRspParams));
18048
Jeff Johnsone7245742012-09-05 17:12:55 -070018049 wdiDelStaSelfRspParams.wdiStatus =
18050 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018051
Jeff Johnsone7245742012-09-05 17:12:55 -070018052 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18054 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18055 {
18056 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 delStaSelfRspParams.selfMacAddr,
18059 &ucStaIdx);
18060 if(WDI_STATUS_E_FAILURE == wdiStatus)
18061 {
18062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018063 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 }
18067 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18068 }
18069
18070 /*Notify UMAC*/
18071 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18072
18073 return WDI_STATUS_SUCCESS;
18074}
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076#ifdef FEATURE_OEM_DATA_SUPPORT
18077/**
18078 @brief Start Oem Data Rsp function (called when a
18079 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018080
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 @param pWDICtx: pointer to the WLAN DAL context
18082 pEventData: pointer to the event information structure
18083
18084 @see
18085 @return Result of the function call
18086*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018087
18088WDI_Status
18089WDI_ProcessStartOemDataRsp
18090(
18091 WDI_ControlBlockType* pWDICtx,
18092 WDI_EventInfoType* pEventData
18093)
18094{
18095 WDI_oemDataRspCb wdiOemDataRspCb;
18096 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18097 tStartOemDataRspParams* halStartOemDataRspParams;
18098
18099 /*-------------------------------------------------------------------------
18100 Sanity check
18101 -------------------------------------------------------------------------*/
18102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18103 ( NULL == pEventData->pEventData))
18104 {
18105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018106 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 WDI_ASSERT(0);
18108 return WDI_STATUS_E_FAILURE;
18109 }
18110
18111 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18112
18113 /*-------------------------------------------------------------------------
18114 Extract response and send it to UMAC
18115 -------------------------------------------------------------------------*/
18116 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18117
18118
18119 //It is the responsibility of the application code to check for failure
18120 //conditions!
18121
18122 //Allocate memory for WDI OEM DATA RSP structure
18123 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18124
18125 if(NULL == wdiOemDataRspParams)
18126 {
18127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018128 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 pWDICtx, pEventData, pEventData->pEventData);
18130 WDI_ASSERT(0);
18131 return WDI_STATUS_E_FAILURE;
18132 }
18133
18134 /* Populate WDI structure members */
18135 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18136
18137 /*Notify UMAC*/
18138 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18139
18140 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18141 wpalMemoryFree(wdiOemDataRspParams);
18142
18143 return WDI_STATUS_SUCCESS;
18144}/*WDI_PrcoessStartOemDataRsp*/
18145#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018146
18147/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018148 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018149===========================================================================*/
18150
18151/**
18152 @brief Process Channel Switch Rsp function (called when a response
18153 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018154
18155 @param pWDICtx: pointer to the WLAN DAL context
18156 pEventData: pointer to the event information structure
18157
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 @see
18159 @return Result of the function call
18160*/
18161WDI_Status
18162WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018163(
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 WDI_ControlBlockType* pWDICtx,
18165 WDI_EventInfoType* pEventData
18166)
18167{
18168 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18169 WDI_SwitchChRspCb wdiChSwitchRspCb;
18170 tSwitchChannelRspParams halSwitchChannelRsp;
18171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18172
18173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 -------------------------------------------------------------------------*/
18176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18177 ( NULL == pEventData->pEventData))
18178 {
18179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 }
18184
18185 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18186
18187 /*-------------------------------------------------------------------------
18188 Extract response and send it to UMAC
18189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018190 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 (wpt_uint8*)pEventData->pEventData,
18192 sizeof(halSwitchChannelRsp));
18193
Jeff Johnsone7245742012-09-05 17:12:55 -070018194 wdiSwitchChRsp.wdiStatus =
18195 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18197
18198#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018199 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018200#endif
18201
18202 /*Notify UMAC*/
18203 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18204
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018206}/*WDI_ProcessChannelSwitchRsp*/
18207
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018208/**
18209 @brief Process Channel Switch Rsp function (called when a response
18210 is being received over the bus from HAL against
18211 WDI_ProcessChannelSwitchReq_V1)
18212
18213 @param pWDICtx: pointer to the WLAN DAL context
18214 pEventData: pointer to the event information structure
18215
18216 @see
18217 @return Result of the function call
18218*/
18219
18220WDI_Status
18221WDI_ProcessChannelSwitchRsp_V1
18222(
18223 WDI_ControlBlockType* pWDICtx,
18224 WDI_EventInfoType* pEventData
18225)
18226{
18227 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18228 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18229 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18231
18232 /*-------------------------------------------------------------------------
18233 Sanity check
18234 -------------------------------------------------------------------------*/
18235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18236 ( NULL == pEventData->pEventData))
18237 {
18238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18239 "%s: Invalid parameters", __func__);
18240 WDI_ASSERT(0);
18241 return WDI_STATUS_E_FAILURE;
18242 }
18243
18244 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18245
18246 /*-------------------------------------------------------------------------
18247 Extract response and send it to UMAC
18248 -------------------------------------------------------------------------*/
18249 wpalMemoryCopy( &halSwitchChannelRsp,
18250 (wpt_uint8*)pEventData->pEventData,
18251 sizeof(halSwitchChannelRsp));
18252
18253 wdiSwitchChRsp.wdiStatus =
18254 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18255 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18256
18257#ifdef WLAN_FEATURE_VOWIFI
18258 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18259#endif
18260
18261 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18262 if (( NULL == wdiChSwitchRspCb ) )
18263 {
18264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18265 "%s: ### Call back function is null", __func__);
18266 WDI_ASSERT(0);
18267 return WDI_STATUS_E_FAILURE;
18268 }
18269 /*Notify UMAC*/
18270 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18271
18272 return WDI_STATUS_SUCCESS;
18273}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018274
18275/**
18276 @brief Process Config STA Rsp function (called when a response
18277 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018278
18279 @param pWDICtx: pointer to the WLAN DAL context
18280 pEventData: pointer to the event information structure
18281
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 @see
18283 @return Result of the function call
18284*/
18285WDI_Status
18286WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018287(
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 WDI_ControlBlockType* pWDICtx,
18289 WDI_EventInfoType* pEventData
18290)
18291{
18292 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18293 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18294 WDI_AddStaParams wdiAddSTAParam;
18295
18296 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018297 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018298
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18301
18302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 -------------------------------------------------------------------------*/
18305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18306 ( NULL == pEventData->pEventData))
18307 {
18308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 }
18313
18314 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18315
18316 /*-------------------------------------------------------------------------
18317 Extract response and send it to UMAC
18318 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18320 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 sizeof(halConfigStaRsp.configStaRspParams));
18322
18323
18324 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18325 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18326 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18327 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18328 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18329
18330 /* MAC Address of STA - take from cache as it does not come back in the
18331 response*/
18332 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018335
18336 wdiCfgSTAParams.wdiStatus =
18337 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018338
18339 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18340 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18341 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18342
18343 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18344 {
18345 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18346 {
18347 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018348 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18350 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018351
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018353 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 wdiAddSTAParam.ucHTCapable =
18356 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18357 wdiAddSTAParam.ucStaType =
18358 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018359 wdiAddSTAParam.ucRmfEnabled =
18360 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018361
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018363 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18364 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018366
18367 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18368 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18369 WDI_MAC_ADDR_LEN);
18370
18371 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18372 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18373 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018374
18375 if ( NULL == pBSSSes )
18376 {
18377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18378 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018379
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 }
18383
18384 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018391 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018394
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18396 }
18397 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18398 {
18399 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18400
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018405 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018408 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018409 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018410 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 halConfigStaRsp.configStaRspParams.ucUcastSig;
18415 }
18416 }
18417
18418 /*Notify UMAC*/
18419 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18420
Jeff Johnsone7245742012-09-05 17:12:55 -070018421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018422}/*WDI_ProcessConfigStaRsp*/
18423
18424
18425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018426 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018427 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018428
18429 @param pWDICtx: pointer to the WLAN DAL context
18430 pEventData: pointer to the event information structure
18431
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 @see
18433 @return Result of the function call
18434*/
18435WDI_Status
18436WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018437(
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 WDI_ControlBlockType* pWDICtx,
18439 WDI_EventInfoType* pEventData
18440)
18441{
18442 WDI_Status wdiStatus;
18443 eHalStatus halStatus;
18444 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18445
18446 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18449
18450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 -------------------------------------------------------------------------*/
18453 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18454 ( NULL == pEventData->pEventData))
18455 {
18456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018457 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 }
18461
18462 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18463
18464 wpalMutexAcquire(&pWDICtx->wptMutex);
18465
18466 /*If the link is being transitioned to idle - the BSS is to be deleted
18467 - this type of ending a session is possible when UMAC has failed an
18468 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018469 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018470 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18471 {
18472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18476 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18477 &pBSSSes);
18478
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 /*-----------------------------------------------------------------------
18480 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018481 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 -----------------------------------------------------------------------*/
18483 if ( NULL == pBSSSes )
18484 {
18485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18486 "Set link response received outside association session");
18487 }
18488 else
18489 {
18490 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18491 will be del BSS coming after this to stop the beaconing & cleaning up the
18492 sessions*/
18493 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18494 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18495 {
18496 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 -----------------------------------------------------------------------*/
18499 WDI_DeleteSession(pWDICtx, pBSSSes);
18500
18501 /*-----------------------------------------------------------------------
18502 Check to see if this association is in progress - if so disable the
18503 flag as this has ended
18504 -----------------------------------------------------------------------*/
18505 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 /*Association no longer in progress */
18508 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18509 /*Association no longer in progress - prepare pending assoc for processing*/
18510 WDI_DequeueAssocRequest(pWDICtx);
18511 }
18512 }
18513 }
18514 }
18515 /* If the link state has been set to POST ASSOC, reset the "association in
18516 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18519 {
18520 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18521 WDI_DequeueAssocRequest(pWDICtx);
18522 }
18523
18524 wpalMutexRelease(&pWDICtx->wptMutex);
18525
18526 /*-------------------------------------------------------------------------
18527 Extract response and send it to UMAC
18528 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wpalMemoryCopy( &halStatus,
18530 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 sizeof(halStatus));
18532
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018534
18535 /*Notify UMAC*/
18536 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18537
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018539}/*WDI_ProcessSetLinkStateRsp*/
18540
18541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018544
18545 @param pWDICtx: pointer to the WLAN DAL context
18546 pEventData: pointer to the event information structure
18547
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 @see
18549 @return Result of the function call
18550*/
18551WDI_Status
18552WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018553(
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 WDI_ControlBlockType* pWDICtx,
18555 WDI_EventInfoType* pEventData
18556)
18557{
18558 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18559 WDI_GetStatsRspCb wdiGetStatsRspCb;
18560 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018561
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18563
18564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 -------------------------------------------------------------------------*/
18567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18568 ( NULL == pEventData->pEventData))
18569 {
18570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018574 }
18575
18576 /*-------------------------------------------------------------------------
18577 Extract response and send it to UMAC
18578 -------------------------------------------------------------------------*/
18579 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18580
18581 /*allocate the stats response buffer */
18582 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18583 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18584 + sizeof(WDI_GetStatsRspParamsType));
18585
18586 if(NULL == wdiGetStatsRsp)
18587 {
18588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018589 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 pWDICtx, pEventData, pEventData->pEventData);
18591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 }
18594
18595 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18596
18597 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18598 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18599 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18600 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18601 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18602 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18603
18604 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18605 wpalMemoryCopy(wdiGetStatsRsp + 1,
18606 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18607 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18608
18609 /*Notify UMAC*/
18610 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18611
18612 wpalMemoryFree(wdiGetStatsRsp);
18613
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018615}/*WDI_ProcessGetStatsRsp*/
18616
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018617#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018618/**
18619 @brief Process Get Roam Rssi Rsp function (called when a response is
18620 being received over the bus from HAL)
18621
18622 @param pWDICtx: pointer to the WLAN DAL context
18623 pEventData: pointer to the event information structure
18624
18625 @see
18626 @return Result of the function call
18627*/
18628WDI_Status
18629WDI_ProcessGetRoamRssiRsp
18630(
18631 WDI_ControlBlockType* pWDICtx,
18632 WDI_EventInfoType* pEventData
18633)
18634{
18635 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18636 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18637 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18639
18640 /*-------------------------------------------------------------------------
18641 Sanity check
18642 -------------------------------------------------------------------------*/
18643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18644 ( NULL == pEventData->pEventData))
18645 {
18646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18647 "%s: Invalid parameters", __func__);
18648 WDI_ASSERT(0);
18649 return WDI_STATUS_E_FAILURE;
18650 }
18651
18652 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18653 if(NULL == wdiGetRoamRssiRspCb)
18654 {
18655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18656 "%s: call back function is NULL", __func__);
18657 WDI_ASSERT(0);
18658 return WDI_STATUS_E_FAILURE;
18659 }
18660
18661 /*-------------------------------------------------------------------------
18662 Extract response and send it to UMAC
18663 -------------------------------------------------------------------------*/
18664 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18665 pEventData->pEventData,
18666 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18667
18668 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18669 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18670 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18671
18672 /*Notify UMAC*/
18673 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18674
18675 return WDI_STATUS_SUCCESS;
18676}/*WDI_ProcessGetRoamRssiRsp*/
18677#endif
18678
Jeff Johnson295189b2012-06-20 16:38:30 -070018679
18680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018683
18684 @param pWDICtx: pointer to the WLAN DAL context
18685 pEventData: pointer to the event information structure
18686
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 @see
18688 @return Result of the function call
18689*/
18690WDI_Status
18691WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018692(
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 WDI_ControlBlockType* pWDICtx,
18694 WDI_EventInfoType* pEventData
18695)
18696{
18697 WDI_Status wdiStatus;
18698 eHalStatus halStatus;
18699 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18701
18702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 -------------------------------------------------------------------------*/
18705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18706 ( NULL == pEventData->pEventData))
18707 {
18708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 }
18713
18714 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18715
18716 /*-------------------------------------------------------------------------
18717 Extract response and send it to UMAC
18718 -------------------------------------------------------------------------*/
18719 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018721
18722 /*Notify UMAC*/
18723 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18724
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726}/*WDI_ProcessUpdateCfgRsp*/
18727
18728
18729
18730/**
18731 @brief Process Add BA Rsp function (called when a response
18732 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018733
18734 @param pWDICtx: pointer to the WLAN DAL context
18735 pEventData: pointer to the event information structure
18736
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 @see
18738 @return Result of the function call
18739*/
18740WDI_Status
18741WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018742(
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ControlBlockType* pWDICtx,
18744 WDI_EventInfoType* pEventData
18745)
18746{
18747 WDI_AddBARspCb wdiAddBARspCb;
18748
18749 tAddBARspParams halAddBARsp;
18750 WDI_AddBARspinfoType wdiAddBARsp;
18751
18752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18753
18754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 -------------------------------------------------------------------------*/
18757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18758 ( NULL == pEventData->pEventData))
18759 {
18760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 }
18765
18766 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18767
18768 /*-------------------------------------------------------------------------
18769 Extract response and send it to UMAC
18770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018771 wpalMemoryCopy( &halAddBARsp,
18772 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018773 sizeof(halAddBARsp));
18774
18775 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18776
Jeff Johnson43971f52012-07-17 12:26:56 -070018777 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 {
18779 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18780 }
18781
18782 /*Notify UMAC*/
18783 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18784
Jeff Johnsone7245742012-09-05 17:12:55 -070018785 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018786}/*WDI_ProcessAddSessionBARsp*/
18787
18788/**
18789 @brief Process Add BA Rsp function (called when a response
18790 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018791
18792 @param pWDICtx: pointer to the WLAN DAL context
18793 pEventData: pointer to the event information structure
18794
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 @see
18796 @return Result of the function call
18797*/
18798WDI_Status
18799WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018800(
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 WDI_ControlBlockType* pWDICtx,
18802 WDI_EventInfoType* pEventData
18803)
18804{
18805 WDI_TriggerBARspCb wdiTriggerBARspCb;
18806
18807 tTriggerBARspParams* halTriggerBARsp;
18808 tTriggerBaRspCandidate* halBaCandidate;
18809 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18810 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18811 wpt_uint16 index;
18812 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018813 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18815
18816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 -------------------------------------------------------------------------*/
18819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18820 ( NULL == pEventData->pEventData))
18821 {
18822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018826 }
18827
18828 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18829
18830 /*-------------------------------------------------------------------------
18831 Extract response and send it to UMAC
18832 -------------------------------------------------------------------------*/
18833 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18834
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018835 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18836
18837 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18838 {
18839 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018840 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018842
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018843 if(NULL == wdiTriggerBARsp)
18844 {
18845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018846 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018847 pWDICtx, pEventData, pEventData->pEventData);
18848 WDI_ASSERT(0);
18849 return WDI_STATUS_E_FAILURE;
18850 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018851
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018852 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18853
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18857
18858 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18859 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18860
18861 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18862 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18865 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18866 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18871 }
18872 wdiTriggerBARspCandidate++;
18873 halBaCandidate++;
18874 }
18875 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018876 else
18877 {
18878 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18879
18880 if(NULL == wdiTriggerBARsp)
18881 {
18882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018883 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018884 pWDICtx, pEventData, pEventData->pEventData);
18885 WDI_ASSERT(0);
18886 return WDI_STATUS_E_FAILURE;
18887 }
18888
18889 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18890
18891 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018892
18893 /*Notify UMAC*/
18894 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18895
18896 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018898}/*WDI_ProcessAddSessionBARsp*/
18899
18900/**
18901 @brief Process Update Beacon Params Rsp function (called when a response
18902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018903
18904 @param pWDICtx: pointer to the WLAN DAL context
18905 pEventData: pointer to the event information structure
18906
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 @see
18908 @return Result of the function call
18909*/
18910WDI_Status
18911WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018912(
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 WDI_ControlBlockType* pWDICtx,
18914 WDI_EventInfoType* pEventData
18915)
18916{
18917 WDI_Status wdiStatus;
18918 eHalStatus halStatus;
18919 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18921
18922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 -------------------------------------------------------------------------*/
18925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18926 ( NULL == pEventData->pEventData))
18927 {
18928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018929 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018932 }
18933
18934 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18935
18936 /*-------------------------------------------------------------------------
18937 Extract response and send it to UMAC
18938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 wpalMemoryCopy( &halStatus,
18940 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 sizeof(halStatus));
18942
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018944
18945 /*Notify UMAC*/
18946 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18947
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018949}/*WDI_ProcessUpdateBeaconParamsRsp*/
18950
18951/**
18952 @brief Process Send Beacon template Rsp function (called when a response
18953 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018954
18955 @param pWDICtx: pointer to the WLAN DAL context
18956 pEventData: pointer to the event information structure
18957
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 @see
18959 @return Result of the function call
18960*/
18961WDI_Status
18962WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018963(
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDI_ControlBlockType* pWDICtx,
18965 WDI_EventInfoType* pEventData
18966)
18967{
18968 WDI_Status wdiStatus;
18969 eHalStatus halStatus;
18970 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18972
18973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 -------------------------------------------------------------------------*/
18976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18977 ( NULL == pEventData->pEventData))
18978 {
18979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 }
18984
18985 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18986
18987 /*-------------------------------------------------------------------------
18988 Extract response and send it to UMAC
18989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 wpalMemoryCopy( &halStatus,
18991 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 sizeof(halStatus));
18993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018995
18996 /*Notify UMAC*/
18997 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019000}/*WDI_ProcessSendBeaconParamsRsp*/
19001
Jeff Johnsone7245742012-09-05 17:12:55 -070019002
Jeff Johnson295189b2012-06-20 16:38:30 -070019003/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019006
19007 @param pWDICtx: pointer to the WLAN DAL context
19008 pEventData: pointer to the event information structure
19009
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 @see
19011 @return Result of the function call
19012*/
19013WDI_Status
19014WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019015(
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 WDI_ControlBlockType* pWDICtx,
19017 WDI_EventInfoType* pEventData
19018)
19019{
19020 WDI_Status wdiStatus;
19021 eHalStatus halStatus;
19022 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19024
19025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 -------------------------------------------------------------------------*/
19028 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19029 ( NULL == pEventData->pEventData))
19030 {
19031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 }
19036
19037 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19038
19039 /*-------------------------------------------------------------------------
19040 Extract response and send it to UMAC
19041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 wpalMemoryCopy( &halStatus,
19043 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 sizeof(halStatus));
19045
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019047
19048 /*Notify UMAC*/
19049 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19050
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19053
19054 /**
19055 @brief Process Set Max Tx Power Rsp function (called when a response
19056 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019057
19058 @param pWDICtx: pointer to the WLAN DAL context
19059 pEventData: pointer to the event information structure
19060
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 @see
19062 @return Result of the function call
19063*/
19064WDI_Status
19065WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019066(
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 WDI_ControlBlockType* pWDICtx,
19068 WDI_EventInfoType* pEventData
19069)
19070{
19071 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019072
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019074
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19077
19078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 -------------------------------------------------------------------------*/
19081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19082 ( NULL == pEventData->pEventData))
19083 {
19084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019088 }
19089
19090 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19091
19092 /*-------------------------------------------------------------------------
19093 Extract response and send it to UMAC
19094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19096 pEventData->pEventData,
19097 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019098
19099 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19100 {
19101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19102 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 }
19105
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019109
19110 /*Notify UMAC*/
19111 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19112
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019114}
19115
schang86c22c42013-03-13 18:41:24 -070019116 /**
19117 @brief Process Set Tx Power Rsp function (called when a response
19118 is being received over the bus from HAL)
19119
19120 @param pWDICtx: pointer to the WLAN DAL context
19121 pEventData: pointer to the event information structure
19122
19123 @see
19124 @return Result of the function call
19125*/
19126WDI_Status
19127WDI_ProcessSetTxPowerRsp
19128(
19129 WDI_ControlBlockType* pWDICtx,
19130 WDI_EventInfoType* pEventData
19131)
19132{
19133 tSetTxPwrRspMsg halTxpowerrsp;
19134 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19135 WDA_SetTxPowerRspCb wdiReqStatusCb;
19136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19137
19138 /*-------------------------------------------------------------------------
19139 Sanity check
19140 -------------------------------------------------------------------------*/
19141 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19142 ( NULL == pEventData->pEventData))
19143 {
19144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19145 "%s: Invalid parameters", __func__);
19146 WDI_ASSERT(0);
19147 return WDI_STATUS_E_FAILURE;
19148 }
19149
19150 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19151
19152 /*-------------------------------------------------------------------------
19153 Extract response and send it to UMAC
19154 -------------------------------------------------------------------------*/
19155 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19156 pEventData->pEventData,
19157 sizeof(halTxpowerrsp.setTxPwrRspParams));
19158
19159 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19160 {
19161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19162 "Error status returned in Set Tx Power Response ");
19163 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19164 return WDI_STATUS_E_FAILURE;
19165 }
19166
19167 wdiSetTxPowerRspMsg.wdiStatus =
19168 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19169
19170 /*Notify UMAC*/
19171 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19172
19173 return WDI_STATUS_SUCCESS;
19174}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019175
19176/**
19177 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19178 is being received over the bus from HAL)
19179
19180 @param pWDICtx: pointer to the WLAN DAL context
19181 pEventData: pointer to the event information structure
19182
19183 @see
19184 @return Result of the function call
19185*/
19186WDI_Status
19187WDI_ProcessSetMaxTxPowerPerBandRsp
19188(
19189 WDI_ControlBlockType* pWDICtx,
19190 WDI_EventInfoType* pEventData
19191)
19192{
19193 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19194 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19195 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19197
19198 /*-------------------------------------------------------------------------
19199 Sanity check
19200 -------------------------------------------------------------------------*/
19201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19202 ( NULL == pEventData->pEventData))
19203 {
19204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19205 "%s: Invalid parameters", __func__);
19206 WDI_ASSERT(0);
19207 return WDI_STATUS_E_FAILURE;
19208 }
19209
19210 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19211
19212 /*-------------------------------------------------------------------------
19213 Extract response and send it to UMAC
19214 -------------------------------------------------------------------------*/
19215 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19216 pEventData->pEventData,
19217 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19218
19219 if (eHAL_STATUS_SUCCESS !=
19220 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19221 {
19222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19223 "Error status returned in Set Max Tx Power Per Band Response");
19224 return WDI_STATUS_E_FAILURE;
19225 }
19226
19227 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19228 WDI_HAL_2_WDI_STATUS(
19229 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19230
19231 /* Notify UMAC */
19232 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19233
19234 return WDI_STATUS_SUCCESS;
19235}
19236
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019237#ifdef FEATURE_WLAN_TDLS
19238/**
19239 @brief Process TDLS Link Establish Rsp function (called
19240 when a response is being received over the bus from HAL)
19241
19242 @param pWDICtx: pointer to the WLAN DAL context
19243 pEventData: pointer to the event information structure
19244
19245 @see
19246 @return Result of the function call
19247*/
19248WDI_Status
19249WDI_ProcessLinkEstablishReqRsp
19250(
19251 WDI_ControlBlockType* pWDICtx,
19252 WDI_EventInfoType* pEventData
19253)
19254{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019255 eHalStatus halStatus;
19256 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019257 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19258 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19259
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19261
19262 /*-------------------------------------------------------------------------
19263 Sanity check
19264 -------------------------------------------------------------------------*/
19265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19266 ( NULL == pEventData->pEventData))
19267 {
19268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19269 "%s: Invalid parameters", __func__);
19270 WDI_ASSERT(0);
19271 return WDI_STATUS_E_FAILURE;
19272 }
19273
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019274 /*-------------------------------------------------------------------------
19275 Extract indication and send it to UMAC
19276 -------------------------------------------------------------------------*/
19277 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19278 pEventData->pEventData,
19279 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19280
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019281 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19282
19283 /*-------------------------------------------------------------------------
19284 Extract response and send it to UMAC
19285 -------------------------------------------------------------------------*/
19286 wpalMemoryCopy( &halStatus,
19287 pEventData->pEventData,
19288 sizeof(halStatus));
19289
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019290 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19291 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019292
19293 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019294 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019295
19296 return WDI_STATUS_SUCCESS;
19297}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019298
19299
19300
19301/**
19302 @brief Process TDLS Chan switch Rsp function (called
19303 when a response is being received over the bus from HAL)
19304
19305 @param pWDICtx: pointer to the WLAN DAL context
19306 pEventData: pointer to the event information structure
19307
19308 @see
19309 @return Result of the function call
19310*/
19311WDI_Status
19312WDI_ProcessChanSwitchReqRsp
19313(
19314 WDI_ControlBlockType* pWDICtx,
19315 WDI_EventInfoType* pEventData
19316)
19317{
19318 eHalStatus halStatus;
19319 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19320 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19321 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19322
19323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19324
19325 /*-------------------------------------------------------------------------
19326 Sanity check
19327 -------------------------------------------------------------------------*/
19328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19329 ( NULL == pEventData->pEventData))
19330 {
19331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19332 "%s: Invalid parameters", __func__);
19333 WDI_ASSERT(0);
19334 return WDI_STATUS_E_FAILURE;
19335 }
19336
19337 /*-------------------------------------------------------------------------
19338 Extract indication and send it to UMAC
19339 -------------------------------------------------------------------------*/
19340 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19341 pEventData->pEventData,
19342 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19343
19344 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19345
19346 /*-------------------------------------------------------------------------
19347 Extract response and send it to UMAC
19348 -------------------------------------------------------------------------*/
19349 wpalMemoryCopy( &halStatus,
19350 pEventData->pEventData,
19351 sizeof(halStatus));
19352
19353 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19354 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19355
19356 /*Notify UMAC*/
19357 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19358
19359 return WDI_STATUS_SUCCESS;
19360}/*WDI_ProcessChanSwitchReqRsp*/
19361
19362
19363
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019364#endif
schang86c22c42013-03-13 18:41:24 -070019365
Jeff Johnson295189b2012-06-20 16:38:30 -070019366/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019369
19370 @param pWDICtx: pointer to the WLAN DAL context
19371 pEventData: pointer to the event information structure
19372
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 @see
19374 @return Result of the function call
19375*/
19376WDI_Status
19377WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019378(
Jeff Johnson295189b2012-06-20 16:38:30 -070019379 WDI_ControlBlockType* pWDICtx,
19380 WDI_EventInfoType* pEventData
19381)
19382{
19383 WDI_Status wdiStatus;
19384 eHalStatus halStatus;
19385 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19387
19388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 -------------------------------------------------------------------------*/
19391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19392 ( NULL == pEventData->pEventData))
19393 {
19394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 }
19399
19400 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19401
19402 /*-------------------------------------------------------------------------
19403 Extract response and send it to UMAC
19404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019405 wpalMemoryCopy( &halStatus,
19406 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 sizeof(halStatus));
19408
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
19411 /*Notify UMAC*/
19412 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19413
Jeff Johnsone7245742012-09-05 17:12:55 -070019414 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019415}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019416/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019417 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019419
19420 @param pWDICtx: pointer to the WLAN DAL context
19421 pEventData: pointer to the event information structure
19422
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 @see
19424 @return Result of the function call
19425*/
19426WDI_Status
19427WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019428(
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 WDI_ControlBlockType* pWDICtx,
19430 WDI_EventInfoType* pEventData
19431)
19432{
19433 WDI_Status wdiStatus;
19434 eHalStatus halStatus;
19435 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019436 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19438
19439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 -------------------------------------------------------------------------*/
19442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19443 ( NULL == pEventData->pEventData))
19444 {
19445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 }
19450
19451 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19452
19453 /*-------------------------------------------------------------------------
19454 Extract response and send it to UMAC
19455 -------------------------------------------------------------------------*/
19456 halStatus = *((eHalStatus*)pEventData->pEventData);
19457
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019459
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019460 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19461 * Other module states are taken care by PMC.
19462 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19463 */
19464 if (wdiStatus != WDI_STATUS_SUCCESS) {
19465
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19467 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19468 halStatus);
19469 /* Call Back is not required as we are putting the DXE in FULL
19470 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019471 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19472
19473 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019475 "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 -080019476 WDI_ASSERT(0);
19477 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019478 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 /*Notify UMAC*/
19480 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19481
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019483}/*WDI_ProcessEnterImpsRsp*/
19484
19485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019486 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019487 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019488
19489 @param pWDICtx: pointer to the WLAN DAL context
19490 pEventData: pointer to the event information structure
19491
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 @see
19493 @return Result of the function call
19494*/
19495WDI_Status
19496WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019497(
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 WDI_ControlBlockType* pWDICtx,
19499 WDI_EventInfoType* pEventData
19500)
19501{
19502 WDI_Status wdiStatus;
19503 eHalStatus halStatus;
19504 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019505 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19507
19508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 -------------------------------------------------------------------------*/
19511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19512 ( NULL == pEventData->pEventData))
19513 {
19514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 }
19519
19520 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19521
19522 /*-------------------------------------------------------------------------
19523 Extract response and send it to UMAC
19524 -------------------------------------------------------------------------*/
19525 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019526 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019527
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019528 if (halStatus != eHAL_STATUS_SUCCESS)
19529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19530 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19531
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019533 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19534 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19535 {
19536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019537 "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 -080019538 WDI_ASSERT(0);
19539 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 /*Notify UMAC*/
19541 wdiExitImpsRspCb( 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_ProcessExitImpsRsp*/
19545
19546/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 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_ProcessEnterBmpsRsp
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{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019563 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19564 tHalEnterBmpsRspParams halEnterBmpsRsp;
19565 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19566 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019567 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19569
19570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 -------------------------------------------------------------------------*/
19573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19574 ( NULL == pEventData->pEventData))
19575 {
19576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 }
19581
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019583 Extract response and send it to UMAC
19584 -------------------------------------------------------------------------*/
19585 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19586 {
19587 wpalMemoryCopy( &halEnterBmpsRsp,
19588 pEventData->pEventData,
19589 sizeof(halEnterBmpsRsp));
19590
19591 //Used to print debug message
19592 halStatus = halEnterBmpsRsp.status;
19593 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19594 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19595 }
19596 else
19597 {
19598 halStatus = *((eHalStatus*)pEventData->pEventData);
19599 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19600 }
19601
19602 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019603
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019604 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19605 * Other module states are taken care by PMC.
19606 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19607 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019608 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19609 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019610
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019612 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19613 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019614 /* Call Back is not required as we are putting the DXE in FULL
19615 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019616 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19617 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19618 {
19619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019620 "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 -080019621 WDI_ASSERT(0);
19622 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019623 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019624 }
19625
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019627 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019628
Jeff Johnsone7245742012-09-05 17:12:55 -070019629 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019630}/*WDI_ProcessEnterBmpsRsp*/
19631
19632/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019635
19636 @param pWDICtx: pointer to the WLAN DAL context
19637 pEventData: pointer to the event information structure
19638
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 @see
19640 @return Result of the function call
19641*/
19642WDI_Status
19643WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019644(
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 WDI_ControlBlockType* pWDICtx,
19646 WDI_EventInfoType* pEventData
19647)
19648{
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 eHalStatus halStatus;
19650 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019651 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019652 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19653 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19655
19656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 -------------------------------------------------------------------------*/
19659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19660 ( NULL == pEventData->pEventData))
19661 {
19662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 }
19667
19668 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19669
19670 /*-------------------------------------------------------------------------
19671 Extract response and send it to UMAC
19672 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019673
19674 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19675 {
19676 wpalMemoryCopy( &halExitBmpsRsp,
19677 pEventData->pEventData,
19678 sizeof(halExitBmpsRsp));
19679
19680 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19681 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19682 }
19683 else
19684 {
19685 halStatus = *((eHalStatus*)pEventData->pEventData);
19686 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19687 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019688
19689 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019690 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19691 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19692 {
19693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019694 "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 -080019695 WDI_ASSERT(0);
19696 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19698
19699 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019700 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019701
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019703}/*WDI_ProcessExitBmpsRsp*/
19704
19705/**
19706 @brief Process Enter UAPSD Rsp function (called when a response
19707 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019708
19709 @param pWDICtx: pointer to the WLAN DAL context
19710 pEventData: pointer to the event information structure
19711
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 @see
19713 @return Result of the function call
19714*/
19715WDI_Status
19716WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019717(
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 WDI_ControlBlockType* pWDICtx,
19719 WDI_EventInfoType* pEventData
19720)
19721{
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019723 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019725 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19726
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19728
19729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 -------------------------------------------------------------------------*/
19732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19733 ( NULL == pEventData->pEventData))
19734 {
19735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 }
19740
19741 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19742
19743 /*-------------------------------------------------------------------------
19744 Extract response and send it to UMAC
19745 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019746 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19747 {
19748 wpalMemoryCopy( &halEnterUapsdRsp,
19749 pEventData->pEventData,
19750 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019751
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019752 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19753 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19754 }
19755 else
19756 {
19757 halStatus = *((eHalStatus*)pEventData->pEventData);
19758 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19759 }
19760
19761 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019762 {
19763 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19764 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19765 // the traffic to decide when to suspend the trigger frames when there is no traffic
19766 // activity on the trigger enabled ACs
19767 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19768
19769#ifdef WLAN_PERF
19770 // Increment the BD signature to refresh the fast path BD utilization
19771 pWDICtx->uBdSigSerialNum++;
19772#endif
19773 }
19774
19775 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019776 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019777
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779}/*WDI_ProcessEnterUapsdRsp*/
19780
19781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019784
19785 @param pWDICtx: pointer to the WLAN DAL context
19786 pEventData: pointer to the event information structure
19787
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 @see
19789 @return Result of the function call
19790*/
19791WDI_Status
19792WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019793(
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 WDI_ControlBlockType* pWDICtx,
19795 WDI_EventInfoType* pEventData
19796)
19797{
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 eHalStatus halStatus;
19799 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019800 tHalExitUapsdRspParams halExitUapsdRsp;
19801 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19803
19804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 -------------------------------------------------------------------------*/
19807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19808 ( NULL == pEventData->pEventData))
19809 {
19810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019814 }
19815
19816 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19817
19818 /*-------------------------------------------------------------------------
19819 Extract response and send it to UMAC
19820 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019821 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19822 {
19823 wpalMemoryCopy( &halExitUapsdRsp,
19824 pEventData->pEventData,
19825 sizeof(halExitUapsdRsp));
19826
19827 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19828 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19829 }
19830 else
19831 {
19832 halStatus = *((eHalStatus*)pEventData->pEventData);
19833 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19834 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19836 // directly instead of the FW WQ.
19837 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19838
19839#ifdef WLAN_PERF
19840 // Increment the BD signature to refresh the fast path BD utilization
19841 pWDICtx->uBdSigSerialNum++;
19842#endif
19843
19844 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019845 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019846
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019848}/*WDI_ProcessExitUapsdRsp*/
19849
19850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019853
19854 @param pWDICtx: pointer to the WLAN DAL context
19855 pEventData: pointer to the event information structure
19856
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 @see
19858 @return Result of the function call
19859*/
19860WDI_Status
19861WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019862(
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 WDI_ControlBlockType* pWDICtx,
19864 WDI_EventInfoType* pEventData
19865)
19866{
19867 WDI_Status wdiStatus;
19868 eHalStatus halStatus;
19869 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19871
19872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 -------------------------------------------------------------------------*/
19875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19876 ( NULL == pEventData->pEventData))
19877 {
19878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 }
19883
19884 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19885
19886 /*-------------------------------------------------------------------------
19887 Extract response and send it to UMAC
19888 -------------------------------------------------------------------------*/
19889 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019890 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019891
19892 /*Notify UMAC*/
19893 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19894
Jeff Johnsone7245742012-09-05 17:12:55 -070019895 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019896}/*WDI_ProcessSetUapsdAcParamsRsp*/
19897
19898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019899 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019901
19902 @param pWDICtx: pointer to the WLAN DAL context
19903 pEventData: pointer to the event information structure
19904
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 @see
19906 @return Result of the function call
19907*/
19908WDI_Status
19909WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019910(
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 WDI_ControlBlockType* pWDICtx,
19912 WDI_EventInfoType* pEventData
19913)
19914{
19915 WDI_Status wdiStatus;
19916 eHalStatus halStatus;
19917 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19919
19920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 -------------------------------------------------------------------------*/
19923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19924 ( NULL == pEventData->pEventData))
19925 {
19926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019930 }
19931
19932 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19933
19934 /*-------------------------------------------------------------------------
19935 Extract response and send it to UMAC
19936 -------------------------------------------------------------------------*/
19937 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019939
19940 /*Notify UMAC*/
19941 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19942
Jeff Johnsone7245742012-09-05 17:12:55 -070019943 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019944}/*WDI_ProcessUpdateUapsdParamsRsp*/
19945
19946/**
19947 @brief Process Configure RXP filter Rsp function (called when a
19948 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019949
19950 @param pWDICtx: pointer to the WLAN DAL context
19951 pEventData: pointer to the event information structure
19952
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 @see
19954 @return Result of the function call
19955*/
19956WDI_Status
19957WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019958(
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 WDI_ControlBlockType* pWDICtx,
19960 WDI_EventInfoType* pEventData
19961)
19962{
19963 WDI_Status wdiStatus;
19964 eHalStatus halStatus;
19965 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19967
19968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 -------------------------------------------------------------------------*/
19971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19972 ( NULL == pEventData->pEventData))
19973 {
19974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 }
19979
19980 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19981
19982 /*-------------------------------------------------------------------------
19983 Extract response and send it to UMAC
19984 -------------------------------------------------------------------------*/
19985 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019987
19988 /*Notify UMAC*/
19989 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19990
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019992}/*WDI_ProcessConfigureRxpFilterRsp*/
19993
19994/**
19995 @brief Process Set beacon filter Rsp function (called when a
19996 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019997
19998 @param pWDICtx: pointer to the WLAN DAL context
19999 pEventData: pointer to the event information structure
20000
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 @see
20002 @return Result of the function call
20003*/
20004WDI_Status
20005WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020006(
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI_ControlBlockType* pWDICtx,
20008 WDI_EventInfoType* pEventData
20009)
20010{
20011 WDI_Status wdiStatus;
20012 eHalStatus halStatus;
20013 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20015
20016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 -------------------------------------------------------------------------*/
20019 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20020 ( NULL == pEventData->pEventData))
20021 {
20022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020026 }
20027
20028 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20029
20030 /*-------------------------------------------------------------------------
20031 Extract response and send it to UMAC
20032 -------------------------------------------------------------------------*/
20033 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020035
20036 /*Notify UMAC*/
20037 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20038
Jeff Johnsone7245742012-09-05 17:12:55 -070020039 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020040}/*WDI_ProcessSetBeaconFilterRsp*/
20041
20042/**
20043 @brief Process remove beacon filter Rsp function (called when a
20044 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020045
20046 @param pWDICtx: pointer to the WLAN DAL context
20047 pEventData: pointer to the event information structure
20048
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 @see
20050 @return Result of the function call
20051*/
20052WDI_Status
20053WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020054(
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 WDI_ControlBlockType* pWDICtx,
20056 WDI_EventInfoType* pEventData
20057)
20058{
20059 WDI_Status wdiStatus;
20060 eHalStatus halStatus;
20061 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20063
20064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 -------------------------------------------------------------------------*/
20067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20068 ( NULL == pEventData->pEventData))
20069 {
20070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 }
20075
20076 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20077
20078 /*-------------------------------------------------------------------------
20079 Extract response and send it to UMAC
20080 -------------------------------------------------------------------------*/
20081 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020083
20084 /*Notify UMAC*/
20085 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20086
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020088}/*WDI_ProcessRemBeaconFilterRsp*/
20089
20090/**
20091 @brief Process set RSSI thresholds Rsp function (called when a
20092 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020093
20094 @param pWDICtx: pointer to the WLAN DAL context
20095 pEventData: pointer to the event information structure
20096
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 @see
20098 @return Result of the function call
20099*/
20100WDI_Status
20101WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020102(
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 WDI_ControlBlockType* pWDICtx,
20104 WDI_EventInfoType* pEventData
20105)
20106{
20107 WDI_Status wdiStatus;
20108 eHalStatus halStatus;
20109 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20111
20112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 -------------------------------------------------------------------------*/
20115 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20116 ( NULL == pEventData->pEventData))
20117 {
20118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 }
20123
20124 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20125
20126 /*-------------------------------------------------------------------------
20127 Extract response and send it to UMAC
20128 -------------------------------------------------------------------------*/
20129 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020131
20132 /*Notify UMAC*/
20133 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20134
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136}/*WDI_ProcessSetRSSIThresoldsRsp*/
20137
20138/**
20139 @brief Process host offload Rsp function (called when a
20140 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020141
20142 @param pWDICtx: pointer to the WLAN DAL context
20143 pEventData: pointer to the event information structure
20144
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 @see
20146 @return Result of the function call
20147*/
20148WDI_Status
20149WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020150(
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 WDI_ControlBlockType* pWDICtx,
20152 WDI_EventInfoType* pEventData
20153)
20154{
20155 WDI_Status wdiStatus;
20156 eHalStatus halStatus;
20157 WDI_HostOffloadCb wdiHostOffloadCb;
20158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20159
20160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 -------------------------------------------------------------------------*/
20163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20164 ( NULL == pEventData->pEventData))
20165 {
20166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 }
20171
20172 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20173
20174 /*-------------------------------------------------------------------------
20175 Extract response and send it to UMAC
20176 -------------------------------------------------------------------------*/
20177 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020179
20180 /*Notify UMAC*/
20181 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20182
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184}/*WDI_ProcessHostOffloadRsp*/
20185
20186/**
20187 @brief Process keep alive Rsp function (called when a
20188 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020189
20190 @param pWDICtx: pointer to the WLAN DAL context
20191 pEventData: pointer to the event information structure
20192
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 @see
20194 @return Result of the function call
20195*/
20196WDI_Status
20197WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020198(
Jeff Johnson295189b2012-06-20 16:38:30 -070020199 WDI_ControlBlockType* pWDICtx,
20200 WDI_EventInfoType* pEventData
20201)
20202{
20203 WDI_Status wdiStatus;
20204 eHalStatus halStatus;
20205 WDI_KeepAliveCb wdiKeepAliveCb;
20206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20208 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20209
20210
20211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 -------------------------------------------------------------------------*/
20214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20215 ( NULL == pEventData->pEventData))
20216 {
20217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020221 }
20222
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20224
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 /*-------------------------------------------------------------------------
20226 Extract response and send it to UMAC
20227 -------------------------------------------------------------------------*/
20228 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020229 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230
20231 /*Notify UMAC*/
20232 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20233
Jeff Johnsone7245742012-09-05 17:12:55 -070020234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020235}/*WDI_ProcessKeepAliveRsp*/
20236
20237/**
20238 @brief Process wowl add ptrn Rsp function (called when a
20239 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020240
20241 @param pWDICtx: pointer to the WLAN DAL context
20242 pEventData: pointer to the event information structure
20243
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 @see
20245 @return Result of the function call
20246*/
20247WDI_Status
20248WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020249(
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 WDI_ControlBlockType* pWDICtx,
20251 WDI_EventInfoType* pEventData
20252)
20253{
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 eHalStatus halStatus;
20255 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020256 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20257 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20258
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20260
20261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 -------------------------------------------------------------------------*/
20264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20265 ( NULL == pEventData->pEventData))
20266 {
20267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 }
20272
20273 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20274
20275 /*-------------------------------------------------------------------------
20276 Extract response and send it to UMAC
20277 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020278 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20279 {
20280 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20281 pEventData->pEventData,
20282 sizeof(halAddWowlBcastPtrRsp));
20283
20284 wdiWowlAddBcPtrRsp.wdiStatus =
20285 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20286 }
20287 else
20288 {
20289 halStatus = *((eHalStatus*)pEventData->pEventData);
20290 wdiWowlAddBcPtrRsp.wdiStatus =
20291 WDI_HAL_2_WDI_STATUS(halStatus);
20292 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020293
20294 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020295 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020296
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020298}/*WDI_ProcessWowlAddBcPtrnRsp*/
20299
20300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020303
20304 @param pWDICtx: pointer to the WLAN DAL context
20305 pEventData: pointer to the event information structure
20306
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 @see
20308 @return Result of the function call
20309*/
20310WDI_Status
20311WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020312(
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 WDI_ControlBlockType* pWDICtx,
20314 WDI_EventInfoType* pEventData
20315)
20316{
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 eHalStatus halStatus;
20318 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020319 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20320 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20322
20323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 -------------------------------------------------------------------------*/
20326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20327 ( NULL == pEventData->pEventData))
20328 {
20329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 }
20334
20335 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20336
20337 /*-------------------------------------------------------------------------
20338 Extract response and send it to UMAC
20339 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020340 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20341 {
20342 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20343 pEventData->pEventData,
20344 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020346 wdiWowlDelBcstPtrRsp.wdiStatus =
20347 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20348 }
20349 else
20350 {
20351 halStatus = *((eHalStatus*)pEventData->pEventData);
20352 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20353 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020355 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020356
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020358}/*WDI_ProcessWowlDelBcPtrnRsp*/
20359
20360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020361 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020363
20364 @param pWDICtx: pointer to the WLAN DAL context
20365 pEventData: pointer to the event information structure
20366
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 @see
20368 @return Result of the function call
20369*/
20370WDI_Status
20371WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020372(
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 WDI_ControlBlockType* pWDICtx,
20374 WDI_EventInfoType* pEventData
20375)
20376{
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 eHalStatus halStatus;
20378 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020379 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20380 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20382
20383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 -------------------------------------------------------------------------*/
20386 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20387 ( NULL == pEventData->pEventData))
20388 {
20389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 }
20394
20395 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20396
20397 /*-------------------------------------------------------------------------
20398 Extract response and send it to UMAC
20399 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020400 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20401 {
20402 wpalMemoryCopy( &halEnterWowlRspParams,
20403 (wpt_uint8*)pEventData->pEventData,
20404 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020405
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020406 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20407 wdiwowlEnterRsp.status =
20408 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20409 }
20410 else
20411 {
20412 halStatus = *((eHalStatus*)pEventData->pEventData);
20413 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20414 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020416 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419}/*WDI_ProcessWowlEnterRsp*/
20420
20421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020424
20425 @param pWDICtx: pointer to the WLAN DAL context
20426 pEventData: pointer to the event information structure
20427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @see
20429 @return Result of the function call
20430*/
20431WDI_Status
20432WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020433(
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 WDI_ControlBlockType* pWDICtx,
20435 WDI_EventInfoType* pEventData
20436)
20437{
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 eHalStatus halStatus;
20439 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020440 tHalExitWowlRspParams halExitWowlRspParams;
20441 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20442
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20444
20445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 -------------------------------------------------------------------------*/
20448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20449 ( NULL == pEventData->pEventData))
20450 {
20451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 }
20456
20457 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20458
20459 /*-------------------------------------------------------------------------
20460 Extract response and send it to UMAC
20461 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020462 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20463 {
20464 wpalMemoryCopy( &halExitWowlRspParams,
20465 pEventData->pEventData,
20466 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020467
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020468 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20469 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20470
20471 }
20472 else
20473 {
20474 halStatus = *((eHalStatus*)pEventData->pEventData);
20475 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20476 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020478 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020479
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020481}/*WDI_ProcessWowlExitRsp*/
20482
20483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020484 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 (called when a response is being received over the bus
20486 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020487
20488 @param pWDICtx: pointer to the WLAN DAL context
20489 pEventData: pointer to the event information structure
20490
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 @see
20492 @return Result of the function call
20493*/
20494WDI_Status
20495WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020496(
Jeff Johnson295189b2012-06-20 16:38:30 -070020497 WDI_ControlBlockType* pWDICtx,
20498 WDI_EventInfoType* pEventData
20499)
20500{
20501 WDI_Status wdiStatus;
20502 eHalStatus halStatus;
20503 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20505
20506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 -------------------------------------------------------------------------*/
20509 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20510 ( NULL == pEventData->pEventData))
20511 {
20512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 }
20517
20518 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20519
20520 /*-------------------------------------------------------------------------
20521 Extract response and send it to UMAC
20522 -------------------------------------------------------------------------*/
20523 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020524 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020525
20526 /*Notify UMAC*/
20527 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20528
Jeff Johnsone7245742012-09-05 17:12:55 -070020529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020530}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20531
20532
20533/**
20534 @brief Process Nv download(called when a response
20535 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020536
20537 @param pWDICtx: pointer to the WLAN DAL context
20538 pEventData: pointer to the event information structure
20539
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 @see
20541 @return Result of the function call
20542*/
20543WDI_Status
20544WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020545(
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 WDI_ControlBlockType* pWDICtx,
20547 WDI_EventInfoType* pEventData
20548)
20549{
20550
20551 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20552 tHalNvImgDownloadRspParams halNvDownloadRsp;
20553 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20554
20555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 -------------------------------------------------------------------------*/
20558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20559 ( NULL == pEventData->pEventData))
20560 {
20561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 }
20566
20567 /*-------------------------------------------------------------------------
20568 Extract response and send it to UMAC
20569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 wpalMemoryCopy( &halNvDownloadRsp,
20571 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 sizeof(halNvDownloadRsp));
20573
20574 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20575
20576 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20578 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 {
20580 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 }
20583 else
20584 {
20585 /*Reset the Nv related global information in WDI context information */
20586 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20587 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20588 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20589 /*call WDA callback function for last fragment */
20590 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20591 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20592 }
20593
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595}
20596#ifdef WLAN_FEATURE_VOWIFI_11R
20597/**
20598 @brief Process Add TSpec Rsp function (called when a response
20599 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020600
20601 @param pWDICtx: pointer to the WLAN DAL context
20602 pEventData: pointer to the event information structure
20603
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 @see
20605 @return Result of the function call
20606*/
20607WDI_Status
20608WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020609(
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WDI_ControlBlockType* pWDICtx,
20611 WDI_EventInfoType* pEventData
20612)
20613{
20614 WDI_Status wdiStatus;
20615 tAggrAddTsRspParams aggrAddTsRsp;
20616 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20618
20619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 -------------------------------------------------------------------------*/
20622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20623 ( NULL == pEventData->pEventData))
20624 {
20625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 }
20630
20631 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20632
20633 /*-------------------------------------------------------------------------
20634 Extract response and send it to UMAC
20635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 wpalMemoryCopy( &aggrAddTsRsp,
20637 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 sizeof(aggrAddTsRsp));
20639
20640 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020642
20643 /*Notify UMAC*/
20644 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20645
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020647}/*WDI_ProcessAddTSpecRsp*/
20648#endif /* WLAN_FEATURE_VOWIFI_11R */
20649
20650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020651 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020652 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020653
20654 @param pWDICtx: pointer to the WLAN DAL context
20655 pEventData: pointer to the event information structure
20656
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 @see
20658 @return Result of the function call
20659*/
20660WDI_Status
20661WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020662(
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 WDI_ControlBlockType* pWDICtx,
20664 WDI_EventInfoType* pEventData
20665)
20666{
20667 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20668 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20669 tHalHostResumeRspParams hostResumeRspMsg;
20670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20671
20672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 -------------------------------------------------------------------------*/
20675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20676 ( NULL == pEventData->pEventData))
20677 {
20678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 }
20683
20684 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20685
20686 /*-------------------------------------------------------------------------
20687 Extract response and send it to UMAC
20688 -------------------------------------------------------------------------*/
20689
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 (wpt_uint8*)pEventData->pEventData,
20692 sizeof(hostResumeRspMsg));
20693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 wdiResumeRspParams.wdiStatus =
20695 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020696
20697 /*Notify UMAC*/
20698 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20699
20700 return WDI_STATUS_SUCCESS;
20701}
20702
20703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020706
20707 @param pWDICtx: pointer to the WLAN DAL context
20708 pEventData: pointer to the event information structure
20709
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 @see
20711 @return Result of the function call
20712*/
20713WDI_Status
20714WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020715(
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 WDI_ControlBlockType* pWDICtx,
20717 WDI_EventInfoType* pEventData
20718)
20719{
20720 WDI_Status wdiStatus;
20721 eHalStatus halStatus;
20722 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20724
20725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 -------------------------------------------------------------------------*/
20728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20729 ( NULL == pEventData->pEventData))
20730 {
20731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020736
20737 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738
20739 /*-------------------------------------------------------------------------
20740 Extract response and send it to UMAC
20741 -------------------------------------------------------------------------*/
20742 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020744
20745 /*Notify UMAC*/
20746 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20747
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749}/*WDI_ProcessSetTxPerTrackingRsp*/
20750
20751/*==========================================================================
20752 Indications from HAL
20753 ==========================================================================*/
20754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020755 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020756 indication of this kind is being received over the bus
20757 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020758
20759 @param pWDICtx: pointer to the WLAN DAL context
20760 pEventData: pointer to the event information structure
20761
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 @see
20763 @return Result of the function call
20764*/
20765WDI_Status
20766WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020767(
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 WDI_ControlBlockType* pWDICtx,
20769 WDI_EventInfoType* pEventData
20770)
20771{
20772 WDI_LowLevelIndType wdiInd;
20773 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20775
20776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 -------------------------------------------------------------------------*/
20779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20780 ( NULL == pEventData->pEventData))
20781 {
20782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 }
20787
20788 /*-------------------------------------------------------------------------
20789 Extract indication and send it to UMAC
20790 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20792 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 sizeof(tHalRSSINotification));
20794
20795 /*Fill in the indication parameters*/
20796 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20797 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20798 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20799 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20800 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20801 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20802 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20803 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20804 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20805 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20806 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20807 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20808 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020809 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20810 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020811
ltimariub77f24b2013-01-24 18:54:33 -080020812 if ( pWDICtx->wdiLowLevelIndCB )
20813 {
20814 /*Notify UMAC of indication*/
20815 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20816 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020817
20818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819}/*WDI_ProcessLowRSSIInd*/
20820
20821
20822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 an indication of this kind is being received over the
20825 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020826
20827 @param pWDICtx: pointer to the WLAN DAL context
20828 pEventData: pointer to the event information structure
20829
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 @see
20831 @return Result of the function call
20832*/
20833WDI_Status
20834WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020835(
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 WDI_ControlBlockType* pWDICtx,
20837 WDI_EventInfoType* pEventData
20838)
20839{
20840 WDI_Status wdiStatus;
20841 eHalStatus halStatus;
20842 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020843 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20845
20846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 -------------------------------------------------------------------------*/
20849 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20850 ( NULL == pEventData->pEventData))
20851 {
20852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020857 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 /*-------------------------------------------------------------------------
20859 Extract indication and send it to UMAC
20860 -------------------------------------------------------------------------*/
20861 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20862 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020864
20865 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020866 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020867 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20868 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020869 if ( pWDICtx->wdiLowLevelIndCB )
20870 {
20871 /*Notify UMAC*/
20872 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
20875 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876}/*WDI_ProcessMissedBeaconInd*/
20877
20878
20879/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020880 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 an indication of this kind is being received over the
20882 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020883
20884 @param pWDICtx: pointer to the WLAN DAL context
20885 pEventData: pointer to the event information structure
20886
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 @see
20888 @return Result of the function call
20889*/
20890WDI_Status
20891WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020892(
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 WDI_ControlBlockType* pWDICtx,
20894 WDI_EventInfoType* pEventData
20895)
20896{
20897 WDI_Status wdiStatus;
20898 eHalStatus halStatus;
20899 WDI_LowLevelIndType wdiInd;
20900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20901
20902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 -------------------------------------------------------------------------*/
20905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20906 ( NULL == pEventData->pEventData))
20907 {
20908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 }
20913
20914 /*-------------------------------------------------------------------------
20915 Extract indication and send it to UMAC
20916 -------------------------------------------------------------------------*/
20917 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20918 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020920
20921 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 /* ! TO DO - fill in from HAL struct:
20924 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20925
ltimariub77f24b2013-01-24 18:54:33 -080020926 if ( pWDICtx->wdiLowLevelIndCB )
20927 {
20928 /*Notify UMAC*/
20929 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20930 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020931
20932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020933}/*WDI_ProcessUnkAddrFrameInd*/
20934
20935
20936/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 indication of this kind is being received over the bus
20939 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020940
20941 @param pWDICtx: pointer to the WLAN DAL context
20942 pEventData: pointer to the event information structure
20943
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 @see
20945 @return Result of the function call
20946*/
20947WDI_Status
20948WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020949(
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 WDI_ControlBlockType* pWDICtx,
20951 WDI_EventInfoType* pEventData
20952)
20953{
20954 WDI_LowLevelIndType wdiInd;
20955 tpSirMicFailureInd pHalMicFailureInd;
20956
20957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20958
20959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 -------------------------------------------------------------------------*/
20962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20963 ( NULL == pEventData->pEventData))
20964 {
20965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020970
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20972 /*-------------------------------------------------------------------------
20973 Extract indication and send it to UMAC
20974 -------------------------------------------------------------------------*/
20975
20976 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20979 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20980 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20981 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20982 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20983 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20984 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20985 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 pHalMicFailureInd->info.keyId;
20992 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20993 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20994 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20995 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020996
20997 if ( pWDICtx->wdiLowLevelIndCB )
20998 {
20999 /*Notify UMAC*/
21000 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21001 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021002
21003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021004}/*WDI_ProcessMicFailureInd*/
21005
21006
21007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 an indication of this kind is being received over the
21010 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021011
21012 @param pWDICtx: pointer to the WLAN DAL context
21013 pEventData: pointer to the event information structure
21014
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 @see
21016 @return Result of the function call
21017*/
21018WDI_Status
21019WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021020(
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 WDI_ControlBlockType* pWDICtx,
21022 WDI_EventInfoType* pEventData
21023)
21024{
21025 WDI_Status wdiStatus;
21026 eHalStatus halStatus;
21027 WDI_LowLevelIndType wdiInd;
21028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21029
21030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021032 -------------------------------------------------------------------------*/
21033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21034 ( NULL == pEventData->pEventData))
21035 {
21036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 }
21041
21042 /*-------------------------------------------------------------------------
21043 Extract indication and send it to UMAC
21044 -------------------------------------------------------------------------*/
21045
21046 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21047 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021049
21050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21051 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021052
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021054 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21055 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021056
ltimariub77f24b2013-01-24 18:54:33 -080021057 if ( pWDICtx->wdiLowLevelIndCB )
21058 {
21059 /*Notify UMAC*/
21060 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21061 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021062
21063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021064}/*WDI_ProcessFatalErrorInd*/
21065
21066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021067 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 an indication of this kind is being received over the
21069 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021070
21071 @param pWDICtx: pointer to the WLAN DAL context
21072 pEventData: pointer to the event information structure
21073
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 @see
21075 @return Result of the function call
21076*/
21077WDI_Status
21078WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021079(
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 WDI_ControlBlockType* pWDICtx,
21081 WDI_EventInfoType* pEventData
21082)
21083{
21084 tDeleteStaContextParams halDelSTACtx;
21085 WDI_LowLevelIndType wdiInd;
21086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21087
21088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 -------------------------------------------------------------------------*/
21091 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21092 ( NULL == pEventData->pEventData))
21093 {
21094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 }
21099
21100 /*-------------------------------------------------------------------------
21101 Extract indication and send it to UMAC
21102 -------------------------------------------------------------------------*/
21103
21104 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 wpalMemoryCopy( &halDelSTACtx,
21106 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 sizeof(halDelSTACtx));
21108
21109 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021111
21112 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21113 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21114 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21115 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21116
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21122 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021123
ltimariub77f24b2013-01-24 18:54:33 -080021124 if ( pWDICtx->wdiLowLevelIndCB )
21125 {
21126 /*Notify UMAC*/
21127 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21128 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021129
21130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021131}/*WDI_ProcessDelSTAInd*/
21132
21133/**
21134*@brief Process Coex Indication function (called when
21135 an indication of this kind is being received over the
21136 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021137
21138 @param pWDICtx: pointer to the WLAN DAL context
21139 pEventData: pointer to the event information structure
21140
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 @see
21142 @return Result of the function call
21143*/
21144WDI_Status
21145WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021146(
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 WDI_ControlBlockType* pWDICtx,
21148 WDI_EventInfoType* pEventData
21149)
21150{
21151 WDI_LowLevelIndType wdiInd;
21152 tCoexIndMsg halCoexIndMsg;
21153 wpt_uint32 index;
21154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21155
21156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 -------------------------------------------------------------------------*/
21159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21160 ( NULL == pEventData->pEventData ))
21161 {
21162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 }
21167
21168 /*-------------------------------------------------------------------------
21169 Extract indication and send it to UMAC
21170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021173 sizeof(halCoexIndMsg.coexIndParams) );
21174
21175 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021176 wdiInd.wdiIndicationType = WDI_COEX_IND;
21177 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021180 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 }
21182
21183 // DEBUG
21184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21185 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021186 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21187 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21188 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21189 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21190 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021191
ltimariub77f24b2013-01-24 18:54:33 -080021192 if ( pWDICtx->wdiLowLevelIndCB )
21193 {
21194 /*Notify UMAC*/
21195 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21196 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021197
21198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021199}/*WDI_ProcessCoexInd*/
21200
21201/**
21202*@brief Process Tx Complete Indication function (called when
21203 an indication of this kind is being received over the
21204 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021205
21206 @param pWDICtx: pointer to the WLAN DAL context
21207 pEventData: pointer to the event information structure
21208
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 @see
21210 @return Result of the function call
21211*/
21212WDI_Status
21213WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021214(
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 WDI_ControlBlockType* pWDICtx,
21216 WDI_EventInfoType* pEventData
21217)
21218{
21219 WDI_LowLevelIndType wdiInd;
21220 tTxComplIndMsg halTxComplIndMsg;
21221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21222
21223 /*-------------------------------------------------------------------------
21224 Sanity check
21225 -------------------------------------------------------------------------*/
21226 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21227 ( NULL == pEventData->pEventData ))
21228 {
21229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 WDI_ASSERT( 0 );
21232 return WDI_STATUS_E_FAILURE;
21233 }
21234
21235 /*-------------------------------------------------------------------------
21236 Extract indication and send it to UMAC
21237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021238 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21239 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 sizeof(halTxComplIndMsg.txComplParams) );
21241
21242 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021243 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21244 wdiInd.wdiIndicationData.tx_complete_status
21245 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021246
ltimariub77f24b2013-01-24 18:54:33 -080021247 if ( pWDICtx->wdiLowLevelIndCB )
21248 {
21249 /*Notify UMAC*/
21250 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21251 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021252
21253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021255#ifdef FEATURE_WLAN_TDLS
21256/**
21257*@brief Process TDLS Indication function (called when
21258 an indication of this kind is being received over the
21259 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021260
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021261 @param pWDICtx: pointer to the WLAN DAL context
21262 pEventData: pointer to the event information structure
21263
21264 @see
21265 @return Result of the function call
21266*/
21267WDI_Status
21268WDI_ProcessTdlsInd
21269(
21270 WDI_ControlBlockType* pWDICtx,
21271 WDI_EventInfoType* pEventData
21272)
21273{
21274 WDI_LowLevelIndType wdiInd;
21275 tTdlsIndMsg halTdlsIndMsg;
21276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21277
21278 /*-------------------------------------------------------------------------
21279 Sanity check
21280 -------------------------------------------------------------------------*/
21281 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21282 ( NULL == pEventData->pEventData ))
21283 {
21284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21285 "%s: Invalid parameters", __func__);
21286 WDI_ASSERT( 0 );
21287 return WDI_STATUS_E_FAILURE;
21288 }
21289
21290 /*-------------------------------------------------------------------------
21291 Extract indication and send it to UMAC
21292 -------------------------------------------------------------------------*/
21293 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21294 pEventData->pEventData,
21295 sizeof(halTdlsIndMsg.tdlsIndParams) );
21296
21297 /*Fill in the indication parameters*/
21298 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21299
21300 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21301 = halTdlsIndMsg.tdlsIndParams.status;
21302
21303 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21304 = halTdlsIndMsg.tdlsIndParams.staIdx;
21305
21306 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21307 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21308
Atul Mittalbb2aad02014-09-22 19:09:36 +053021309 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21310 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021311 /*Notify UMAC*/
21312 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21313
21314 return WDI_STATUS_SUCCESS;
21315}/*WDI_ProcessTdlsInd*/
21316#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021317/**
Viral Modid86bde22012-12-10 13:09:21 -080021318*@brief Process Noa Start Indication function (called when
21319 an indication of this kind is being received over the
21320 bus from HAL)
21321
21322 @param pWDICtx: pointer to the WLAN DAL context
21323 pEventData: pointer to the event information structure
21324
21325 @see
21326 @return Result of the function call
21327*/
21328WDI_Status
21329WDI_ProcessP2pNoaStartInd
21330(
21331 WDI_ControlBlockType* pWDICtx,
21332 WDI_EventInfoType* pEventData
21333)
21334{
21335 WDI_LowLevelIndType wdiInd;
21336 tNoaStartIndMsg halNoaStartIndMsg;
21337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21338
21339 /*-------------------------------------------------------------------------
21340 Sanity check
21341 -------------------------------------------------------------------------*/
21342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21343 ( NULL == pEventData->pEventData ))
21344 {
21345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21346 "%s: Invalid parameters", __func__);
21347 WDI_ASSERT( 0 );
21348 return WDI_STATUS_E_FAILURE;
21349 }
21350
21351 /*-------------------------------------------------------------------------
21352 Extract indication and send it to UMAC
21353 -------------------------------------------------------------------------*/
21354 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21355 pEventData->pEventData,
21356 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21357
21358 /*Fill in the indication parameters*/
21359 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21360
21361 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21362 = halNoaStartIndMsg.noaStartIndParams.status;
21363
21364 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21365 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21366
21367 /*Notify UMAC*/
21368 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21369
21370 return WDI_STATUS_SUCCESS;
21371}/*WDI_ProcessNoaAttrInd*/
21372
21373/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021374*@brief Process Noa Attr Indication function (called when
21375 an indication of this kind is being received over the
21376 bus from HAL)
21377
21378 @param pWDICtx: pointer to the WLAN DAL context
21379 pEventData: pointer to the event information structure
21380
21381 @see
21382 @return Result of the function call
21383*/
21384WDI_Status
21385WDI_ProcessP2pNoaAttrInd
21386(
21387 WDI_ControlBlockType* pWDICtx,
21388 WDI_EventInfoType* pEventData
21389)
21390{
21391 WDI_LowLevelIndType wdiInd;
21392 tNoaAttrIndMsg halNoaAttrIndMsg;
21393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21394
21395 /*-------------------------------------------------------------------------
21396 Sanity check
21397 -------------------------------------------------------------------------*/
21398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21399 ( NULL == pEventData->pEventData ))
21400 {
21401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 WDI_ASSERT( 0 );
21404 return WDI_STATUS_E_FAILURE;
21405 }
21406
21407 /*-------------------------------------------------------------------------
21408 Extract indication and send it to UMAC
21409 -------------------------------------------------------------------------*/
21410 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21411 pEventData->pEventData,
21412 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21413
21414 /*Fill in the indication parameters*/
21415 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021416
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21418 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21421 = halNoaAttrIndMsg.noaAttrIndParams.index;
21422 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21423 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21424 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21425 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021426
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21428 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21429 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21430 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21431 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21432 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21433 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21434 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021435
Jeff Johnson295189b2012-06-20 16:38:30 -070021436 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21437 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21438 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21439 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21440 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21441 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21442 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21443 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21444
ltimariub77f24b2013-01-24 18:54:33 -080021445 if ( pWDICtx->wdiLowLevelIndCB )
21446 {
21447 /*Notify UMAC*/
21448 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21449 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021450
21451 return WDI_STATUS_SUCCESS;
21452}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021453
21454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 an indication of this kind is being received over the
21457 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021458
21459 @param pWDICtx: pointer to the WLAN DAL context
21460 pEventData: pointer to the event information structure
21461
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 @see
21463 @return Result of the function call
21464*/
21465WDI_Status
21466WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021467(
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 WDI_ControlBlockType* pWDICtx,
21469 WDI_EventInfoType* pEventData
21470)
21471{
21472 WDI_LowLevelIndType wdiInd;
21473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021474
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 /*-------------------------------------------------------------------------
21476 Extract indication and send it to UMAC
21477 -------------------------------------------------------------------------*/
21478 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21480
ltimariub77f24b2013-01-24 18:54:33 -080021481 if ( pWDICtx->wdiLowLevelIndCB )
21482 {
21483 /*Notify UMAC*/
21484 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21485 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021486
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488}/*WDI_ProcessTxPerHitInd*/
21489
Jeff Johnson295189b2012-06-20 16:38:30 -070021490/**
Yue Mab9c86f42013-08-14 15:59:08 -070021491 @brief Process Periodic Tx Pattern Fw Indication function
21492
21493 @param pWDICtx: pointer to the WLAN DAL context
21494 pEventData: pointer to the event information structure
21495
21496 @see
21497 @return Result of the function call
21498*/
21499WDI_Status
21500WDI_ProcessPeriodicTxPtrnFwInd
21501(
21502 WDI_ControlBlockType* pWDICtx,
21503 WDI_EventInfoType* pEventData
21504)
21505{
21506 WDI_LowLevelIndType wdiInd;
21507
21508 /*-------------------------------------------------------------------------
21509 Sanity check
21510 -------------------------------------------------------------------------*/
21511 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21512 (NULL == pEventData->pEventData))
21513 {
21514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21515 "%s: Invalid parameters", __func__);
21516 WDI_ASSERT(0);
21517 return WDI_STATUS_E_FAILURE;
21518 }
21519
21520 /*-------------------------------------------------------------------------
21521 Extract indication and send it to UMAC
21522 -------------------------------------------------------------------------*/
21523 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21524 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21525 sizeof(tHalPeriodicTxPtrnFwInd));
21526
21527 if (pWDICtx->wdiLowLevelIndCB)
21528 {
21529 /*Notify UMAC*/
21530 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21531 }
21532
21533 return WDI_STATUS_SUCCESS;
21534}
21535
21536/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 @brief WDI_ProcessFTMCommandReq
21538 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021539
21540 @param pWDICtx: pointer to the WLAN DAL context
21541 pEventData: pointer to the event information structure
21542
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 @see
21544 @return Result of the function call
21545*/
21546WDI_Status
21547WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021548(
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 WDI_ControlBlockType* pWDICtx,
21550 WDI_EventInfoType* pEventData
21551)
21552{
21553 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21554 wpt_uint8 *ftmCommandBuffer = NULL;
21555 wpt_uint16 dataOffset;
21556 wpt_uint16 bufferSize;
21557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 -------------------------------------------------------------------------*/
21560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21561 ( NULL == pEventData->pEventData))
21562
21563 {
21564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 }
21569
21570 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21571
21572 /* Get MSG Buffer */
21573 WDI_GetMessageBuffer(pWDICtx,
21574 WDI_FTM_CMD_REQ,
21575 ftmCommandReq->bodyLength,
21576 &ftmCommandBuffer,
21577 &dataOffset,
21578 &bufferSize);
21579
21580 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21581 ftmCommandReq->FTMCommandBody,
21582 ftmCommandReq->bodyLength);
21583
21584 /* Send MSG */
21585 return WDI_SendMsg(pWDICtx,
21586 ftmCommandBuffer,
21587 bufferSize,
21588 pEventData->pCBfnc,
21589 pEventData->pUserData,
21590 WDI_FTM_CMD_RESP);
21591}
21592
21593/**
21594 @brief WDI_ProcessFTMCommandRsp
21595 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021596
21597 @param pWDICtx: pointer to the WLAN DAL context
21598 pEventData: pointer to the event information structure
21599
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 @see
21601 @return Result of the function call
21602*/
21603WDI_Status
21604WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021605(
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 WDI_ControlBlockType* pWDICtx,
21607 WDI_EventInfoType* pEventData
21608)
21609{
21610 WDI_FTMCommandRspCb ftmCMDRspCb;
21611 tProcessPttRspParams *ftmCMDRspData = NULL;
21612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21613
21614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 -------------------------------------------------------------------------*/
21617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21618 ( NULL == pEventData->pEventData))
21619 {
21620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 }
21625
21626 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21627
21628 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21629
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21631 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21633
21634 /*Notify UMAC*/
21635 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21636
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638}
Jeff Johnson295189b2012-06-20 16:38:30 -070021639/**
21640 @brief WDI_ProcessHalDumpCmdReq
21641 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
21643 @param pWDICtx: pointer to the WLAN DAL context
21644 pEventData: pointer to the event information structure
21645
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 @see
21647 @return Result of the function call
21648*/
21649WDI_Status
21650WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021651(
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 WDI_ControlBlockType* pWDICtx,
21653 WDI_EventInfoType* pEventData
21654)
21655{
21656 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21657 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21658 wpt_uint16 usDataOffset = 0;
21659 wpt_uint16 usSendSize = 0;
21660 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021662
21663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 -------------------------------------------------------------------------*/
21666 if (( NULL == pEventData ) ||
21667 ( NULL == pEventData->pEventData) ||
21668 ( NULL == pEventData->pCBfnc ))
21669 {
21670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 }
21675
21676 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21677 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21678
21679 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021690
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 /*-----------------------------------------------------------------------
21692 Get message buffer
21693 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21696 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21699 {
21700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021701 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 }
21706
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 wpalMemoryCopy( pSendBuffer+usDataOffset,
21708 &halDumpCmdReqMsg.dumpCmdReqParams,
21709 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021710
21711 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021713
21714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021715 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21718 wdiHALDumpCmdRspCb, pEventData->pUserData,
21719 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021720}
21721
21722/**
21723 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 Process hal Dump Command Response from HAL, simply route to HDD
21725
21726 @param pWDICtx: pointer to the WLAN DAL context
21727 pEventData: pointer to the event information structure
21728
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 @see
21730 @return Result of the function call
21731*/
21732WDI_Status
21733WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021734(
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 WDI_ControlBlockType* pWDICtx,
21736 WDI_EventInfoType* pEventData
21737)
21738{
21739 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021740 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21742
21743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 -------------------------------------------------------------------------*/
21746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21747 ( NULL == pEventData->pEventData))
21748 {
21749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 }
21754
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756
21757 /*Initialize the WDI Response structure */
21758 wdiHALDumpCmdRsp.usBufferLen = 0;
21759 wdiHALDumpCmdRsp.pBuffer = NULL;
21760
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021761 wpalMemoryCopy( &halDumpCmdRspParams,
21762 pEventData->pEventData,
21763 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021764
21765 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021766 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021767
21768 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021769 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 {
21771 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021772 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21773 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21774
21775 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21776 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021777 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021778 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021779
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 /*Notify UMAC*/
21781 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21782
21783 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21784 {
21785 /* Free the allocated buffer */
21786 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21787 }
21788 return WDI_STATUS_SUCCESS;
21789}
21790
21791/*==========================================================================
21792 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021793
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021796==========================================================================*/
21797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 when it wishes to send up a notification like the ones
21800 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021801
Jeff Johnson295189b2012-06-20 16:38:30 -070021802 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021803
21804 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 wctsNotifyCBData: the callback data of the user
21807
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021809
21810 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021811*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021812void
Jeff Johnson295189b2012-06-20 16:38:30 -070021813WDI_NotifyMsgCTSCB
21814(
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 WCTS_NotifyEventType wctsEvent,
21817 void* wctsNotifyCBData
21818)
21819{
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21822
21823 if (NULL == pWDICtx )
21824 {
21825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
21830
21831 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21832 {
21833 /* callback presumably occurred after close */
21834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021835 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021836 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021837 }
21838
21839 if ( WCTS_EVENT_OPEN == wctsEvent )
21840 {
21841 /*Flag must be set atomically as it is checked from incoming request
21842 functions*/
21843 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021845
21846 /*Nothing to do - so try to dequeue any pending request that may have
21847 occurred while we were trying to establish this*/
21848 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 {
21853 /*Flag must be set atomically as it is checked from incoming request
21854 functions*/
21855 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857
21858 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 wpalMutexRelease(&pWDICtx->wptMutex);
21861
21862 /*Notify that the Control Channel is closed */
21863 wpalEventSet(&pWDICtx->wctsActionEvent);
21864 }
21865
21866}/*WDI_NotifyMsgCTSCB*/
21867
21868
21869/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021870 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 when it wishes to send up a packet received over the
21872 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021873
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021875
21876 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 pMsg: the packet
21878 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 wctsRxMsgCBData: the callback data of the user
21880
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021882
21883 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021884*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021885void
21886WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021887(
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 void* pMsg,
21890 wpt_uint32 uLen,
21891 void* wctsRxMsgCBData
21892)
21893{
Jeff Johnsone7245742012-09-05 17:12:55 -070021894 tHalMsgHeader *pHalMsgHeader;
21895 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21898
21899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021903 ( uLen < sizeof(tHalMsgHeader)))
21904 {
21905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 }
21910
21911 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21912 {
21913 /* callback presumably occurred after close */
21914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021915 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 }
21918
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021920 context - so no serialization is necessary here
21921 ! - revisit this assumption */
21922
21923 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21924
21925 if ( uLen != pHalMsgHeader->msgLen )
21926 {
21927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21928 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021930 wpalWlanReload();
21931
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 }
21934
21935 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21936
21937 /*The message itself starts after the header*/
21938 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21939 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21940 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21941 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21942
21943
21944 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21945 {
21946 /*Stop the timer as the response was received */
21947 /*!UT - check for potential race conditions between stop and response */
21948 wpalTimerStop(&pWDICtx->wptResponseTimer);
21949 }
21950 /* Check if we receive a response message which is not expected */
21951 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21952 {
21953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21954 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21955 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21958 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021959
21960 if (gWDICb.bEnableSSR == false)
21961 {
21962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21963 "SSR is not enabled on WDI timeout");
21964 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21965 return;
21966 }
21967 wpalWcnssResetIntr();
21968 /* if this timer fires, it means Riva did not receive the FIQ */
21969 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21970
Jeff Johnson295189b2012-06-20 16:38:30 -070021971 return;
21972 }
21973
21974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21975 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21976
21977 /*Post response event to the state machine*/
21978 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21979
21980}/*WDI_RXMsgCTSCB*/
21981
21982
21983/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021985========================================================================*/
21986
21987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021990
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 @param pWDICtx - pointer to the control block
21992
21993 @return Result of the function call
21994*/
21995WPT_INLINE WDI_Status
21996WDI_CleanCB
21997(
21998 WDI_ControlBlockType* pWDICtx
21999)
22000{
22001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22002
22003 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022005
Jeff Johnsone7245742012-09-05 17:12:55 -070022006 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022007 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22008 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22009
22010 WDI_ResetAssocSessions( pWDICtx );
22011
22012 return WDI_STATUS_SUCCESS;
22013}/*WDI_CleanCB*/
22014
22015
22016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022018
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 @param pWDICtx: pointer to the WLAN DAL context
22021 pEventData: pointer to the event information structure
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 @see
22024 @return Result of the function call
22025*/
22026WPT_INLINE WDI_Status
22027WDI_ProcessRequest
22028(
22029 WDI_ControlBlockType* pWDICtx,
22030 WDI_EventInfoType* pEventData
22031)
22032{
22033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22034
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 already checked these pointers*/
22037
22038 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22039 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022042 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_getReqMsgString(pEventData->wdiRequest),
22044 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22045 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22046 }
22047 else
22048 {
22049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 pEventData->wdiRequest);
22052 return WDI_STATUS_E_NOT_IMPLEMENT;
22053 }
22054}/*WDI_ProcessRequest*/
22055
22056
22057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022059 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 prefixes it with a send message header
22061
22062 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 wdiReqType: type of the request being sent
22064 uBufferLen: message buffer len
22065 pMsgBuffer: resulting allocated buffer
22066 pusDataOffset: offset in the buffer where the caller
22067 can start copying its message data
22068 puBufferSize: the resulting buffer size (offset+buff
22069 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022070
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 @see
22072 @return Result of the function call
22073*/
22074WDI_Status
22075WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022076(
22077 WDI_ControlBlockType* pWDICtx,
22078 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 wpt_uint8** pMsgBuffer,
22081 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 wpt_uint16* pusBufferSize
22083)
22084{
22085 tHalMsgHeader halMsgHeader;
22086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22087
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022089 again*/
22090
22091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022094 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22096 if ( NULL == *pMsgBuffer )
22097 {
22098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22099 "Unable to allocate message buffer for req %s (%d)",
22100 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 }
22105
22106 /*-------------------------------------------------------------------------
22107 Fill in the message header
22108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022109 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22110 /* Fill msgVersion */
22111#ifdef WLAN_FEATURE_11AC
22112 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022113 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 else
22115#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022116 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22119 *pusDataOffset = sizeof(halMsgHeader);
22120 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22121
22122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022123}/*WDI_GetMessageBuffer*/
22124
22125
22126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022127 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022128 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 the CB
22130
22131 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022133
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 usSendSize size of the buffer to be sent
22135 pRspCb: response callback - save in the WDI
22136 CB
22137 pUserData: user data associated with the
22138 callback
22139 wdiExpectedResponse: the code of the response that is
22140 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022141
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 @see
22143 @return Result of the function call
22144*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022146WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022147(
22148 WDI_ControlBlockType* pWDICtx,
22149 wpt_uint8* pSendBuffer,
22150 wpt_uint32 usSendSize,
22151 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 void* pUserData,
22153 WDI_ResponseEnumType wdiExpectedResponse
22154)
22155{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022157 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22159
22160 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 ------------------------------------------------------------------------*/
22163 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022164 pWDICtx->pfncRspCB = pRspCb;
22165 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022166
22167 /*-----------------------------------------------------------------------
22168 Call the CTS to send this message over - free message afterwards
22169 - notify transport failure
22170 Note: CTS is reponsible for freeing the message buffer.
22171 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022172 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22173 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22174 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022177 "Failed to send message with expected response %s (%d)"
22178 " over the bus - catastrophic failure",
22179 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22180 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022181
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022182 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22183 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022185 else
22186 {
22187 /* even when message was placed in CTS deferred Q, we will treat it
22188 success but log this info
22189 */
22190 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22191 {
22192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22193 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22194 "response %s (%d)",
22195 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22196 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022197 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022198 }
22199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022200
Jeff Johnsond13512a2012-07-17 11:42:19 -070022201 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 if ( NULL != pWDICtx->wdiReqStatusCB )
22203 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022204 /*Inform originator whether request went through or not*/
22205 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22206 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 pWDICtx->wdiReqStatusCB = NULL;
22208 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022209 callback(wdiStatus, callbackContext);
22210
22211 /*For WDI requests which have registered a request callback,
22212 inform the WDA caller of the same via setting the return value
22213 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22214 end up repeating the functonality in the req callback for the
22215 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022216 if (wdiStatus != WDI_STATUS_SUCCESS)
22217 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022218 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022219 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 }
22221
Jeff Johnsond13512a2012-07-17 11:42:19 -070022222 if ( wdiStatus == WDI_STATUS_SUCCESS )
22223 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 /*Start timer for the expected response */
22225 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022226
22227 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022228 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022229 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022230 }
22231 else
22232 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022233 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022234 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22235 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022236
Jeff Johnsond13512a2012-07-17 11:42:19 -070022237 return wdiStatus;
22238
Jeff Johnson295189b2012-06-20 16:38:30 -070022239}/*WDI_SendMsg*/
22240
22241
22242
22243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022244 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 the bus using the control transport and saves some info
22246 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022247
22248 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 pSendBuffer: buffer to be sent
22250 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022251
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 @see
22253 @return Result of the function call
22254*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022256WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022257(
22258 WDI_ControlBlockType* pWDICtx,
22259 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 wpt_uint32 usSendSize
22261)
22262{
22263 wpt_uint32 uStatus ;
22264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22265
22266 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 Note: CTS is reponsible for freeing the message buffer.
22269 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 (void*)pSendBuffer, usSendSize );
22272
22273 /*Inform Upper MAC about the outcome of the request*/
22274 if ( NULL != pWDICtx->wdiReqStatusCB )
22275 {
22276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22277 "Send indication status : %d", uStatus);
22278
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022279 /* even if CTS placed indication into its deferred Q, we treat it
22280 * as success and let CTS drain its queue as per smd interrupt to CTS
22281 */
22282 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 -070022283 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 }
22285
22286 /*If sending of the message failed - it is considered catastrophic and
22287 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022288 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22289 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22290
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 {
22292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022294
22295 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22296 return WDI_STATUS_E_FAILURE;
22297 }
22298
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022300}/*WDI_SendIndication*/
22301
22302
22303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 @brief WDI_DetectedDeviceError - called internally by DAL when
22305 it has detected a failure in the device
22306
22307 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 usErrorCode: error code detected by WDI or received
22309 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022310
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022312 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022313*/
22314void
22315WDI_DetectedDeviceError
22316(
22317 WDI_ControlBlockType* pWDICtx,
22318 wpt_uint16 usErrorCode
22319)
22320{
22321 WDI_LowLevelIndType wdiInd;
22322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22323
22324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22325 "Device Error detected code: %d - transitioning to stopped state",
22326 usErrorCode);
22327
Katya Nigamf02ad012014-05-05 16:12:49 +053022328 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22329
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 wpalMutexAcquire(&pWDICtx->wptMutex);
22331
22332 WDI_STATableStop(pWDICtx);
22333
22334 WDI_ResetAssocSessions(pWDICtx);
22335
22336 /*Set the expected state transition to stopped - because the device
22337 experienced a failure*/
22338 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22339
22340 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022342
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022344
22345 /*TO DO: - there should be an attempt to reset the device here*/
22346
22347 wpalMutexRelease(&pWDICtx->wptMutex);
22348
22349 /*------------------------------------------------------------------------
22350 Notify UMAC if a handler is registered
22351 ------------------------------------------------------------------------*/
22352 if (pWDICtx->wdiLowLevelIndCB)
22353 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022354 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22355 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022356
22357 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22358 }
22359}/*WDI_DetectedDeviceError*/
22360
22361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 we started on send message has expire - this should
22364 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 reply - trigger catastrophic failure
22366 @param
22367
Jeff Johnson295189b2012-06-20 16:38:30 -070022368 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022369
22370 @see
22371 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022372*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022373void
Jeff Johnson295189b2012-06-20 16:38:30 -070022374WDI_ResponseTimerCB
22375(
22376 void *pUserData
22377)
22378{
22379 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22381
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022382 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022387 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 }
22389
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022390 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022391 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022392 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022393
22394 /* If response timer is running at this time that means this timer
22395 * event is not for the last request but rather last-to-last request and
22396 * this timer event has come after we recevied respone for last-to-last
22397 * message
22398 */
22399 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22400 {
22401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22402 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022403 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022404 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22406 "uArchTimeStampTmrStart: %llu seconds, "
22407 "uArchTimeStampTmrExp: %llu seconds",
22408 pWDICtx->uArchTimeStampRspTmrStart,
22409 pWDICtx->uArchTimeStampRspTmrExp);
22410
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022411 return;
22412 }
22413
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022414 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 {
22416
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022419 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022421 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22422 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22424 "uArchTimeStampTmrStart: %llu seconds, "
22425 "uArchTimeStampTmrExp: %llu seconds",
22426 pWDICtx->uArchTimeStampRspTmrStart,
22427 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022428
22429 /* WDI timeout means Riva is not responding or SMD communication to Riva
22430 * is not happening. The only possible way to recover from this error
22431 * is to initiate SSR from APPS.
22432 * There is also an option to re-enable wifi, which will eventually
22433 * trigger SSR
22434 */
22435 if (gWDICb.bEnableSSR == false)
22436 {
22437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22438 "SSR is not enabled on WDI timeout");
22439 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22440 return;
22441 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022442#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022443 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022444 if(wpalIsWDresetInProgress())
22445 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022446 if(wpalIsSsrPanicOnFailure())
22447 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022448 } else {
22449 /* if this timer fires, it means Riva did not receive the FIQ */
22450 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022451 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022452#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022453 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22454 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022455#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 }
22457 else
22458 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022460 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022461 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022462 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22463 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22465 "uArchTimeStampTmrStart: %llu seconds, "
22466 "uArchTimeStampTmrExp: %llu seconds",
22467 pWDICtx->uArchTimeStampRspTmrStart,
22468 pWDICtx->uArchTimeStampRspTmrExp);
22469
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 }
22471
22472 return;
22473
22474}/*WDI_ResponseTimerCB*/
22475
22476
22477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022479
Jeff Johnsone7245742012-09-05 17:12:55 -070022480
22481 @param pWDICtx: pointer to the WLAN DAL context
22482 pEventData: pointer to the event information structure
22483
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 @see
22485 @return Result of the function call
22486*/
22487WPT_INLINE WDI_Status
22488WDI_ProcessResponse
22489(
22490 WDI_ControlBlockType* pWDICtx,
22491 WDI_EventInfoType* pEventData
22492)
22493{
22494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22495
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 already checked these pointers
22498 ! - revisit this assumption */
22499 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22500 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022503 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 WDI_getRespMsgString(pEventData->wdiResponse),
22505 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22506 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22507 }
22508 else
22509 {
22510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 pEventData->wdiResponse);
22513 return WDI_STATUS_E_NOT_IMPLEMENT;
22514 }
22515}/*WDI_ProcessResponse*/
22516
22517
22518/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022520=========================================================================*/
22521
22522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 @brief Utility function used by the DAL Core to help queue a
22524 request that cannot be processed right away.
22525 @param
22526
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 pWDICtx: - pointer to the WDI control block
22528 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 queued
22530
22531 @see
22532 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022533*/
22534WDI_Status
22535WDI_QueuePendingReq
22536(
22537 WDI_ControlBlockType* pWDICtx,
22538 WDI_EventInfoType* pEventData
22539)
22540{
Jeff Johnsone7245742012-09-05 17:12:55 -070022541 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022542 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022543 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22545
22546 if ( NULL == pEventDataQueue )
22547 {
22548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 WDI_ASSERT(0);
22551 return WDI_STATUS_MEM_FAILURE;
22552 }
22553
22554 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22555 pEventDataQueue->pUserData = pEventData->pUserData;
22556 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22557 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559
22560 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22561 {
22562 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022563
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 if ( NULL == pEventInfo )
22565 {
22566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 WDI_ASSERT(0);
22569 wpalMemoryFree(pEventDataQueue);
22570 return WDI_STATUS_MEM_FAILURE;
22571 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022572
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22574
22575 }
22576 pEventDataQueue->pEventData = pEventInfo;
22577
22578 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022580
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022581 if (eWLAN_PAL_STATUS_E_FAILURE ==
22582 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22583 {
22584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22585 "pEventDataQueue wpal_list_insert_back failed");
22586 WDI_ASSERT(0);
22587 wpalMemoryFree(pEventDataQueue);
22588 wpalMemoryFree(pEventInfo);
22589 return WDI_STATUS_MEM_FAILURE;
22590 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022591
22592 return WDI_STATUS_SUCCESS;
22593}/*WDI_QueuePendingReq*/
22594
22595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022596 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 @param
22599
22600 pMsg - pointer to the message
22601
22602 @see
22603 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022604*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022605void
Jeff Johnson295189b2012-06-20 16:38:30 -070022606WDI_PALCtrlMsgCB
22607(
22608 wpt_msg *pMsg
22609)
22610{
22611 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 WDI_ControlBlockType* pWDICtx = NULL;
22613 WDI_Status wdiStatus;
22614 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 void* pUserData;
22616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22617
22618 if (( NULL == pMsg )||
22619 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22620 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22621 {
22622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 }
22627
22628 /*Transition back to the state that we had before serialization
22629 - serialization transitions us to BUSY to stop any incomming requests
22630 ! TO DO L: possible race condition here if a request comes in between the
22631 state transition and the post function*/
22632
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022634
22635 /*-----------------------------------------------------------------------
22636 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 -----------------------------------------------------------------------*/
22639 switch ( pEventData->wdiRequest )
22640 {
22641
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22644 break;
22645
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 case WDI_NV_DOWNLOAD_REQ:
22647 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22648 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22649 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22650 {
22651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022652 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22654 }
22655 else
22656 {
22657 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22658 }
22659
22660 break;
22661
22662 default:
22663 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22664 break;
22665 }/*switch ( pEventData->wdiRequest )*/
22666
22667 if ( WDI_STATUS_SUCCESS != wdiStatus )
22668 {
22669 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22670
22671 if ( NULL != pfnReqStatusCB )
22672 {
22673 /*Fail the request*/
22674 pfnReqStatusCB( wdiStatus, pUserData);
22675 }
22676 }
22677
22678 /* Free data - that was allocated when queueing*/
22679 if( pEventData != NULL )
22680 {
22681 if( pEventData->pEventData != NULL )
22682 {
22683 wpalMemoryFree(pEventData->pEventData);
22684 }
22685 wpalMemoryFree(pEventData);
22686 }
22687
22688 if( pMsg != NULL )
22689 {
22690 wpalMemoryFree(pMsg);
22691 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022692
Jeff Johnson295189b2012-06-20 16:38:30 -070022693}/*WDI_PALCtrlMsgCB*/
22694
22695/**
22696 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022697 and schedule for execution a pending request
22698 @param
22699
Jeff Johnson295189b2012-06-20 16:38:30 -070022700 pWDICtx: - pointer to the WDI control block
22701 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 queued
22703
22704 @see
22705 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022706*/
22707WDI_Status
22708WDI_DequeuePendingReq
22709(
22710 WDI_ControlBlockType* pWDICtx
22711)
22712{
Jeff Johnsone7245742012-09-05 17:12:55 -070022713 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022714 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22717
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022719
22720 if ( NULL == pNode )
22721 {
22722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022724 return WDI_STATUS_SUCCESS;
22725 }
22726
22727 /*The node actually points to the 1st element inside the Event Data struct -
22728 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022730
22731 /*Serialize processing in the control thread
22732 !TO DO: - check to see if these are all the messages params that need
22733 to be filled in*/
22734 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22735
22736 if ( NULL == palMsg )
22737 {
22738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022743 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 palMsg->callback = WDI_PALCtrlMsgCB;
22745 palMsg->ptr = pEventData;
22746
22747 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022749 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022750
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 /*Transition back to BUSY as we need to handle a queued request*/
22752 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022753
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22755
22756 return WDI_STATUS_PENDING;
22757}/*WDI_DequeuePendingReq*/
22758
22759
22760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 away.- The assoc requests will be queued by BSSID
22764 @param
22765
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 pWDICtx: - pointer to the WDI control block
22767 pEventData: pointer to the evnt info that needs to be queued
22768 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022769
22770 @see
22771 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022772*/
22773WDI_Status
22774WDI_QueueNewAssocRequest
22775(
22776 WDI_ControlBlockType* pWDICtx,
22777 WDI_EventInfoType* pEventData,
22778 wpt_macAddr macBSSID
22779)
22780{
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 wpt_uint8 i;
22782 WDI_BSSSessionType* pSession = NULL;
22783 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 void* pEventInfo;
22786 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022788
Jeff Johnsone7245742012-09-05 17:12:55 -070022789
22790 /*------------------------------------------------------------------------
22791 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022792 ------------------------------------------------------------------------*/
22793 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22794 {
22795 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22796 {
22797 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022798 pSession = &pWDICtx->aBSSSessions[i];
22799 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 }
22801 }
22802
22803 if ( i >= WDI_MAX_BSS_SESSIONS )
22804 {
22805 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022808
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 /*------------------------------------------------------------------------
22810 Fill in the BSSID for this session and set the usage flag
22811 ------------------------------------------------------------------------*/
22812 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814
22815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 ------------------------------------------------------------------------*/
22818 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22819 if ( NULL == pEventDataQueue )
22820 {
22821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022822 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 WDI_ASSERT(0);
22824 return WDI_STATUS_MEM_FAILURE;
22825 }
22826
22827 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22828 if ( NULL == pSessionIdElement )
22829 {
22830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022831 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 WDI_ASSERT(0);
22833 wpalMemoryFree(pEventDataQueue);
22834 return WDI_STATUS_MEM_FAILURE;
22835 }
22836
22837 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22838 if ( NULL == pEventInfo )
22839 {
22840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022841 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 WDI_ASSERT(0);
22843 wpalMemoryFree(pSessionIdElement);
22844 wpalMemoryFree(pEventDataQueue);
22845 return WDI_STATUS_MEM_FAILURE;
22846 }
22847
22848 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22849 pEventDataQueue->pUserData = pEventData->pUserData;
22850 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22851 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022853
22854 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22855 pEventDataQueue->pEventData = pEventInfo;
22856
22857 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022859
22860 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022861 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022862
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022863 if (eWLAN_PAL_STATUS_E_FAILURE ==
22864 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22865 {
22866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22867 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22868 WDI_ASSERT(0);
22869 wpalMemoryFree(pSessionIdElement);
22870 wpalMemoryFree(pEventDataQueue);
22871 wpalMemoryFree(pEventInfo);
22872 return WDI_STATUS_MEM_FAILURE;
22873 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022874
22875 /*We need to maintain a separate list that keeps track of the order in which
22876 the new assoc requests are being queued such that we can start processing
22877 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022878 pSessionIdElement->ucIndex = i;
22879 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022880
22881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22882 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022883 if (eWLAN_PAL_STATUS_E_FAILURE ==
22884 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22885 {
22886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22887 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22888 WDI_ASSERT(0);
22889 wpalMemoryFree(pSessionIdElement);
22890 wpalMemoryFree(pEventDataQueue);
22891 wpalMemoryFree(pEventInfo);
22892 return WDI_STATUS_MEM_FAILURE;
22893 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022894
22895 /*Return pending as this is what the status of the request is since it has
22896 been queued*/
22897 return WDI_STATUS_PENDING;
22898}/*WDI_QueueNewAssocRequest*/
22899
22900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022902 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022903 away.- The assoc requests will be queued by BSSID
22904 @param
22905
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 pWDICtx: - pointer to the WDI control block
22907 pSession: - session in which to queue
22908 pEventData: pointer to the event info that needs to be
22909 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022910
22911 @see
22912 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022913*/
22914WDI_Status
22915WDI_QueueAssocRequest
22916(
22917 WDI_ControlBlockType* pWDICtx,
22918 WDI_BSSSessionType* pSession,
22919 WDI_EventInfoType* pEventData
22920)
22921{
Jeff Johnsone7245742012-09-05 17:12:55 -070022922 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022924 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022926
22927 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 Sanity check
22929 ------------------------------------------------------------------------*/
22930 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22931 {
22932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022934
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 }
22937
22938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022939 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 ------------------------------------------------------------------------*/
22941 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22942 if ( NULL == pEventDataQueue )
22943 {
22944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022945 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022946 WDI_ASSERT(0);
22947 return WDI_STATUS_MEM_FAILURE;
22948 }
22949
22950 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22951 if ( NULL == pEventInfo )
22952 {
22953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22954 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022955 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 WDI_ASSERT(0);
22957 wpalMemoryFree(pEventDataQueue);
22958 return WDI_STATUS_MEM_FAILURE;
22959 }
22960
22961 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22962 pEventDataQueue->pUserData = pEventData->pUserData;
22963 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22964 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022965 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 pEventDataQueue->pEventData = pEventInfo;
22967
22968 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22969
22970 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972
22973 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022975
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022976 if (eWLAN_PAL_STATUS_E_FAILURE ==
22977 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22978 {
22979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22980 "%s: Cannot allocate memory for queueing event data info",
22981 __func__);
22982 WDI_ASSERT(0);
22983 wpalMemoryFree(pEventDataQueue);
22984 wpalMemoryFree(pEventInfo);
22985 return WDI_STATUS_MEM_FAILURE;
22986 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022987
22988 /*The result of this operation is pending because the request has been
22989 queued and it will be processed at a later moment in time */
22990 return WDI_STATUS_PENDING;
22991}/*WDI_QueueAssocRequest*/
22992
22993/**
22994 @brief Utility function used by the DAL Core to help dequeue
22995 an association request that was pending
22996 The request will be queued up in front of the main
22997 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 @param
22999
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023001
23002
23003 @see
23004 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023005*/
23006WDI_Status
23007WDI_DequeueAssocRequest
23008(
23009 WDI_ControlBlockType* pWDICtx
23010)
23011{
Jeff Johnsone7245742012-09-05 17:12:55 -070023012 wpt_list_node* pNode = NULL;
23013 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 WDI_BSSSessionType* pSession;
23015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023016
23017 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 Sanity check
23019 ------------------------------------------------------------------------*/
23020 if ( NULL == pWDICtx )
23021 {
23022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023024
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 }
23027
23028 /*------------------------------------------------------------------------
23029 An association has been completed => a new association can occur
23030 Check to see if there are any pending associations ->
23031 If so , transfer all the pending requests into the busy queue for
23032 processing
23033 These requests have arrived prior to the requests in the busy queue
23034 (bc they needed to be processed in order to be placed in this queue)
23035 => they will be placed at the front of the busy queue
23036 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023037 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023038
23039 if ( NULL == pNode )
23040 {
23041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 return WDI_STATUS_SUCCESS;
23044 }
23045
23046 /*The node actually points to the 1st element inside the Session Id struct -
23047 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023049
23050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23051 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23052
23053 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23054 {
23055 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023056
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 the front of the main waiting queue for subsequent execution*/
23059 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 while ( NULL != pNode )
23061 {
23062 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23064 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 }
23068 else
23069 {
23070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 WPAL_ASSERT(0);
23073 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023076
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23078 wpalMemoryFree(pSessionIdElement);
23079 return WDI_STATUS_SUCCESS;
23080}/*WDI_DequeueAssocRequest*/
23081
23082/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 pending requests - all req cb will be called with
23085 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 @param
23087
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023089
23090 @see
23091 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023092*/
23093WDI_Status
23094WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023095(
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 WDI_ControlBlockType* pWDICtx
23097)
23098{
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 void* pUserData;
23103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23104
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023106
23107 /*------------------------------------------------------------------------
23108 Go through all the requests and fail them - this will only be called
23109 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 ------------------------------------------------------------------------*/
23112 while( pNode )
23113 {
23114 /*The node actually points to the 1st element inside the Event Data struct -
23115 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 pEventDataQueue = (WDI_EventInfoType*)pNode;
23117
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23119 if ( NULL != pfnReqStatusCB )
23120 {
23121 /*Fail the request*/
23122 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23123 }
23124 /* Free data - that was allocated when queueing */
23125 if ( pEventDataQueue->pEventData != NULL )
23126 {
23127 wpalMemoryFree(pEventDataQueue->pEventData);
23128 }
23129 wpalMemoryFree(pEventDataQueue);
23130
23131 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23132 {
23133 break;
23134 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023135 }
23136
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 return WDI_STATUS_SUCCESS;
23138}/*WDI_ClearPendingRequests*/
23139
23140/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 @brief Helper routine used to init the BSS Sessions in the WDI control block
23142
23143
23144 @param pWDICtx: pointer to the WLAN DAL context
23145
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 @see
23147*/
23148void
23149WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023150(
Jeff Johnson295189b2012-06-20 16:38:30 -070023151 WDI_ControlBlockType* pWDICtx
23152)
23153{
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23156
23157 /*-------------------------------------------------------------------------
23158 No Sanity check
23159 -------------------------------------------------------------------------*/
23160 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23161 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023162 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023163 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23164 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23165 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23166 }
23167}/*WDI_ResetAssocSessions*/
23168
23169/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 @brief Helper routine used to find a session based on the BSSID
23171
23172
23173 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 pSession: pointer to the session (if found)
23176
Jeff Johnson295189b2012-06-20 16:38:30 -070023177 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023178 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023179*/
23180wpt_uint8
23181WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023182(
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 WDI_ControlBlockType* pWDICtx,
23184 wpt_macAddr macBSSID,
23185 WDI_BSSSessionType** ppSession
23186)
23187{
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23190
23191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 -------------------------------------------------------------------------*/
23194 if ( NULL == ppSession )
23195 {
23196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023197 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 }
23200
Jeff Johnsone7245742012-09-05 17:12:55 -070023201 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023202
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 /*------------------------------------------------------------------------
23204 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 ------------------------------------------------------------------------*/
23206 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23207 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023208 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23209 (eWLAN_PAL_TRUE ==
23210 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23211 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 {
23213 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 return i;
23216 }
23217 }
23218
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023220}/*WDI_FindAssocSession*/
23221
23222/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 @brief Helper routine used to find a session based on the BSSID
23224
23225
23226 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 ucBSSIdx: BSS Index of the session
23228 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023229
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023232*/
23233wpt_uint8
23234WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023235(
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 WDI_ControlBlockType* pWDICtx,
23237 wpt_uint16 ucBSSIdx,
23238 WDI_BSSSessionType** ppSession
23239)
23240{
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23243
23244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 -------------------------------------------------------------------------*/
23247 if ( NULL == ppSession )
23248 {
23249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023250 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 }
23253
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 /*------------------------------------------------------------------------
23257 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 ------------------------------------------------------------------------*/
23259 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23260 {
23261 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23262 {
23263 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 return i;
23266 }
23267 }
23268
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023270}/*WDI_FindAssocSessionByBSSIdx*/
23271
23272/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 @brief Helper routine used to find a session based on the BSSID
23274
23275
23276 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 ucBSSIdx: BSS Index of the session
23278 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023279
Jeff Johnson295189b2012-06-20 16:38:30 -070023280 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023282*/
23283wpt_uint8
23284WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023285(
Jeff Johnson295189b2012-06-20 16:38:30 -070023286 WDI_ControlBlockType* pWDICtx,
23287 wpt_uint16 usIdx,
23288 WDI_BSSSessionType** ppSession
23289)
23290{
23291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23292
23293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 -------------------------------------------------------------------------*/
23296 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23297 {
23298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023299 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 }
23302
23303 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023305
23306 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023307
Jeff Johnson295189b2012-06-20 16:38:30 -070023308}/*WDI_FindAssocSessionByBSSIdx*/
23309
23310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023311 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023313
23314
23315 @param pWDICtx: pointer to the WLAN DAL context
23316 pSession: pointer to the session (if found)
23317
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023320*/
23321wpt_uint8
23322WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023323(
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 WDI_ControlBlockType* pWDICtx,
23325 WDI_BSSSessionType** ppSession
23326)
23327{
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 -------------------------------------------------------------------------*/
23333 if ( NULL == ppSession )
23334 {
23335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023336 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023338 }
23339
Jeff Johnsone7245742012-09-05 17:12:55 -070023340 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023341
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 /*------------------------------------------------------------------------
23343 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 ------------------------------------------------------------------------*/
23345 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23346 {
23347 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23348 {
23349 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 return i;
23352 }
23353 }
23354
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023356}/*WDI_FindEmptySession*/
23357
23358
23359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023360 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023362
23363
23364 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023365 macBSSID: pointer to BSSID. If NULL, get all the session.
23366 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23367 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23368 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 @see
23370 @return Number of sessions in use
23371*/
23372wpt_uint8
23373WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023374(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023375 WDI_ControlBlockType* pWDICtx,
23376 wpt_macAddr macBSSID,
23377 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023378)
23379{
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023382
23383 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 Count all sessions in use
23385 ------------------------------------------------------------------------*/
23386 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23387 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023388 if ( macBSSID && skipBSSID &&
23389 (eWLAN_PAL_TRUE ==
23390 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23391 WDI_MAC_ADDR_LEN)))
23392 {
23393 continue;
23394 }
23395 else if ( pWDICtx->aBSSSessions[i].bInUse )
23396 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023398 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 }
23400
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023402}/*WDI_GetActiveSessionsCount*/
23403
23404/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023405 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023407
23408
23409 @param pWDICtx: pointer to the WLAN DAL context
23410 pSession: pointer to the session (if found)
23411
Jeff Johnson295189b2012-06-20 16:38:30 -070023412 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023413 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023414*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023415void
Jeff Johnson295189b2012-06-20 16:38:30 -070023416WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023417(
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 WDI_ControlBlockType* pWDICtx,
23419 WDI_BSSSessionType* ppSession
23420)
23421{
23422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 -------------------------------------------------------------------------*/
23425 if ( NULL == ppSession )
23426 {
23427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023428 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 }
23431
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 /*------------------------------------------------------------------------
23433 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 ------------------------------------------------------------------------*/
23435 wpal_list_destroy(&ppSession->wptPendingQueue);
23436 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23438 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23440 wpal_list_init(&ppSession->wptPendingQueue);
23441
23442}/*WDI_DeleteSession*/
23443
23444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 @param
23448
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 WDI_AddStaParams: - pointer to the WDI Add STA params
23450 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023451
23452 @see
23453 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023454*/
23455void
23456WDI_AddBcastSTAtoSTATable
23457(
23458 WDI_ControlBlockType* pWDICtx,
23459 WDI_AddStaParams * staParams,
23460 wpt_uint16 usBcastStaIdx
23461)
23462{
23463 WDI_AddStaParams wdiAddSTAParam = {0};
23464 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23466
23467 /*---------------------------------------------------------------------
23468 Sanity check
23469 ---------------------------------------------------------------------*/
23470 if ( NULL == staParams )
23471 {
23472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023474
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 }
23477
23478 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23479 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23480 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23481 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23482 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23483 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23484 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23485 WDI_MAC_ADDR_LEN );
23486 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23487 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23488 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23489 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23490 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23491 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23492 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23495}
23496
23497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 @brief NV blob will be divided into fragments of size 4kb and
23499 Sent to HAL
23500
23501 @param pWDICtx: pointer to the WLAN DAL context
23502 pEventData: pointer to the event information structure
23503
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 @see
23505 @return Result of the function call
23506 */
23507
23508WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023509(
Jeff Johnson295189b2012-06-20 16:38:30 -070023510 WDI_ControlBlockType* pWDICtx,
23511 WDI_EventInfoType* pEventData
23512)
23513{
23514
23515 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23516 wpt_uint8* pSendBuffer = NULL;
23517 wpt_uint16 usDataOffset = 0;
23518 wpt_uint16 usSendSize = 0;
23519 wpt_uint16 usCurrentFragmentSize =0;
23520 wpt_uint8* pSrcBuffer = NULL;
23521 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23522 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23523
23524 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23525 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23526 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23527
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23530
23531 /* Update the current Fragment Number */
23532 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23533
23534 /*Update the HAL REQ structure */
23535 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23536 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23537 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23538
23539 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023540 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 image will be sent to HAL*/
23542
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023545 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23549 usCurrentFragmentSize = FRAGMENT_SIZE;
23550
23551 /*Update the HAL REQ structure */
23552 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23553 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23554
23555 }
23556 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023557 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 usCurrentFragmentSize = FRAGMENT_SIZE;
23559
23560 /*Update the HAL REQ structure */
23561 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23562 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23563 }
23564
23565 /*-----------------------------------------------------------------------
23566 Get message buffer
23567 -----------------------------------------------------------------------*/
23568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23569 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23570 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23573 {
23574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023575 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 pEventData, pwdiNvDownloadReqParams);
23577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023579 }
23580
23581 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23584
23585 /* Appending the NV image fragment */
23586 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23587 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23588 usCurrentFragmentSize);
23589
23590 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023592
Jeff Johnsone7245742012-09-05 17:12:55 -070023593 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23594 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 WDI_NV_DOWNLOAD_RESP);
23596
23597}
Jeff Johnsone7245742012-09-05 17:12:55 -070023598/*============================================================================
23599 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023600 ============================================================================*/
23601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 @brief Helper routine used to find a session based on the BSSID
23603 @param pContext: pointer to the WLAN DAL context
23604 @param pDPContext: pointer to the Datapath context
23605
Jeff Johnson295189b2012-06-20 16:38:30 -070023606 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023607 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023608*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023609WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023610WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23611{
23612 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23613
23614 pCB->pDPContext = pDPContext;
23615 return;
23616}
23617
23618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023619 @brief Helper routine used to find a session based on the BSSID
23620
23621
23622 @param pContext: pointer to the WLAN DAL context
23623
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 @see
23625 @return pointer to Datapath context
23626*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023627WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023628WDI_DS_GetDatapathContext (void *pContext)
23629{
23630 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23631 return pCB->pDPContext;
23632}
23633/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 @brief Helper routine used to find a session based on the BSSID
23635
23636
23637 @param pContext: pointer to the WLAN DAL context
23638 @param pDTDriverContext: pointer to the Transport Driver context
23639
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 @see
23641 @return void
23642*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023643WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023644WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23645{
23646 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23647
23648 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023650}
23651
23652/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 @brief Helper routine used to find a session based on the BSSID
23654
23655
23656 @param pWDICtx: pointer to the WLAN DAL context
23657
Jeff Johnson295189b2012-06-20 16:38:30 -070023658 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023660*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023661WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023662WDT_GetTransportDriverContext (void *pContext)
23663{
23664 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023665 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023666}
23667
Jeff Johnsone7245742012-09-05 17:12:55 -070023668/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 Helper inline converters
23670 ============================================================================*/
23671/*Convert WDI driver type into HAL driver type*/
23672WPT_STATIC WPT_INLINE WDI_Status
23673WDI_HAL_2_WDI_STATUS
23674(
23675 eHalStatus halStatus
23676)
23677{
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 the chances of getting inlined*/
23680 switch( halStatus )
23681 {
23682 case eHAL_STATUS_SUCCESS:
23683 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23684 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23685 return WDI_STATUS_SUCCESS;
23686 case eHAL_STATUS_FAILURE:
23687 return WDI_STATUS_E_FAILURE;
23688 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 return WDI_STATUS_MEM_FAILURE;
23690 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 default:
23693 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23694 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023695
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023697}/*WDI_HAL_2_WDI_STATUS*/
23698
23699/*Convert WDI request type into HAL request type*/
23700WPT_STATIC WPT_INLINE tHalHostMsgType
23701WDI_2_HAL_REQ_TYPE
23702(
23703 WDI_RequestEnumType wdiReqType
23704)
23705{
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 the chances of getting inlined*/
23708 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023712 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023715 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023716 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023723 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023725 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023729 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023730 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023732 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023737 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 return WLAN_HAL_RMV_STAKEY_REQ;
23745 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023752 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 case WDI_DEL_BA_REQ:
23754 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023755#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 case WDI_TSM_STATS_REQ:
23757 return WLAN_HAL_TSM_STATS_REQ;
23758#endif
23759 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 case WDI_ADD_BA_SESSION_REQ:
23770 return WLAN_HAL_ADD_BA_SESSION_REQ;
23771 case WDI_TRIGGER_BA_REQ:
23772 return WLAN_HAL_TRIGGER_BA_REQ;
23773 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23778 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23779 case WDI_SET_MAX_TX_POWER_REQ:
23780 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023781 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23782 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023783 case WDI_SET_TX_POWER_REQ:
23784 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23786 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023787#ifdef FEATURE_WLAN_TDLS
23788 case WDI_TDLS_LINK_ESTABLISH_REQ:
23789 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023790 case WDI_TDLS_CHAN_SWITCH_REQ:
23791 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023792#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023804 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023806 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023810 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023812 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023813 case WDI_REM_BEACON_FILTER_REQ:
23814 return WLAN_HAL_REM_BCN_FILTER_REQ;
23815 case WDI_SET_RSSI_THRESHOLDS_REQ:
23816 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23817 case WDI_HOST_OFFLOAD_REQ:
23818 return WLAN_HAL_HOST_OFFLOAD_REQ;
23819 case WDI_WOWL_ADD_BC_PTRN_REQ:
23820 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23821 case WDI_WOWL_DEL_BC_PTRN_REQ:
23822 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23823 case WDI_WOWL_ENTER_REQ:
23824 return WLAN_HAL_ENTER_WOWL_REQ;
23825 case WDI_WOWL_EXIT_REQ:
23826 return WLAN_HAL_EXIT_WOWL_REQ;
23827 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23828 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23829 case WDI_NV_DOWNLOAD_REQ:
23830 return WLAN_HAL_DOWNLOAD_NV_REQ;
23831 case WDI_FLUSH_AC_REQ:
23832 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23833 case WDI_BTAMP_EVENT_REQ:
23834 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23835#ifdef WLAN_FEATURE_VOWIFI_11R
23836 case WDI_AGGR_ADD_TS_REQ:
23837 return WLAN_HAL_AGGR_ADD_TS_REQ;
23838#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 case WDI_FTM_CMD_REQ:
23840 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 case WDI_ADD_STA_SELF_REQ:
23842 return WLAN_HAL_ADD_STA_SELF_REQ;
23843 case WDI_DEL_STA_SELF_REQ:
23844 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023845#ifdef FEATURE_OEM_DATA_SUPPORT
23846 case WDI_START_OEM_DATA_REQ:
23847 return WLAN_HAL_START_OEM_DATA_REQ;
23848#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 case WDI_HOST_RESUME_REQ:
23850 return WLAN_HAL_HOST_RESUME_REQ;
23851 case WDI_HOST_SUSPEND_IND:
23852 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023853 case WDI_TRAFFIC_STATS_IND:
23854 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023855#ifdef WLAN_FEATURE_11W
23856 case WDI_EXCLUDE_UNENCRYPTED_IND:
23857 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23858#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 case WDI_KEEP_ALIVE_REQ:
23860 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023861#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023862 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23863 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023864#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023865#ifdef FEATURE_WLAN_SCAN_PNO
23866 case WDI_SET_PREF_NETWORK_REQ:
23867 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23868 case WDI_SET_RSSI_FILTER_REQ:
23869 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23870 case WDI_UPDATE_SCAN_PARAMS_REQ:
23871 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23872#endif // FEATURE_WLAN_SCAN_PNO
23873 case WDI_SET_TX_PER_TRACKING_REQ:
23874 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23875#ifdef WLAN_FEATURE_PACKET_FILTERING
23876 case WDI_8023_MULTICAST_LIST_REQ:
23877 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23878 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23881 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23882 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23883 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23884#endif // WLAN_FEATURE_PACKET_FILTERING
23885 case WDI_HAL_DUMP_CMD_REQ:
23886 return WLAN_HAL_DUMP_COMMAND_REQ;
23887#ifdef WLAN_FEATURE_GTK_OFFLOAD
23888 case WDI_GTK_OFFLOAD_REQ:
23889 return WLAN_HAL_GTK_OFFLOAD_REQ;
23890 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23891 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23892#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23893
23894 case WDI_INIT_SCAN_CON_REQ:
23895 return WLAN_HAL_INIT_SCAN_CON_REQ;
23896 case WDI_SET_POWER_PARAMS_REQ:
23897 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23898 case WDI_SET_TM_LEVEL_REQ:
23899 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23900 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23901 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023902#ifdef WLAN_FEATURE_11AC
23903 case WDI_UPDATE_VHT_OP_MODE_REQ:
23904 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23905#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023906 case WDI_GET_ROAM_RSSI_REQ:
23907 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023908 case WDI_DHCP_START_IND:
23909 return WLAN_HAL_DHCP_START_IND;
23910 case WDI_DHCP_STOP_IND:
23911 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023912#ifdef FEATURE_WLAN_LPHB
23913 case WDI_LPHB_CFG_REQ:
23914 return WLAN_HAL_LPHB_CFG_REQ;
23915#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023916 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23917 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23918 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23919 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23920
Rajeev79dbe4c2013-10-05 11:03:42 +053023921#ifdef FEATURE_WLAN_BATCH_SCAN
23922 case WDI_SET_BATCH_SCAN_REQ:
23923 return WLAN_HAL_BATCHSCAN_SET_REQ;
23924 case WDI_STOP_BATCH_SCAN_IND:
23925 return WLAN_HAL_BATCHSCAN_STOP_IND;
23926 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23927 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23928#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023929 case WDI_RATE_UPDATE_IND:
23930 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023931 case WDI_START_HT40_OBSS_SCAN_IND:
23932 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23933 case WDI_STOP_HT40_OBSS_SCAN_IND:
23934 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023935 case WDI_UPDATE_CHAN_REQ:
23936 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023937 case WDI_CH_SWITCH_REQ_V1:
23938 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023939 case WDI_GET_BCN_MISS_RATE_REQ:
23940 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023941
23942#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23943 case WDI_LL_STATS_SET_REQ:
23944 return WLAN_HAL_LL_SET_STATS_REQ;
23945 case WDI_LL_STATS_GET_REQ:
23946 return WLAN_HAL_LL_GET_STATS_REQ;
23947 case WDI_LL_STATS_CLEAR_REQ:
23948 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23949#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023950#ifdef WLAN_FEATURE_EXTSCAN
23951 case WDI_EXTSCAN_START_REQ:
23952 return WLAN_HAL_EXT_SCAN_START_REQ;
23953 case WDI_EXTSCAN_STOP_REQ:
23954 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23955 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23956 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23957 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23958 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23959 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23960 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23961 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23962 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23963 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23964 return WLAN_HAL_SIG_RSSI_SET_REQ;
23965 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23966 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23967#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053023968 case WDI_SPOOF_MAC_ADDR_REQ:
23969 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053023970 case WDI_GET_FW_STATS_REQ:
23971 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053023972 case WDI_ENCRYPT_MSG_REQ:
23973 return WLAN_HAL_ENCRYPT_DATA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023977
Jeff Johnson295189b2012-06-20 16:38:30 -070023978}/*WDI_2_HAL_REQ_TYPE*/
23979
23980/*Convert WDI response type into HAL response type*/
23981WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23982HAL_2_WDI_RSP_TYPE
23983(
23984 tHalHostMsgType halMsg
23985)
23986{
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 the chances of getting inlined*/
23989 switch( halMsg )
23990 {
23991 case WLAN_HAL_START_RSP:
23992 return WDI_START_RESP;
23993 case WLAN_HAL_STOP_RSP:
23994 return WDI_STOP_RESP;
23995 case WLAN_HAL_INIT_SCAN_RSP:
23996 return WDI_INIT_SCAN_RESP;
23997 case WLAN_HAL_START_SCAN_RSP:
23998 return WDI_START_SCAN_RESP;
23999 case WLAN_HAL_END_SCAN_RSP:
24000 return WDI_END_SCAN_RESP;
24001 case WLAN_HAL_FINISH_SCAN_RSP:
24002 return WDI_FINISH_SCAN_RESP;
24003 case WLAN_HAL_CONFIG_STA_RSP:
24004 return WDI_CONFIG_STA_RESP;
24005 case WLAN_HAL_DELETE_STA_RSP:
24006 return WDI_DEL_STA_RESP;
24007 case WLAN_HAL_CONFIG_BSS_RSP:
24008 return WDI_CONFIG_BSS_RESP;
24009 case WLAN_HAL_DELETE_BSS_RSP:
24010 return WDI_DEL_BSS_RESP;
24011 case WLAN_HAL_JOIN_RSP:
24012 return WDI_JOIN_RESP;
24013 case WLAN_HAL_POST_ASSOC_RSP:
24014 return WDI_POST_ASSOC_RESP;
24015 case WLAN_HAL_SET_BSSKEY_RSP:
24016 return WDI_SET_BSS_KEY_RESP;
24017 case WLAN_HAL_SET_STAKEY_RSP:
24018 return WDI_SET_STA_KEY_RESP;
24019 case WLAN_HAL_RMV_BSSKEY_RSP:
24020 return WDI_RMV_BSS_KEY_RESP;
24021 case WLAN_HAL_RMV_STAKEY_RSP:
24022 return WDI_RMV_STA_KEY_RESP;
24023 case WLAN_HAL_SET_BCASTKEY_RSP:
24024 return WDI_SET_STA_BCAST_KEY_RESP;
24025 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24026 // return WDI_RMV_STA_BCAST_KEY_RESP;
24027 case WLAN_HAL_ADD_TS_RSP:
24028 return WDI_ADD_TS_RESP;
24029 case WLAN_HAL_DEL_TS_RSP:
24030 return WDI_DEL_TS_RESP;
24031 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24032 return WDI_UPD_EDCA_PRMS_RESP;
24033 case WLAN_HAL_ADD_BA_RSP:
24034 return WDI_ADD_BA_RESP;
24035 case WLAN_HAL_DEL_BA_RSP:
24036 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024037#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WLAN_HAL_TSM_STATS_RSP:
24039 return WDI_TSM_STATS_RESP;
24040#endif
24041 case WLAN_HAL_CH_SWITCH_RSP:
24042 return WDI_CH_SWITCH_RESP;
24043 case WLAN_HAL_SET_LINK_ST_RSP:
24044 return WDI_SET_LINK_ST_RESP;
24045 case WLAN_HAL_GET_STATS_RSP:
24046 return WDI_GET_STATS_RESP;
24047 case WLAN_HAL_UPDATE_CFG_RSP:
24048 return WDI_UPDATE_CFG_RESP;
24049 case WLAN_HAL_ADD_BA_SESSION_RSP:
24050 return WDI_ADD_BA_SESSION_RESP;
24051 case WLAN_HAL_TRIGGER_BA_RSP:
24052 return WDI_TRIGGER_BA_RESP;
24053 case WLAN_HAL_UPDATE_BEACON_RSP:
24054 return WDI_UPD_BCON_PRMS_RESP;
24055 case WLAN_HAL_SEND_BEACON_RSP:
24056 return WDI_SND_BCON_RESP;
24057 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24058 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24059 /*Indications*/
24060 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24061 return WDI_HAL_RSSI_NOTIFICATION_IND;
24062 case WLAN_HAL_MISSED_BEACON_IND:
24063 return WDI_HAL_MISSED_BEACON_IND;
24064 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24065 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24066 case WLAN_HAL_MIC_FAILURE_IND:
24067 return WDI_HAL_MIC_FAILURE_IND;
24068 case WLAN_HAL_FATAL_ERROR_IND:
24069 return WDI_HAL_FATAL_ERROR_IND;
24070 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24071 return WDI_HAL_DEL_STA_IND;
24072 case WLAN_HAL_COEX_IND:
24073 return WDI_HAL_COEX_IND;
24074 case WLAN_HAL_OTA_TX_COMPL_IND:
24075 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024076 case WLAN_HAL_P2P_NOA_ATTR_IND:
24077 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024078 case WLAN_HAL_P2P_NOA_START_IND:
24079 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024080 case WLAN_HAL_DEL_BA_IND:
24081 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 case WLAN_HAL_TX_PER_HIT_IND:
24083 return WDI_HAL_TX_PER_HIT_IND;
24084 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24085 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024086 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24087 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024088 case WLAN_HAL_SET_TX_POWER_RSP:
24089 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 case WLAN_HAL_SET_P2P_GONOA_RSP:
24091 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024092#ifdef FEATURE_WLAN_TDLS
24093 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24094 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024095 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24096 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024097 case WLAN_HAL_TDLS_IND:
24098 return WDI_HAL_TDLS_IND;
24099#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024105 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024106 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024107 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024113 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024115 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24119 return WDI_SET_BEACON_FILTER_RESP;
24120 case WLAN_HAL_REM_BCN_FILTER_RSP:
24121 return WDI_REM_BEACON_FILTER_RESP;
24122 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24123 return WDI_SET_RSSI_THRESHOLDS_RESP;
24124 case WLAN_HAL_HOST_OFFLOAD_RSP:
24125 return WDI_HOST_OFFLOAD_RESP;
24126 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24127 return WDI_WOWL_ADD_BC_PTRN_RESP;
24128 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24129 return WDI_WOWL_DEL_BC_PTRN_RESP;
24130 case WLAN_HAL_ENTER_WOWL_RSP:
24131 return WDI_WOWL_ENTER_RESP;
24132 case WLAN_HAL_EXIT_WOWL_RSP:
24133 return WDI_WOWL_EXIT_RESP;
24134 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24135 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24136 case WLAN_HAL_DOWNLOAD_NV_RSP:
24137 return WDI_NV_DOWNLOAD_RESP;
24138 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24139 return WDI_FLUSH_AC_RESP;
24140 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24141 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 case WLAN_HAL_PROCESS_PTT_RSP:
24143 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 case WLAN_HAL_ADD_STA_SELF_RSP:
24145 return WDI_ADD_STA_SELF_RESP;
24146case WLAN_HAL_DEL_STA_SELF_RSP:
24147 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024148#ifdef FEATURE_OEM_DATA_SUPPORT
24149 case WLAN_HAL_START_OEM_DATA_RSP:
24150 return WDI_START_OEM_DATA_RESP;
24151#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 case WLAN_HAL_HOST_RESUME_RSP:
24153 return WDI_HOST_RESUME_RESP;
24154 case WLAN_HAL_KEEP_ALIVE_RSP:
24155 return WDI_KEEP_ALIVE_RESP;
24156#ifdef FEATURE_WLAN_SCAN_PNO
24157 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24158 return WDI_SET_PREF_NETWORK_RESP;
24159 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24162 return WDI_UPDATE_SCAN_PARAMS_RESP;
24163 case WLAN_HAL_PREF_NETW_FOUND_IND:
24164 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24165#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024166#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024167 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24168 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024169#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24171 return WDI_SET_TX_PER_TRACKING_RESP;
24172#ifdef WLAN_FEATURE_PACKET_FILTERING
24173 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24174 return WDI_8023_MULTICAST_LIST_RESP;
24175 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24176 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24177 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24178 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24179 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24180 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24181#endif // WLAN_FEATURE_PACKET_FILTERING
24182
24183 case WLAN_HAL_DUMP_COMMAND_RSP:
24184 return WDI_HAL_DUMP_CMD_RESP;
24185 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24186 return WDI_SET_POWER_PARAMS_RESP;
24187#ifdef WLAN_FEATURE_VOWIFI_11R
24188 case WLAN_HAL_AGGR_ADD_TS_RSP:
24189 return WDI_AGGR_ADD_TS_RESP;
24190#endif
24191
24192#ifdef WLAN_FEATURE_GTK_OFFLOAD
24193 case WLAN_HAL_GTK_OFFLOAD_RSP:
24194 return WDI_GTK_OFFLOAD_RESP;
24195 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24196 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24197#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24198#ifdef WLAN_WAKEUP_EVENTS
24199 case WLAN_HAL_WAKE_REASON_IND:
24200 return WDI_HAL_WAKE_REASON_IND;
24201#endif // WLAN_WAKEUP_EVENTS
24202
24203 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24204 return WDI_SET_TM_LEVEL_RESP;
24205 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24206 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024207#ifdef WLAN_FEATURE_11AC
24208 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24209 return WDI_UPDATE_VHT_OP_MODE_RESP;
24210#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024211#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024212 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24213 return WDI_GET_ROAM_RSSI_RESP;
24214#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024215
Leo Chang9056f462013-08-01 19:21:11 -070024216#ifdef FEATURE_WLAN_LPHB
24217 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024218 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024219 case WLAN_HAL_LPHB_CFG_RSP:
24220 return WDI_LPHB_CFG_RESP;
24221#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024222
24223 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24224 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024225 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24226 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024227
Rajeev79dbe4c2013-10-05 11:03:42 +053024228#ifdef FEATURE_WLAN_BATCH_SCAN
24229 case WLAN_HAL_BATCHSCAN_SET_RSP:
24230 return WDI_SET_BATCH_SCAN_RESP;
24231 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24232 return WDI_BATCHSCAN_RESULT_IND;
24233#endif // FEATURE_WLAN_BATCH_SCAN
24234
Leo Chang0b0e45a2013-12-15 15:18:55 -080024235#ifdef FEATURE_WLAN_CH_AVOID
24236 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24237 return WDI_HAL_CH_AVOID_IND;
24238#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024239 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24240 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024241 case WLAN_HAL_PRINT_REG_INFO_IND:
24242 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024243 case WLAN_HAL_CH_SWITCH_V1_RSP:
24244 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024245 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24246 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024247#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24248 case WLAN_HAL_LL_SET_STATS_RSP:
24249 return WDI_LL_STATS_SET_RSP;
24250 case WLAN_HAL_LL_GET_STATS_RSP:
24251 return WDI_LL_STATS_GET_RSP;
24252 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24253 return WDI_LL_STATS_CLEAR_RSP;
24254 case WLAN_HAL_LL_NOTIFY_STATS:
24255 return WDI_HAL_LL_STATS_RESULTS_IND;
24256#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024257#ifdef WLAN_FEATURE_EXTSCAN
24258 case WLAN_HAL_EXT_SCAN_START_RSP:
24259 return WDI_EXTSCAN_START_RSP;
24260 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24261 return WDI_EXTSCAN_STOP_RSP;
24262 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24263 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24264 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24265 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24266 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24267 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24268 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24269 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24270 case WLAN_HAL_SIG_RSSI_SET_RSP:
24271 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24272 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24273 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24274 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24275 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24276 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24277 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24278 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24279 return WDI_HAL_EXTSCAN_RESULT_IND;
24280 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24281 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24282 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24283 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24284#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024285 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24286 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024287 case WLAN_HAL_FW_STATS_RSP:
24288 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024289 case WLAN_HAL_ENCRYPT_DATA_RSP:
24290 return WDI_ENCRYPT_MSG_RSP;
24291
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 }
24295
24296}/*HAL_2_WDI_RSP_TYPE*/
24297
24298
24299/*Convert WDI driver type into HAL driver type*/
24300WPT_STATIC WPT_INLINE tDriverType
24301WDI_2_HAL_DRV_TYPE
24302(
24303 WDI_DriverType wdiDriverType
24304)
24305{
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 the chances of getting inlined*/
24308 switch( wdiDriverType )
24309 {
24310 case WDI_DRIVER_TYPE_PRODUCTION:
24311 return eDRIVER_TYPE_PRODUCTION;
24312 case WDI_DRIVER_TYPE_MFG:
24313 return eDRIVER_TYPE_MFG;
24314 case WDI_DRIVER_TYPE_DVT:
24315 return eDRIVER_TYPE_DVT;
24316 }
24317
Jeff Johnsone7245742012-09-05 17:12:55 -070024318 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024319}/*WDI_2_HAL_DRV_TYPE*/
24320
24321
24322/*Convert WDI stop reason into HAL stop reason*/
24323WPT_STATIC WPT_INLINE tHalStopType
24324WDI_2_HAL_STOP_REASON
24325(
24326 WDI_StopType wdiDriverType
24327)
24328{
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 the chances of getting inlined*/
24331 switch( wdiDriverType )
24332 {
24333 case WDI_STOP_TYPE_SYS_RESET:
24334 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024335 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24336 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 case WDI_STOP_TYPE_RF_KILL:
24338 return HAL_STOP_TYPE_RF_KILL;
24339 }
24340
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342}/*WDI_2_HAL_STOP_REASON*/
24343
24344
24345/*Convert WDI scan mode type into HAL scan mode type*/
24346WPT_STATIC WPT_INLINE eHalSysMode
24347WDI_2_HAL_SCAN_MODE
24348(
24349 WDI_ScanMode wdiScanMode
24350)
24351{
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 the chances of getting inlined*/
24354 switch( wdiScanMode )
24355 {
24356 case WDI_SCAN_MODE_NORMAL:
24357 return eHAL_SYS_MODE_NORMAL;
24358 case WDI_SCAN_MODE_LEARN:
24359 return eHAL_SYS_MODE_LEARN;
24360 case WDI_SCAN_MODE_SCAN:
24361 return eHAL_SYS_MODE_SCAN;
24362 case WDI_SCAN_MODE_PROMISC:
24363 return eHAL_SYS_MODE_PROMISC;
24364 case WDI_SCAN_MODE_SUSPEND_LINK:
24365 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024366 case WDI_SCAN_MODE_ROAM_SCAN:
24367 return eHAL_SYS_MODE_ROAM_SCAN;
24368 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24369 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 }
24371
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373}/*WDI_2_HAL_SCAN_MODE*/
24374
24375/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024376WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024377WDI_2_HAL_SEC_CH_OFFSET
24378(
24379 WDI_HTSecondaryChannelOffset wdiSecChOffset
24380)
24381{
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 the chances of getting inlined*/
24384 switch( wdiSecChOffset )
24385 {
24386 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024388 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024389 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024390 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024391 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24392#ifdef WLAN_FEATURE_11AC
24393 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24394 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24395 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24396 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24397 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24398 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24399 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24400 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24401 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24402 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24403 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24404 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24405 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24406 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24407#endif
24408 default:
24409 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 }
24411
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024413}/*WDI_2_HAL_SEC_CH_OFFSET*/
24414
24415/*Convert WDI BSS type into HAL BSS type*/
24416WPT_STATIC WPT_INLINE tSirBssType
24417WDI_2_HAL_BSS_TYPE
24418(
24419 WDI_BssType wdiBSSType
24420)
24421{
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 the chances of getting inlined*/
24424 switch( wdiBSSType )
24425 {
24426 case WDI_INFRASTRUCTURE_MODE:
24427 return eSIR_INFRASTRUCTURE_MODE;
24428 case WDI_INFRA_AP_MODE:
24429 return eSIR_INFRA_AP_MODE;
24430 case WDI_IBSS_MODE:
24431 return eSIR_IBSS_MODE;
24432 case WDI_BTAMP_STA_MODE:
24433 return eSIR_BTAMP_STA_MODE;
24434 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024435 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 case WDI_BSS_AUTO_MODE:
24437 return eSIR_AUTO_MODE;
24438 }
24439
Jeff Johnsone7245742012-09-05 17:12:55 -070024440 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024441}/*WDI_2_HAL_BSS_TYPE*/
24442
24443/*Convert WDI NW type into HAL NW type*/
24444WPT_STATIC WPT_INLINE tSirNwType
24445WDI_2_HAL_NW_TYPE
24446(
24447 WDI_NwType wdiNWType
24448)
24449{
Jeff Johnsone7245742012-09-05 17:12:55 -070024450 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 the chances of getting inlined*/
24452 switch( wdiNWType )
24453 {
24454 case WDI_11A_NW_TYPE:
24455 return eSIR_11A_NW_TYPE;
24456 case WDI_11B_NW_TYPE:
24457 return eSIR_11B_NW_TYPE;
24458 case WDI_11G_NW_TYPE:
24459 return eSIR_11G_NW_TYPE;
24460 case WDI_11N_NW_TYPE:
24461 return eSIR_11N_NW_TYPE;
24462 }
24463
Jeff Johnsone7245742012-09-05 17:12:55 -070024464 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024465}/*WDI_2_HAL_NW_TYPE*/
24466
24467/*Convert WDI chanel bonding type into HAL cb type*/
24468WPT_STATIC WPT_INLINE ePhyChanBondState
24469WDI_2_HAL_CB_STATE
24470(
24471 WDI_PhyChanBondState wdiCbState
24472)
24473{
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 the chances of getting inlined*/
24476 switch ( wdiCbState )
24477 {
24478 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24479 return PHY_SINGLE_CHANNEL_CENTERED;
24480 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24481 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24482 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24483 return PHY_DOUBLE_CHANNEL_CENTERED;
24484 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24485 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024486#ifdef WLAN_FEATURE_11AC
24487 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24488 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24489 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24490 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24491 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24492 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24493 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24494 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24495 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24496 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24497 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24498 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24499 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24500 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24501#endif
24502 case WDI_MAX_CB_STATE:
24503 default:
24504 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024505 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024506
Jeff Johnson295189b2012-06-20 16:38:30 -070024507 return PHY_CHANNEL_BONDING_STATE_MAX;
24508}/*WDI_2_HAL_CB_STATE*/
24509
24510/*Convert WDI chanel bonding type into HAL cb type*/
24511WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24512WDI_2_HAL_HT_OPER_MODE
24513(
24514 WDI_HTOperatingMode wdiHTOperMode
24515)
24516{
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 the chances of getting inlined*/
24519 switch ( wdiHTOperMode )
24520 {
24521 case WDI_HT_OP_MODE_PURE:
24522 return eSIR_HT_OP_MODE_PURE;
24523 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24524 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24525 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24526 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24527 case WDI_HT_OP_MODE_MIXED:
24528 return eSIR_HT_OP_MODE_MIXED;
24529 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024530
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 return eSIR_HT_OP_MODE_MAX;
24532}/*WDI_2_HAL_HT_OPER_MODE*/
24533
24534/*Convert WDI mimo PS type into HAL mimo PS type*/
24535WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24536WDI_2_HAL_MIMO_PS
24537(
24538 WDI_HTMIMOPowerSaveState wdiHTOperMode
24539)
24540{
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 the chances of getting inlined*/
24543 switch ( wdiHTOperMode )
24544 {
24545 case WDI_HT_MIMO_PS_STATIC:
24546 return eSIR_HT_MIMO_PS_STATIC;
24547 case WDI_HT_MIMO_PS_DYNAMIC:
24548 return eSIR_HT_MIMO_PS_DYNAMIC;
24549 case WDI_HT_MIMO_PS_NA:
24550 return eSIR_HT_MIMO_PS_NA;
24551 case WDI_HT_MIMO_PS_NO_LIMIT:
24552 return eSIR_HT_MIMO_PS_NO_LIMIT;
24553 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024554
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 return eSIR_HT_MIMO_PS_MAX;
24556}/*WDI_2_HAL_MIMO_PS*/
24557
24558/*Convert WDI ENC type into HAL ENC type*/
24559WPT_STATIC WPT_INLINE tAniEdType
24560WDI_2_HAL_ENC_TYPE
24561(
24562 WDI_EncryptType wdiEncType
24563)
24564{
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024566 the chances of getting inlined*/
24567 switch ( wdiEncType )
24568 {
24569 case WDI_ENCR_NONE:
24570 return eSIR_ED_NONE;
24571
24572 case WDI_ENCR_WEP40:
24573 return eSIR_ED_WEP40;
24574
24575 case WDI_ENCR_WEP104:
24576 return eSIR_ED_WEP104;
24577
24578 case WDI_ENCR_TKIP:
24579 return eSIR_ED_TKIP;
24580
24581 case WDI_ENCR_CCMP:
24582 return eSIR_ED_CCMP;
24583
24584 case WDI_ENCR_AES_128_CMAC:
24585 return eSIR_ED_AES_128_CMAC;
24586#if defined(FEATURE_WLAN_WAPI)
24587 case WDI_ENCR_WPI:
24588 return eSIR_ED_WPI;
24589#endif
24590 default:
24591 return eSIR_ED_NOT_IMPLEMENTED;
24592 }
24593
24594}/*WDI_2_HAL_ENC_TYPE*/
24595
24596/*Convert WDI WEP type into HAL WEP type*/
24597WPT_STATIC WPT_INLINE tAniWepType
24598WDI_2_HAL_WEP_TYPE
24599(
24600 WDI_WepType wdiWEPType
24601)
24602{
Jeff Johnsone7245742012-09-05 17:12:55 -070024603 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 the chances of getting inlined*/
24605 switch ( wdiWEPType )
24606 {
24607 case WDI_WEP_STATIC:
24608 return eSIR_WEP_STATIC;
24609
24610 case WDI_WEP_DYNAMIC:
24611 return eSIR_WEP_DYNAMIC;
24612 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024613
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 return eSIR_WEP_MAX;
24615}/*WDI_2_HAL_WEP_TYPE*/
24616
24617WPT_STATIC WPT_INLINE tSirLinkState
24618WDI_2_HAL_LINK_STATE
24619(
24620 WDI_LinkStateType wdiLinkState
24621)
24622{
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 the chances of getting inlined*/
24625 switch ( wdiLinkState )
24626 {
24627 case WDI_LINK_IDLE_STATE:
24628 return eSIR_LINK_IDLE_STATE;
24629
24630 case WDI_LINK_PREASSOC_STATE:
24631 return eSIR_LINK_PREASSOC_STATE;
24632
24633 case WDI_LINK_POSTASSOC_STATE:
24634 return eSIR_LINK_POSTASSOC_STATE;
24635
24636 case WDI_LINK_AP_STATE:
24637 return eSIR_LINK_AP_STATE;
24638
24639 case WDI_LINK_IBSS_STATE:
24640 return eSIR_LINK_IBSS_STATE;
24641
24642 case WDI_LINK_BTAMP_PREASSOC_STATE:
24643 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24644
24645 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24646 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24647
24648 case WDI_LINK_BTAMP_AP_STATE:
24649 return eSIR_LINK_BTAMP_AP_STATE;
24650
24651 case WDI_LINK_BTAMP_STA_STATE:
24652 return eSIR_LINK_BTAMP_STA_STATE;
24653
24654 case WDI_LINK_LEARN_STATE:
24655 return eSIR_LINK_LEARN_STATE;
24656
24657 case WDI_LINK_SCAN_STATE:
24658 return eSIR_LINK_SCAN_STATE;
24659
24660 case WDI_LINK_FINISH_SCAN_STATE:
24661 return eSIR_LINK_FINISH_SCAN_STATE;
24662
24663 case WDI_LINK_INIT_CAL_STATE:
24664 return eSIR_LINK_INIT_CAL_STATE;
24665
24666 case WDI_LINK_FINISH_CAL_STATE:
24667 return eSIR_LINK_FINISH_CAL_STATE;
24668
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 case WDI_LINK_LISTEN_STATE:
24670 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024671
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024672 case WDI_LINK_SEND_ACTION_STATE:
24673 return eSIR_LINK_SEND_ACTION_STATE;
24674
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 default:
24676 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024678}
24679
Jeff Johnsone7245742012-09-05 17:12:55 -070024680/*Translate a STA Context from WDI into HAL*/
24681WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024682void
24683WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024684(
Jeff Johnson295189b2012-06-20 16:38:30 -070024685 tConfigStaParams* phalConfigSta,
24686 WDI_ConfigStaReqInfoType* pwdiConfigSta
24687)
24688{
24689 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024690#ifdef WLAN_FEATURE_11AC
24691 /* Get the Version 1 Handler */
24692 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24693 if (WDI_getFwWlanFeatCaps(DOT11AC))
24694 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024695 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024696 }
24697#endif
24698 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024699 the chances of getting inlined*/
24700
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 wpalMemoryCopy(phalConfigSta->bssId,
24702 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24703
24704 wpalMemoryCopy(phalConfigSta->staMac,
24705 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024706
24707 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24708 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24709 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24710 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24711 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24712 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24713 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24714 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24715 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24716 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24717 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24718 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24719 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24720 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24721 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24722 phalConfigSta->action = pwdiConfigSta->wdiAction;
24723 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24724 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24725 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24726 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24727 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24728 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24729 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024730
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24732
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024734 pwdiConfigSta->wdiSupportedRates.opRateMode;
24735 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24736 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24739 }
24740 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24741 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24744 }
24745 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24746 {
24747 phalConfigSta->supportedRates.aniLegacyRates[i] =
24748 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24749 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024750 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24752 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24753 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024754 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24756 }
24757 phalConfigSta->supportedRates.rxHighestDataRate =
24758 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760#ifdef WLAN_FEATURE_11AC
24761 if(phalConfigSta_V1 != NULL)
24762 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024763 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24764 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24765 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24766 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 }
24768#endif
24769
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024771
Jeff Johnsone7245742012-09-05 17:12:55 -070024772#ifdef WLAN_FEATURE_11AC
24773 if(phalConfigSta_V1 != NULL)
24774 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024775 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24776 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024777 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024778 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024779 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24780 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24781
Jeff Johnsone7245742012-09-05 17:12:55 -070024782 }
24783#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024784}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024785
24786/*Translate a Rate set info from WDI into HAL*/
24787WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024788WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024789(
Jeff Johnson295189b2012-06-20 16:38:30 -070024790 tSirMacRateSet* pHalRateSet,
24791 WDI_RateSet* pwdiRateSet
24792)
24793{
Jeff Johnsone7245742012-09-05 17:12:55 -070024794 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24796
24797 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24798 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24799
24800 for ( i = 0; i < pHalRateSet->numRates; i++ )
24801 {
24802 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24803 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024804
Jeff Johnson295189b2012-06-20 16:38:30 -070024805}/*WDI_CopyWDIRateSetToHALRateSet*/
24806
24807
24808/*Translate an EDCA Parameter Record from WDI into HAL*/
24809WPT_STATIC WPT_INLINE void
24810WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024811(
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 tSirMacEdcaParamRecord* phalEdcaParam,
24813 WDI_EdcaParamRecord* pWDIEdcaParam
24814)
24815{
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 the chances of getting inlined*/
24818
24819 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24820 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24821 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24822 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24823
24824 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24825 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24826 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24827}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24828
24829
24830/*Copy a management frame header from WDI fmt into HAL fmt*/
24831WPT_STATIC WPT_INLINE void
24832WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24833(
24834 tSirMacMgmtHdr* pmacMgmtHdr,
24835 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24836)
24837{
24838 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24839 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24840 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24841 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24842 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24843 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24844 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24845 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24846 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24847 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24848 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24849
24850 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24851 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24852
Jeff Johnsone7245742012-09-05 17:12:55 -070024853 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024854 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024855 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 pwdiMacMgmtHdr->bssId, 6);
24859
24860 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24861 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24862 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24863
24864}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24865
24866
24867/*Copy config bss parameters from WDI fmt into HAL fmt*/
24868WPT_STATIC WPT_INLINE void
24869WDI_CopyWDIConfigBSSToHALConfigBSS
24870(
24871 tConfigBssParams* phalConfigBSS,
24872 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24873)
24874{
24875
24876 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024877#ifdef WLAN_FEATURE_11AC
24878 /* Get the Version 1 Handler */
24879 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24880 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024881 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024882#endif
24883
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 wpalMemoryCopy( phalConfigBSS->bssId,
24885 pwdiConfigBSS->macBSSID,
24886 WDI_MAC_ADDR_LEN);
24887
24888#ifdef HAL_SELF_STA_PER_BSS
24889 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24890 pwdiConfigBSS->macSelfAddr,
24891 WDI_MAC_ADDR_LEN);
24892#endif
24893
24894 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24895
24896 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24897 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24898
Jeff Johnsone7245742012-09-05 17:12:55 -070024899 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 pwdiConfigBSS->ucShortSlotTimeSupported;
24901 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24902 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24903 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24904 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24905 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024906 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024907 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24908 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24909 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24910 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24911 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24912 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24913 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24914 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24915 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24916 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24917 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24918
Jeff Johnsone7245742012-09-05 17:12:55 -070024919 phalConfigBSS->htOperMode =
24920 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024921
24922 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24923 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24924 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24925 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24926
24927#ifdef WLAN_FEATURE_VOWIFI
24928 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24929#endif
24930
24931 /*! Used 32 as magic number because that is how the ssid is declared inside the
24932 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024933 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024934 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24935 pwdiConfigBSS->wdiSSID.ucLength : 32;
24936 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 pwdiConfigBSS->wdiSSID.sSSID,
24938 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024939
24940 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24941 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024942
Jeff Johnson295189b2012-06-20 16:38:30 -070024943 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24944 &pwdiConfigBSS->wdiRateSet);
24945
24946 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24947
24948 if(phalConfigBSS->edcaParamsValid)
24949 {
24950 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24951 &pwdiConfigBSS->wdiBEEDCAParams);
24952 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24953 &pwdiConfigBSS->wdiBKEDCAParams);
24954 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24955 &pwdiConfigBSS->wdiVIEDCAParams);
24956 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24957 &pwdiConfigBSS->wdiVOEDCAParams);
24958 }
24959
Jeff Johnsone7245742012-09-05 17:12:55 -070024960 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024961
24962 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24963
24964#ifdef WLAN_FEATURE_VOWIFI_11R
24965
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024967 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024968
Jeff Johnson295189b2012-06-20 16:38:30 -070024969 if( phalConfigBSS->extSetStaKeyParamValid )
24970 {
24971 /*-----------------------------------------------------------------------
24972 Copy the STA Key parameters into the HAL message
24973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024974 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24976
Jeff Johnsone7245742012-09-05 17:12:55 -070024977 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24979
24980 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24981
24982 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24983
24984 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24985
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24987 keyIndex++)
24988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24991 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24992 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24993 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24994 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24995 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024998 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025000 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025001 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25002 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025003 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 WDI_MAX_KEY_LENGTH);
25005 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 }
25007 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25008 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025009 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025010 sizeof(phalConfigBSS->extSetStaKeyParam) );
25011 }
25012
25013#endif /*WLAN_FEATURE_VOWIFI_11R*/
25014
Jeff Johnsone7245742012-09-05 17:12:55 -070025015#ifdef WLAN_FEATURE_11AC
25016 if(phalConfigBSS_V1 != NULL)
25017 {
25018 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25019 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25020 }
25021#endif
25022
Jeff Johnson295189b2012-06-20 16:38:30 -070025023}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25024
25025
Jeff Johnsone7245742012-09-05 17:12:55 -070025026/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025027 pointed to by user data */
25028WPT_STATIC WPT_INLINE void
25029WDI_ExtractRequestCBFromEvent
25030(
25031 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 void** ppUserData
25034)
25035{
25036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25037 switch ( pEvent->wdiRequest )
25038 {
25039 case WDI_START_REQ:
25040 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25041 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25042 break;
25043 case WDI_STOP_REQ:
25044 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25045 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25046 break;
25047 case WDI_INIT_SCAN_REQ:
25048 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25049 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25050 break;
25051 case WDI_START_SCAN_REQ:
25052 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25053 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25054 break;
25055 case WDI_END_SCAN_REQ:
25056 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25057 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25058 break;
25059 case WDI_FINISH_SCAN_REQ:
25060 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25061 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25062 break;
25063 case WDI_JOIN_REQ:
25064 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25065 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25066 break;
25067 case WDI_CONFIG_BSS_REQ:
25068 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25069 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25070 break;
25071 case WDI_DEL_BSS_REQ:
25072 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25073 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25074 break;
25075 case WDI_POST_ASSOC_REQ:
25076 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25077 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25078 break;
25079 case WDI_DEL_STA_REQ:
25080 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25081 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25082 break;
25083 case WDI_DEL_STA_SELF_REQ:
25084 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25085 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25086 break;
25087
25088 case WDI_SET_BSS_KEY_REQ:
25089 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25090 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25091 break;
25092 case WDI_RMV_BSS_KEY_REQ:
25093 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25094 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25095 break;
25096 case WDI_SET_STA_KEY_REQ:
25097 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25098 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25099 break;
25100 case WDI_RMV_STA_KEY_REQ:
25101 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25102 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25103 break;
25104 case WDI_ADD_TS_REQ:
25105 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25106 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25107 break;
25108 case WDI_DEL_TS_REQ:
25109 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25110 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25111 break;
25112 case WDI_UPD_EDCA_PRMS_REQ:
25113 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25114 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25115 break;
25116 case WDI_ADD_BA_SESSION_REQ:
25117 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25118 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25119 break;
25120 case WDI_DEL_BA_REQ:
25121 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25122 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25123 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025124#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 case WDI_TSM_STATS_REQ:
25126 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25127 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25128 break;
25129#endif
25130 case WDI_CH_SWITCH_REQ:
25131 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25132 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25133 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025134 case WDI_CH_SWITCH_REQ_V1:
25135 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25136 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25137 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025138 case WDI_CONFIG_STA_REQ:
25139 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25140 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25141 break;
25142 case WDI_SET_LINK_ST_REQ:
25143 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25144 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25145 break;
25146 case WDI_GET_STATS_REQ:
25147 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25148 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25149 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025150#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025151 case WDI_GET_ROAM_RSSI_REQ:
25152 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25153 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25154 break;
25155#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 case WDI_UPDATE_CFG_REQ:
25157 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25158 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25159 break;
25160 case WDI_ADD_BA_REQ:
25161 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25162 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25163 break;
25164 case WDI_TRIGGER_BA_REQ:
25165 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25166 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25167 break;
25168 case WDI_UPD_BCON_PRMS_REQ:
25169 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25170 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25171 break;
25172 case WDI_SND_BCON_REQ:
25173 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25174 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25175 break;
25176 case WDI_ENTER_BMPS_REQ:
25177 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25178 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25179 break;
25180 case WDI_EXIT_BMPS_REQ:
25181 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25182 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25183 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025184 case WDI_ENTER_IMPS_REQ:
25185 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25186 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25187 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 case WDI_ENTER_UAPSD_REQ:
25189 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25190 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25191 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025192 case WDI_EXIT_UAPSD_REQ:
25193 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25194 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25195 break;
25196 case WDI_SET_UAPSD_PARAM_REQ:
25197 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25198 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25199 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 case WDI_UPDATE_UAPSD_PARAM_REQ:
25201 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25202 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25203 break;
25204 case WDI_CONFIGURE_RXP_FILTER_REQ:
25205 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25206 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25207 break;
25208 case WDI_SET_BEACON_FILTER_REQ:
25209 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25210 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25211 break;
25212 case WDI_REM_BEACON_FILTER_REQ:
25213 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25214 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025215 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025216 case WDI_SET_RSSI_THRESHOLDS_REQ:
25217 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25218 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25219 break;
25220 case WDI_HOST_OFFLOAD_REQ:
25221 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25222 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25223 break;
25224 case WDI_WOWL_ADD_BC_PTRN_REQ:
25225 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25226 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25227 break;
25228 case WDI_WOWL_DEL_BC_PTRN_REQ:
25229 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25230 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25231 break;
25232 case WDI_WOWL_ENTER_REQ:
25233 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25234 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25235 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025236 case WDI_WOWL_EXIT_REQ:
25237 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25238 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25239 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25241 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25242 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25243 break;
25244 case WDI_FLUSH_AC_REQ:
25245 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25246 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25247 break;
25248 case WDI_BTAMP_EVENT_REQ:
25249 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25250 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25251 break;
25252 case WDI_KEEP_ALIVE_REQ:
25253 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25254 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25255 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025256#if defined FEATURE_WLAN_SCAN_PNO
25257 case WDI_SET_PREF_NETWORK_REQ:
25258 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25259 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25260 break;
25261 case WDI_SET_RSSI_FILTER_REQ:
25262 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25263 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25264 break;
25265 case WDI_UPDATE_SCAN_PARAMS_REQ:
25266 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25267 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25268 break;
25269#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025270 case WDI_SET_TX_PER_TRACKING_REQ:
25271 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25272 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025273 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025274#if defined WLAN_FEATURE_PACKET_FILTERING
25275 case WDI_8023_MULTICAST_LIST_REQ:
25276 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25277 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25278 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025279 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25280 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25281 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25282 break;
25283 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25284 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25285 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25286 break;
25287 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25288 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25289 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25290 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025291#endif
25292 case WDI_SET_POWER_PARAMS_REQ:
25293 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25294 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25295 break;
25296#if defined WLAN_FEATURE_GTK_OFFLOAD
25297 case WDI_GTK_OFFLOAD_REQ:
25298 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25299 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25300 break;
25301 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25302 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25303 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25304 break;
25305#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025306
Jeff Johnson295189b2012-06-20 16:38:30 -070025307 default:
25308 *ppfnReqCB = NULL;
25309 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025310 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 }
25312}/*WDI_ExtractRequestCBFromEvent*/
25313
25314
25315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025317 frame xtl is enabled for a particular STA.
25318
25319 WDI_PostAssocReq must have been called.
25320
Jeff Johnsone7245742012-09-05 17:12:55 -070025321 @param uSTAIdx: STA index
25322
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 @see WDI_PostAssocReq
25324 @return Result of the function call
25325*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025326wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025327WDI_IsHwFrameTxTranslationCapable
25328(
25329 wpt_uint8 uSTAIdx
25330)
25331{
Jeff Johnsone7245742012-09-05 17:12:55 -070025332 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 uma value*/
25334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 ------------------------------------------------------------------------*/
25337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25338 {
25339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25340 "WDI API call before module is initialized - Fail request");
25341
Jeff Johnsone7245742012-09-05 17:12:55 -070025342 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025343 }
25344
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025345#ifdef WLAN_SOFTAP_VSTA_FEATURE
25346 if (IS_VSTA_IDX(uSTAIdx))
25347 {
25348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25349 "STA %d is a Virtual STA, "
25350 "HW frame translation disabled", uSTAIdx);
25351 return eWLAN_PAL_FALSE;
25352 }
25353#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025354
Jeff Johnson295189b2012-06-20 16:38:30 -070025355 return gWDICb.bFrameTransEnabled;
25356}/*WDI_IsHwFrameTxTranslationCapable*/
25357
Katya Nigam6201c3e2014-05-27 17:51:42 +053025358
25359/**
25360 @brief WDI_IsSelfSTA - check if staid is self sta index
25361
25362
25363 @param pWDICtx: pointer to the WLAN DAL context
25364 ucSTAIdx: station index
25365
25366 @return Result of the function call
25367*/
25368wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25369{
25370 wpt_uint8 ucSTAType;
25371
25372 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25373 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25374 {
25375 if( ucSTAType == WDI_STA_ENTRY_SELF )
25376 return eWLAN_PAL_TRUE;
25377 }
25378
25379 return eWLAN_PAL_FALSE;
25380}
25381
25382
25383
Jeff Johnson295189b2012-06-20 16:38:30 -070025384#ifdef FEATURE_WLAN_SCAN_PNO
25385/**
25386 @brief WDI_SetPreferredNetworkList
25387
Jeff Johnsone7245742012-09-05 17:12:55 -070025388 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025389 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025390
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 wdiPNOScanCb: callback for passing back the response
25392 of the Set PNO operation received from the
25393 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025394
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025396 callback
25397
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 @return Result of the function call
25399*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025400WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025401WDI_SetPreferredNetworkReq
25402(
25403 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25404 WDI_PNOScanCb wdiPNOScanCb,
25405 void* pUserData
25406)
25407{
25408 WDI_EventInfoType wdiEventData = {{0}};
25409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25410
25411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 ------------------------------------------------------------------------*/
25414 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25415 {
25416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25417 "WDI API call before module is initialized - Fail request");
25418
Jeff Johnsone7245742012-09-05 17:12:55 -070025419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025420 }
25421
25422 /*------------------------------------------------------------------------
25423 Fill in Event data and post to the Main FSM
25424 ------------------------------------------------------------------------*/
25425 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025428 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 wdiEventData.pUserData = pUserData;
25430
25431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25432}
25433
25434
25435/**
25436 @brief WDI_SetRssiFilterReq
25437
Jeff Johnsone7245742012-09-05 17:12:55 -070025438 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025439 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025440
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 wdiRssiFilterCb: callback for passing back the response
25442 of the Set RSSI Filter operation received from the
25443 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025444
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025446 callback
25447
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 @return Result of the function call
25449*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025450WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025451WDI_SetRssiFilterReq
25452(
25453 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25454 WDI_RssiFilterCb wdiRssiFilterCb,
25455 void* pUserData
25456)
25457{
25458 WDI_EventInfoType wdiEventData = {{0}};
25459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25460
25461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025462 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 ------------------------------------------------------------------------*/
25464 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25465 {
25466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25467 "WDI API call before module is initialized - Fail request");
25468
Jeff Johnsone7245742012-09-05 17:12:55 -070025469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 }
25471
25472 /*------------------------------------------------------------------------
25473 Fill in Event data and post to the Main FSM
25474 ------------------------------------------------------------------------*/
25475 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 wdiEventData.pUserData = pUserData;
25480
25481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25482}/*WDI_SetRssiFilterReq*/
25483
25484/**
25485 @brief WDI_UpdateScanParamsReq
25486
Jeff Johnsone7245742012-09-05 17:12:55 -070025487 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025488 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025489
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 wdiUpdateScanParamsCb: callback for passing back the response
25491 of the Set PNO operation received from the
25492 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025493
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025495 callback
25496
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 @return Result of the function call
25498*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025500WDI_UpdateScanParamsReq
25501(
25502 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25503 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25504 void* pUserData
25505)
25506{
25507 WDI_EventInfoType wdiEventData = {{0}};
25508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25509
25510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025512 ------------------------------------------------------------------------*/
25513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25514 {
25515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25516 "WDI API call before module is initialized - Fail request");
25517
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 }
25520
25521 /*------------------------------------------------------------------------
25522 Fill in Event data and post to the Main FSM
25523 ------------------------------------------------------------------------*/
25524 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025525 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 wdiEventData.pUserData = pUserData;
25529
25530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25531}
25532
25533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025536
25537 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 pwdiPNOScanReqParams: pointer to the info received
25539 from upper layers
25540 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 and its size
25542
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 @return Result of the function call
25544*/
25545
25546WDI_Status
25547WDI_PackPreferredNetworkList
25548(
25549 WDI_ControlBlockType* pWDICtx,
25550 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25551 wpt_uint8** ppSendBuffer,
25552 wpt_uint16* pSize
25553)
25554{
Jeff Johnsone7245742012-09-05 17:12:55 -070025555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025556 wpt_uint16 usDataOffset = 0;
25557 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025558 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 /*-----------------------------------------------------------------------
25561 Get message buffer
25562 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025563 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025564 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025566 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 {
25568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025569 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 pwdiPNOScanReqParams);
25571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 }
25574
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025575 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25576
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 /*-------------------------------------------------------------------------
25578 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25579 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025580 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25584
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025585 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025588 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025589 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25590
25591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025592 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25594 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25595 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25596
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025597 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 {
25599 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025600 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25602
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025603 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025604 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025605 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025606
25607 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025608 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025610
25611 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025612 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025614
Jeff Johnsone7245742012-09-05 17:12:55 -070025615 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025616 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025617 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025618 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25619 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25620 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25621 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025622
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025623 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025625 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025626
25627 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025628 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25630
25631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025633 pPrefNetwListParams->aNetworks[i].ssId.length,
25634 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 }
25636
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025637 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025638 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25640 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25641 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25642
25643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025645 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25647 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25648
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025649 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025650 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025651 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025653 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25655 }
25656
25657 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025658 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25660 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25661 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025662 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025663
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025664 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025666 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025667
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025668 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25670 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25671 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025673
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025674 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025676 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025677
25678 /*Set the output values*/
25679 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025681
25682 return WDI_STATUS_SUCCESS;
25683}/*WDI_PackPreferredNetworkList*/
25684
25685/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025686 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025688
25689 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025690 pwdiPNOScanReqParams: pointer to the info received
25691 from upper layers
25692 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025693 and its size
25694
Jeff Johnson295189b2012-06-20 16:38:30 -070025695 @return Result of the function call
25696*/
25697
25698WDI_Status
25699WDI_PackPreferredNetworkListNew
25700(
25701 WDI_ControlBlockType* pWDICtx,
25702 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25703 wpt_uint8** ppSendBuffer,
25704 wpt_uint16* pSize
25705)
25706{
Jeff Johnsone7245742012-09-05 17:12:55 -070025707 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025708 wpt_uint16 usDataOffset = 0;
25709 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025710 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025712
25713 /*-----------------------------------------------------------------------
25714 Get message buffer
25715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025717 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025719 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 {
25721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025722 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 pwdiPNOScanReqParams);
25724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 }
25727
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025728 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25729
Jeff Johnson295189b2012-06-20 16:38:30 -070025730 /*-------------------------------------------------------------------------
25731 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25732 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025733 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025734 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025735 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25737
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025738 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025739 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025740 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025741 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25743
25744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025745 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025746 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25747 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25748 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25749
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025750 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 {
25752 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025753 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25755
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025756 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025757 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025758 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
25760 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025761 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025762 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025763
25764 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767
25768 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025769 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025770 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025771
Jeff Johnsone7245742012-09-05 17:12:55 -070025772 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025774 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025777 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025778 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025779 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025780
25781 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025782 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25784
25785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025786 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025787 pPrefNetwListParams->aNetworks[i].ssId.length,
25788 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025789 }
25790
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025791 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025792 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25794 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25795 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25796
25797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025798 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025799 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25801 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25802
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025803 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025804 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025805 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025807 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25809 }
25810
25811 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025812 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25814 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25815 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025817
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025818 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025819 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025820 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025821
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025822 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025823 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25824 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25825 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025827
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025828 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025829 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025830 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025831
Jeff Johnson295189b2012-06-20 16:38:30 -070025832
25833 /*Set the output values*/
25834 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025835 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025836
25837 return WDI_STATUS_SUCCESS;
25838}/*WDI_PackPreferredNetworkListNew*/
25839
25840/**
25841 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025842
25843 @param pWDICtx: pointer to the WLAN DAL context
25844 pEventData: pointer to the event information structure
25845
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 @return Result of the function call
25847*/
25848WDI_Status
25849WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025850(
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 WDI_ControlBlockType* pWDICtx,
25852 WDI_EventInfoType* pEventData
25853)
25854{
25855 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25856 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025860
25861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 -------------------------------------------------------------------------*/
25864 if (( NULL == pEventData ) ||
25865 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25866 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25867 {
25868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025872 }
25873
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025874 /*----------------------------------------------------------------------
25875 Avoid Enable PNO during any active session or an ongoing session
25876 ----------------------------------------------------------------------*/
25877 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25878 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25879 {
25880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25881 "%s:(Active/Ongoing Session) - Fail request", __func__);
25882
25883 return WDI_STATUS_E_FAILURE;
25884 }
25885
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 /*-------------------------------------------------------------------------
25887 Pack the PNO request structure based on version
25888 -------------------------------------------------------------------------*/
25889 if ( pWDICtx->wdiPNOVersion > 0 )
25890 {
25891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025892 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 pWDICtx->wdiPNOVersion);
25894
25895 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25896 &pSendBuffer, &usSendSize);
25897 }
25898 else
25899 {
25900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025901 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 pWDICtx->wdiPNOVersion);
25903
25904 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25905 &pSendBuffer, &usSendSize);
25906 }
25907
25908 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25909 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25910 {
25911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025912 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 }
25916
25917 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025919
25920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025921 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025923 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25924 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025925}
25926
25927/**
25928 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025929
25930 @param pWDICtx: pointer to the WLAN DAL context
25931 pEventData: pointer to the event information structure
25932
Jeff Johnson295189b2012-06-20 16:38:30 -070025933 @see
25934 @return Result of the function call
25935*/
25936WDI_Status
25937WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025938(
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 WDI_ControlBlockType* pWDICtx,
25940 WDI_EventInfoType* pEventData
25941)
25942{
25943 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25944 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025945 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 wpt_uint16 usDataOffset = 0;
25947 wpt_uint16 usSendSize = 0;
25948 wpt_uint8 ucRssiThreshold;
25949
25950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 -------------------------------------------------------------------------*/
25953 if (( NULL == pEventData ) ||
25954 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25955 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25956 {
25957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025961 }
25962
25963 /*-----------------------------------------------------------------------
25964 Get message buffer
25965 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025967 sizeof(ucRssiThreshold),
25968 &pSendBuffer, &usDataOffset, &usSendSize))||
25969 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25970 {
25971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025972 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 }
25977
25978 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25979
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 wpalMemoryCopy( pSendBuffer+usDataOffset,
25981 &ucRssiThreshold,
25982 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025983
25984 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025986
25987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25991 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025992}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025993#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25994/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025995 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025996
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025997 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025998 by the Device Interface
25999
26000 wdiRoamOffloadScancb: callback for passing back the response
26001 of the Roam Candidate Lookup Req operation received from the
26002 device
26003
26004 pUserData: user data will be passed back with the
26005 callback
26006 @return Result of the function call
26007*/
26008WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026009WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026010(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026011 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026012 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26013 void* pUserData
26014)
26015{
26016 WDI_EventInfoType wdiEventData = {{0}};
26017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26018
26019 /*------------------------------------------------------------------------
26020 Sanity Check
26021 ------------------------------------------------------------------------*/
26022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26023 {
26024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26025 "WDI API call before module is initialized - Fail request");
26026
26027 return WDI_STATUS_E_NOT_ALLOWED;
26028 }
26029
26030 /*------------------------------------------------------------------------
26031 Fill in Event data and post to the Main FSM
26032 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026033 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26034 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26035 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026036 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26037 wdiEventData.pUserData = pUserData;
26038
26039 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26040}
26041
26042void
26043WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26044{
26045 switch (wdiEdType)
26046 {
26047 case WDI_ED_NONE:
26048 *EdType = eED_NONE;
26049 break;
26050 case WDI_ED_WEP40:
26051 case WDI_ED_WEP104:
26052 *EdType = eED_WEP;
26053 break;
26054 case WDI_ED_TKIP:
26055 *EdType = eED_TKIP;
26056 break;
26057 case WDI_ED_CCMP:
26058#ifdef WLAN_FEATURE_11W
26059 case WDI_ED_AES_128_CMAC:
26060#endif
26061 *EdType = eED_CCMP;
26062 break;
26063#ifdef FEATURE_WLAN_WAPI
26064 case WDI_ED_WPI:
26065 *EdType = eED_WPI;
26066 break;
26067#endif
26068 case WDI_ED_ANY:
26069 *EdType = eED_ANY;
26070 break;
26071
26072 default:
26073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26074 "%s: Unknown Encryption Type", __func__);
26075 break;
26076 }
26077}
26078
26079/**
26080 @brief Helper function to pack Start Roam Candidate Lookup
26081 Request parameters
26082
26083 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026084 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026085 from upper layers
26086 ppSendBuffer, pSize - out pointers of the packed buffer
26087 and its size
26088
26089 @return Result of the function call
26090*/
26091
26092WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026093WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026094(
26095 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026096 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026097 wpt_uint8** ppSendBuffer,
26098 wpt_uint16* pSize
26099)
26100{
26101 wpt_uint8* pSendBuffer = NULL;
26102 wpt_uint16 usDataOffset = 0;
26103 wpt_uint16 usSendSize = 0;
26104 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26105 wpt_uint8 i;
26106 /*-----------------------------------------------------------------------
26107 Get message buffer
26108 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026110 sizeof(tRoamCandidateListParams),
26111 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026112 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026113 {
26114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026115 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026116 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026117 WDI_ASSERT(0);
26118 return WDI_STATUS_E_FAILURE;
26119 }
26120 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026121 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026122 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026123 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026124 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026125 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026126 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026127 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026128 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026129 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026130 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026131
26132 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026133 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026134 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026135 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026136 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26137 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026138 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26139 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26140 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26141 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26142 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026143 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026144 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026145 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026146 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26147 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26148 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26149 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26150 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26151 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26152 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026153 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026154 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026155 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26156 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26157 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026158
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26160 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26161 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26162 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26163 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26164 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026165 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026166 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26167 pRoamCandidateListParams->RoamScanOffloadEnabled,
26168 pRoamCandidateListParams->Command,
26169 pRoamCandidateListParams->StartScanReason,
26170 pRoamCandidateListParams->NeighborScanTimerPeriod,
26171 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26172 pRoamCandidateListParams->NeighborScanChannelMinTime,
26173 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26174 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26175 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26176 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26177 pRoamCandidateListParams->ConnectedNetwork.authentication,
26178 pRoamCandidateListParams->ConnectedNetwork.encryption,
26179 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26180 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26181 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026182 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026183 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026184 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026185 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026186 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26187 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026188 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026189 pRoamCandidateListParams->us24GProbeSize);
26190 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026191 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026192 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026193 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026194 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26195 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026196 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026197 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026198 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26199 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26200 pRoamCandidateListParams->nProbes =
26201 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26202 pRoamCandidateListParams->HomeAwayTime =
26203 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026205 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26206 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026208 }
26209
26210
26211 /*Set the output values*/
26212 *ppSendBuffer = pSendBuffer;
26213 *pSize = usSendSize;
26214 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026215}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026216
26217/**
26218 @brief Process Start Roam Candidate Lookup Request function
26219
26220 @param pWDICtx: pointer to the WLAN DAL context
26221 pEventData: pointer to the event information structure
26222
26223 @return Result of the function call
26224*/
26225WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026226WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026227(
26228 WDI_ControlBlockType* pWDICtx,
26229 WDI_EventInfoType* pEventData
26230)
26231{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026232 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026233 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26234 wpt_uint8* pSendBuffer = NULL;
26235 wpt_uint16 usSendSize = 0;
26236 WDI_Status wdiStatus;
26237 /*-------------------------------------------------------------------------
26238 Sanity check
26239 -------------------------------------------------------------------------*/
26240 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026241 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026242 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26243 {
26244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26245 "%s: Invalid parameters", __func__);
26246 WDI_ASSERT(0);
26247 return WDI_STATUS_E_FAILURE;
26248 }
26249
26250 /*-------------------------------------------------------------------------
26251 Pack the Start Roam Candidate Lookup request structure based on version
26252 -------------------------------------------------------------------------*/
26253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26254 "%s: Packing Roam Candidate Lookup request ", __func__);
26255
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026256 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026257 &pSendBuffer, &usSendSize);
26258
26259 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26260 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26261 {
26262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26263 "%s: failed to pack request parameters", __func__);
26264 WDI_ASSERT(0);
26265 return wdiStatus;
26266 }
26267
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026268 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26269 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026270
26271 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026272 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026273 -------------------------------------------------------------------------*/
26274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026275 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026276}
26277
26278/**
26279 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26280 response is being received over the bus from HAL)
26281
26282 @param pWDICtx: pointer to the WLAN DAL context
26283 pEventData: pointer to the event information structure
26284
26285 @see
26286 @return Result of the function call
26287*/
26288WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026289WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026290(
26291 WDI_ControlBlockType* pWDICtx,
26292 WDI_EventInfoType* pEventData
26293)
26294{
26295 WDI_Status wdiStatus;
26296 eHalStatus halStatus;
26297 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26298
26299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26300
26301 /*-------------------------------------------------------------------------
26302 Sanity check
26303 -------------------------------------------------------------------------*/
26304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26305 ( NULL == pEventData->pEventData ))
26306 {
26307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26308 "%s: Invalid parameters", __func__);
26309 WDI_ASSERT(0);
26310 return WDI_STATUS_E_FAILURE;
26311 }
26312
26313 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26314
26315 /*-------------------------------------------------------------------------
26316 Extract response and send it to UMAC
26317 -------------------------------------------------------------------------*/
26318 halStatus = *((eHalStatus*)pEventData->pEventData);
26319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26320
26321 /*Notify UMAC*/
26322 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26323
26324 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026325}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026326#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026327
26328/**
26329 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026330
26331 @param pWDICtx: pointer to the WLAN DAL context
26332 pEventData: pointer to the event information structure
26333
Jeff Johnson295189b2012-06-20 16:38:30 -070026334 @see
26335 @return Result of the function call
26336*/
26337WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026338WDI_PackUpdateScanParamsReq
26339(
26340 WDI_ControlBlockType* pWDICtx,
26341 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26342 wpt_uint8** ppSendBuffer,
26343 wpt_uint16* pSize
26344)
26345{
26346 wpt_uint8* pSendBuffer = NULL;
26347 wpt_uint16 usDataOffset = 0;
26348 wpt_uint16 usSendSize = 0;
26349 tUpdateScanParams updateScanParams = {0};
26350
26351
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026353 "Begin WDI Update Scan Parameters Old Style Params");
26354 /*-----------------------------------------------------------------------
26355 Get message buffer
26356 -----------------------------------------------------------------------*/
26357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26358 sizeof(updateScanParams),
26359 &pSendBuffer, &usDataOffset, &usSendSize))||
26360 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26361 {
26362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026363 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026364 pwdiUpdateScanParams);
26365 WDI_ASSERT(0);
26366 return WDI_STATUS_E_FAILURE;
26367 }
26368
26369 //
26370 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26371 //
26372
26373 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26374 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26375
26376 updateScanParams.ucChannelCount =
26377 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26378 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26379 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26380 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26381
26382 wpalMemoryCopy( updateScanParams.aChannels,
26383 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26384 updateScanParams.ucChannelCount);
26385
26386
26387 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26388 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26389 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26390 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26391 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26392
26393 wpalMemoryCopy( pSendBuffer+usDataOffset,
26394 &updateScanParams,
26395 sizeof(updateScanParams));
26396
26397 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26398 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26399
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026401 "End Update Scan Parameters Old Style");
26402
26403 /*Set the output values*/
26404 *ppSendBuffer = pSendBuffer;
26405 *pSize = usSendSize;
26406
26407 return WDI_STATUS_SUCCESS;
26408}
26409
26410/**
26411 @brief Process Update Scan Params function
26412
26413 @param pWDICtx: pointer to the WLAN DAL context
26414 pEventData: pointer to the event information structure
26415
26416 @see
26417 @return Result of the function call
26418*/
26419WDI_Status
26420WDI_PackUpdateScanParamsReqEx
26421(
26422 WDI_ControlBlockType* pWDICtx,
26423 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26424 wpt_uint8** ppSendBuffer,
26425 wpt_uint16* pSize
26426)
26427{
26428 wpt_uint8* pSendBuffer = NULL;
26429 wpt_uint16 usDataOffset = 0;
26430 wpt_uint16 usSendSize = 0;
26431 tUpdateScanParamsEx updateScanParams = {0};
26432
26433
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026434 /*-----------------------------------------------------------------------
26435 Get message buffer
26436 -----------------------------------------------------------------------*/
26437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26438 sizeof(updateScanParams),
26439 &pSendBuffer, &usDataOffset, &usSendSize))||
26440 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26441 {
26442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026443 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026444 pwdiUpdateScanParams);
26445 WDI_ASSERT(0);
26446 return WDI_STATUS_E_FAILURE;
26447 }
26448
26449 //
26450 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26451 //
26452
26453 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26454 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26455
26456 updateScanParams.ucChannelCount =
26457 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26458 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26459 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26460 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26461
26462 wpalMemoryCopy( updateScanParams.aChannels,
26463 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26464 updateScanParams.ucChannelCount);
26465
26466
26467 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26468 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26469 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26470 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26471 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26472
26473 wpalMemoryCopy( pSendBuffer+usDataOffset,
26474 &updateScanParams,
26475 sizeof(updateScanParams));
26476
26477 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26478 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26479
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026480 /*Set the output values*/
26481 *ppSendBuffer = pSendBuffer;
26482 *pSize = usSendSize;
26483
26484 return WDI_STATUS_SUCCESS;
26485}
26486
26487/**
26488 @brief Process Update Scan Params function
26489
26490 @param pWDICtx: pointer to the WLAN DAL context
26491 pEventData: pointer to the event information structure
26492
26493 @see
26494 @return Result of the function call
26495*/
26496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026497WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026498(
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 WDI_ControlBlockType* pWDICtx,
26500 WDI_EventInfoType* pEventData
26501)
26502{
26503 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26504 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026507 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026508
26509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 -------------------------------------------------------------------------*/
26512 if (( NULL == pEventData ) ||
26513 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26514 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26515 {
26516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026520 }
26521
26522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26523 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026524
26525 //
26526 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26527 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026528 if ( pWDICtx->wlanVersion.revision < 1 )
26529 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026530 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026531 &pSendBuffer, &usSendSize);
26532 }
26533 else
26534 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026535 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26536 &pSendBuffer, &usSendSize);
26537 }
26538
26539 if(WDI_STATUS_SUCCESS != wdiStatus)
26540 {
26541 //memory allocation failed
26542 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026543 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026544
Jeff Johnson295189b2012-06-20 16:38:30 -070026545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026546 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026549 wdiUpdateScanParamsCb, pEventData->pUserData,
26550 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026551}
26552
26553/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026554 @brief Process Update Channel Params function
26555
26556 @param pWDICtx: pointer to the WLAN DAL context
26557 pEventData: pointer to the event information structure
26558
26559 @see
26560 @return Result of the function call
26561*/
26562WDI_Status
26563WDI_ProcessUpdateChannelParamsReq
26564(
26565 WDI_ControlBlockType* pWDICtx,
26566 WDI_EventInfoType* pEventData
26567)
26568{
26569 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26570 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26571 wpt_uint8* pSendBuffer = NULL;
26572 wpt_uint16 usDataOffset = 0;
26573 wpt_uint16 usSendSize = 0;
26574 tUpdateChannelReqType *updateChannelParams;
26575 wpt_uint32 usUpdateChanParamSize;
26576 wpt_uint8 num_channels = 0;
26577
26578 /*-------------------------------------------------------------------------
26579 Sanity check
26580 -------------------------------------------------------------------------*/
26581 if (( NULL == pEventData ) ||
26582 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26583 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26584 {
26585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26586 "%s: Invalid parameters", __func__);
26587 WDI_ASSERT(0);
26588 return WDI_STATUS_E_FAILURE;
26589 }
26590 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026591 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026592
26593 /*-----------------------------------------------------------------------
26594 Get message buffer
26595 -----------------------------------------------------------------------*/
26596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26597 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26598 &pSendBuffer, &usDataOffset, &usSendSize))||
26599 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26600 {
26601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26602 "Unable to get send buffer in Update Channel Params req %p",
26603 pwdiUpdateChanListParams);
26604 WDI_ASSERT(0);
26605 return WDI_STATUS_E_FAILURE;
26606 }
26607 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26608
26609 updateChannelParams->numChan = num_channels;
26610 wpalMemoryCopy(&updateChannelParams->chanParam,
26611 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26612 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26613
26614 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26615 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26616
26617 /*-------------------------------------------------------------------------
26618 Send Update channel request to fw
26619 -------------------------------------------------------------------------*/
26620 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26621 wdiUpdateChanParamsCb, pEventData->pUserData,
26622 WDI_UPDATE_CHAN_RESP);
26623}
26624
26625/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026626 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026627
26628 @param pWDICtx: pointer to the WLAN DAL context
26629 pEventData: pointer to the event information structure
26630
Jeff Johnson295189b2012-06-20 16:38:30 -070026631 @see
26632 @return Result of the function call
26633*/
26634WDI_Status
26635WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026636(
Jeff Johnson295189b2012-06-20 16:38:30 -070026637 WDI_ControlBlockType* pWDICtx,
26638 WDI_EventInfoType* pEventData
26639)
26640{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026641 WDI_LowLevelIndType wdiInd;
26642 tpPrefNetwFoundParams pNetwFoundParams;
26643 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026644
26645
26646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026648 -------------------------------------------------------------------------*/
26649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26650 ( NULL == pEventData->pEventData ))
26651 {
26652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026654 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026656 }
26657
26658 /*-------------------------------------------------------------------------
26659 Extract indication and send it to UMAC
26660 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026661 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26662
26663 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26664 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26665 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26666
26667 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26668 {
26669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26670 "%s: fail to allocate memory", __func__);
26671 return WDI_STATUS_MEM_FAILURE;
26672 }
26673
26674 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26675 (pNetwFoundParams->ssId.length < 32 )?
26676 pNetwFoundParams->ssId.length : 32;
26677 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26678 pNetwFoundParams->ssId.ssId,
26679 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26680 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26681 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26682 pNetwFoundParams->frameLength;
26683 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26684 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26685 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026686
26687 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026688 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026689
Jeff Johnson295189b2012-06-20 16:38:30 -070026690 // DEBUG
26691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026692 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026693 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026694 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026695 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026696 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026697 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26698
ltimariub77f24b2013-01-24 18:54:33 -080026699 if ( pWDICtx->wdiLowLevelIndCB )
26700 {
26701 /*Notify UMAC*/
26702 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26703 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026704
26705 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026706}
26707
26708/**
26709 @brief Process PNO Rsp function (called when a
26710 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026711
26712 @param pWDICtx: pointer to the WLAN DAL context
26713 pEventData: pointer to the event information structure
26714
Jeff Johnson295189b2012-06-20 16:38:30 -070026715 @see
26716 @return Result of the function call
26717*/
26718WDI_Status
26719WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026720(
Jeff Johnson295189b2012-06-20 16:38:30 -070026721 WDI_ControlBlockType* pWDICtx,
26722 WDI_EventInfoType* pEventData
26723)
26724{
26725 WDI_Status wdiStatus;
26726 eHalStatus halStatus;
26727 WDI_PNOScanCb wdiPNOScanCb = NULL;
26728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26729
26730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026731 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026732 -------------------------------------------------------------------------*/
26733 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26734 ( NULL == pEventData->pEventData ))
26735 {
26736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026740 }
26741
26742
Jeff Johnsone7245742012-09-05 17:12:55 -070026743 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026744
26745 /*-------------------------------------------------------------------------
26746 Extract response and send it to UMAC
26747 -------------------------------------------------------------------------*/
26748 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026749 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026750
26751 /*Notify UMAC*/
26752 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26753
Jeff Johnsone7245742012-09-05 17:12:55 -070026754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026755}/*WDI_ProcessSetPreferredNetworkRsp*/
26756
26757/**
26758 @brief Process RSSI Filter Rsp function (called when a
26759 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026760
26761 @param pWDICtx: pointer to the WLAN DAL context
26762 pEventData: pointer to the event information structure
26763
Jeff Johnson295189b2012-06-20 16:38:30 -070026764 @see
26765 @return Result of the function call
26766*/
26767WDI_Status
26768WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026769(
Jeff Johnson295189b2012-06-20 16:38:30 -070026770 WDI_ControlBlockType* pWDICtx,
26771 WDI_EventInfoType* pEventData
26772)
26773{
26774 WDI_Status wdiStatus;
26775 eHalStatus halStatus;
26776 WDI_RssiFilterCb wdiRssiFilterCb;
26777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26778
26779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026781 -------------------------------------------------------------------------*/
26782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26783 ( NULL == pEventData->pEventData ))
26784 {
26785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 }
26790
Jeff Johnsone7245742012-09-05 17:12:55 -070026791 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026792
26793 /*-------------------------------------------------------------------------
26794 Extract response and send it to UMAC
26795 -------------------------------------------------------------------------*/
26796 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026797 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026798
26799 /*Notify UMAC*/
26800 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26801
Jeff Johnsone7245742012-09-05 17:12:55 -070026802 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026803}/*WDI_ProcessSetRssiFilterRsp*/
26804
26805/**
26806 @brief Process Update Scan Params Rsp function (called when a
26807 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026808
26809 @param pWDICtx: pointer to the WLAN DAL context
26810 pEventData: pointer to the event information structure
26811
Jeff Johnson295189b2012-06-20 16:38:30 -070026812 @see
26813 @return Result of the function call
26814*/
26815WDI_Status
26816WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026817(
Jeff Johnson295189b2012-06-20 16:38:30 -070026818 WDI_ControlBlockType* pWDICtx,
26819 WDI_EventInfoType* pEventData
26820)
26821{
26822 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026823 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026824 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026825 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26827
26828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 -------------------------------------------------------------------------*/
26831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26832 ( NULL == pEventData->pEventData ))
26833 {
26834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026838 }
26839
26840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026841 "%s: Process UPD scan params ptr : %p",
26842 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026843
Jeff Johnsone7245742012-09-05 17:12:55 -070026844 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026845
26846 /*-------------------------------------------------------------------------
26847 Extract response and send it to UMAC
26848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026849 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26850 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026851 sizeof(halUpdScanParams.status));
26852
26853 uStatus = halUpdScanParams.status;
26854
26855 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026856 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026857
26858 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026859 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026860
Jeff Johnsone7245742012-09-05 17:12:55 -070026861 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026862
26863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026864 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 halUpdScanParams.status);
26866
26867 /*Notify UMAC*/
26868 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26869
Jeff Johnsone7245742012-09-05 17:12:55 -070026870 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026871}
26872#endif // FEATURE_WLAN_SCAN_PNO
26873
26874#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026875WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026876WDI_8023MulticastListReq
26877(
26878 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26879 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26880 void* pUserData
26881)
26882{
26883 WDI_EventInfoType wdiEventData;
26884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26885
26886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026887 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026888
26889 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026891 ------------------------------------------------------------------------*/
26892 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26893 {
26894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26895 "WDI API call before module is initialized - Fail request");
26896
Jeff Johnsone7245742012-09-05 17:12:55 -070026897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026898 }
26899
26900 /*------------------------------------------------------------------------
26901 Fill in Event data and post to the Main FSM
26902 ------------------------------------------------------------------------*/
26903 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026904 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026905 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026906 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026907 wdiEventData.pUserData = pUserData;
26908
26909 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26910}
26911
Jeff Johnsone7245742012-09-05 17:12:55 -070026912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026913WDI_ReceiveFilterSetFilterReq
26914(
26915 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26916 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26917 void* pUserData
26918)
26919{
26920 WDI_EventInfoType wdiEventData;
26921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26922
26923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026924 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026925
26926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026927 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026928 ------------------------------------------------------------------------*/
26929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26930 {
26931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26932 "WDI API call before module is initialized - Fail request");
26933
Jeff Johnsone7245742012-09-05 17:12:55 -070026934 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026935 }
26936
26937 /*------------------------------------------------------------------------
26938 Fill in Event data and post to the Main FSM
26939 ------------------------------------------------------------------------*/
26940 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026941 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26942 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026943 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26944 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026945 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026946 wdiEventData.pUserData = pUserData;
26947
26948
26949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26950}
26951
Jeff Johnsone7245742012-09-05 17:12:55 -070026952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026953WDI_FilterMatchCountReq
26954(
26955 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26956 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26957 void* pUserData
26958)
26959{
26960 WDI_EventInfoType wdiEventData;
26961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26962
26963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026964 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026965
26966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026968 ------------------------------------------------------------------------*/
26969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26970 {
26971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26972 "WDI API call before module is initialized - Fail request");
26973
Jeff Johnsone7245742012-09-05 17:12:55 -070026974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 }
26976
26977 /*------------------------------------------------------------------------
26978 Fill in Event data and post to the Main FSM
26979 ------------------------------------------------------------------------*/
26980 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026983 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026984 wdiEventData.pUserData = pUserData;
26985
26986
26987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26988}
26989
Jeff Johnsone7245742012-09-05 17:12:55 -070026990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026991WDI_ReceiveFilterClearFilterReq
26992(
26993 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26994 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26995 void* pUserData
26996)
26997{
26998 WDI_EventInfoType wdiEventData;
26999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27000
27001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027002 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027003
27004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027005 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027006 ------------------------------------------------------------------------*/
27007 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27008 {
27009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27010 "WDI API call before module is initialized - Fail request");
27011
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 }
27014
27015 /*------------------------------------------------------------------------
27016 Fill in Event data and post to the Main FSM
27017 ------------------------------------------------------------------------*/
27018 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027021 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027022 wdiEventData.pUserData = pUserData;
27023
27024
27025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27026}
27027
27028/**
27029 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027030
27031 @param pWDICtx: pointer to the WLAN DAL context
27032 pEventData: pointer to the event information structure
27033
Jeff Johnson295189b2012-06-20 16:38:30 -070027034 @see
27035 @return Result of the function call
27036*/
27037WDI_Status
27038WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027039(
Jeff Johnson295189b2012-06-20 16:38:30 -070027040 WDI_ControlBlockType* pWDICtx,
27041 WDI_EventInfoType* pEventData
27042)
27043{
27044 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27045 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027046 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 wpt_uint16 usDataOffset = 0;
27048 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027049 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027050 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027051 wpt_uint8 ucCurrentBSSSesIdx = 0;
27052 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027053
27054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027055 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027056
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027057 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27058 if( NULL == pRcvFltMcAddrListType )
27059 {
27060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27061 "Failed to alloc in WDI_Process8023MulticastListReq");
27062 return WDI_STATUS_E_FAILURE;
27063 }
27064
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027067 -------------------------------------------------------------------------*/
27068 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027069 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027070 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027071 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27073 {
27074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027075 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027076 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027078 return WDI_STATUS_E_FAILURE;
27079 }
27080
27081 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27082 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27083 &pBSSSes);
27084 if ( NULL == pBSSSes )
27085 {
27086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027087 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027088 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 }
27091
27092 /*-----------------------------------------------------------------------
27093 Get message buffer
27094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27096 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 sizeof(tHalRcvFltMcAddrListType),
27098 &pSendBuffer, &usDataOffset, &usSendSize))||
27099 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27100 {
27101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27102 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027103 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 pEventData, pwdiFltPktSetMcListReqParamsType,
27105 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027106 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 }
27110
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027111 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027112 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027113 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027115 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027116 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27117 sizeof(tSirMacAddr));
27118 }
27119
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027120 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027121 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027122 pRcvFltMcAddrListType,
27123 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027124
27125 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027126 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027127
27128
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027129 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027134 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027135 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027136}
27137
27138/**
27139 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027140
27141 @param pWDICtx: pointer to the WLAN DAL context
27142 pEventData: pointer to the event information structure
27143
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 @see
27145 @return Result of the function call
27146*/
27147WDI_Status
27148WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027149(
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 WDI_ControlBlockType* pWDICtx,
27151 WDI_EventInfoType* pEventData
27152)
27153{
27154 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27155 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027156 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027157 wpt_uint16 usDataOffset = 0;
27158 wpt_uint16 usSendSize = 0;
27159 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027160 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027161 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027162 wpt_uint8 ucCurrentBSSSesIdx = 0;
27163 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027164 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27165 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027166
27167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027168 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027169
27170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 -------------------------------------------------------------------------*/
27173 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027174 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027175 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027176 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027177 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27178 {
27179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 return WDI_STATUS_E_FAILURE;
27183 }
27184
27185 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27186 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27187 &pBSSSes);
27188 if ( NULL == pBSSSes )
27189 {
27190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027191 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027193 }
27194
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027195 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27196 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027198 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27199 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27200 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27201
27202 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27203 usSessRcvPktFilterCfgSize);
27204
27205 if(NULL == pSessRcvPktFilterCfg)
27206 {
27207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27208 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027209 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027210 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027211 WDI_ASSERT(0);
27212 return WDI_STATUS_E_FAILURE;
27213 }
27214
27215 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27216
27217 /*-----------------------------------------------------------------------
27218 Get message buffer
27219 -----------------------------------------------------------------------*/
27220
27221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27222 usSessRcvPktFilterCfgSize,
27223 &pSendBuffer, &usDataOffset, &usSendSize))||
27224 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27225 {
27226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27227 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027228 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027229 pEventData, pwdiSetRcvPktFilterReqInfo,
27230 wdiReceiveFilterSetFilterCb);
27231 WDI_ASSERT(0);
27232 wpalMemoryFree(pSessRcvPktFilterCfg);
27233 return WDI_STATUS_E_FAILURE;
27234 }
27235
27236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027237 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027238 usSendSize,pSessRcvPktFilterCfg);
27239
27240 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27241 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27242 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27243 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27244
27245 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27246
27247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27248 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27249 pSessRcvPktFilterCfg->filterType);
27250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27251 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27252 pSessRcvPktFilterCfg->coleasceTime);
27253
27254 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27255 {
27256 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27257 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27258 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27259 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27260 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27261 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27262 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27263 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27264
27265 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27266 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27267 8);
27268 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27269 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27270 8);
27271
27272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027273 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027274 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27275 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27276
27277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027278 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027279 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27280 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27281
27282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027283 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027284 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27285 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27286 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27287 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27288 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27289 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27290
27291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027292 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027293 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27294 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27295 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27296 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27297 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27298 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27299 }
27300
27301 wpalMemoryCopy( pSendBuffer+usDataOffset,
27302 pSessRcvPktFilterCfg,
27303 usSessRcvPktFilterCfgSize);
27304
27305
27306 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27307 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27308
27309 wpalMemoryFree(pSessRcvPktFilterCfg);
27310
27311 }
27312 /*If SLM_SESSIONIZATION is not supported then do this */
27313 else
27314 {
27315 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27316 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27317 * sizeof(tHalRcvPktFilterParams));
27318
27319 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027320 usRcvPktFilterCfgSize);
27321
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027322 if(NULL == pRcvPktFilterCfg)
27323 {
27324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27325 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027326 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027327 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027328 WDI_ASSERT(0);
27329 return WDI_STATUS_E_FAILURE;
27330 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027331
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027332 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027333
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027334 /*-----------------------------------------------------------------------
27335 Get message buffer
27336 -----------------------------------------------------------------------*/
27337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 usRcvPktFilterCfgSize,
27339 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027340 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27341 {
27342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027344 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 pEventData, pwdiSetRcvPktFilterReqInfo,
27346 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027347 WDI_ASSERT(0);
27348 wpalMemoryFree(pRcvPktFilterCfg);
27349 return WDI_STATUS_E_FAILURE;
27350 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027351
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027353 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 usSendSize,usRcvPktFilterCfgSize);
27355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027356 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27357 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27358 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27359 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027362 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027363 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027365 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027366 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027367
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027368 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27369 {
27370 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27371 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27372 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27373 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27374 pRcvPktFilterCfg->paramsData[i].dataOffset =
27375 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27376 pRcvPktFilterCfg->paramsData[i].dataLength =
27377 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027378
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027379 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027380 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27381 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027382 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27384 8);
27385
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027387 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027388 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027389 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27390
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027392 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027393 pRcvPktFilterCfg->paramsData[i].dataOffset,
27394 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027395
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027397 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027398 pRcvPktFilterCfg->paramsData[i].compareData[0],
27399 pRcvPktFilterCfg->paramsData[i].compareData[1],
27400 pRcvPktFilterCfg->paramsData[i].compareData[2],
27401 pRcvPktFilterCfg->paramsData[i].compareData[3],
27402 pRcvPktFilterCfg->paramsData[i].compareData[4],
27403 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027406 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027407 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27408 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27409 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27410 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27411 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27412 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27413 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027414
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027415 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027416 pRcvPktFilterCfg,
27417 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027418
27419
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027420 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27421 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027422
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027424 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027425 wpalMemoryFree(pRcvPktFilterCfg);
27426 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027429 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027430 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027431 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027432 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027433}
27434
27435/**
27436 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027437
27438 @param pWDICtx: pointer to the WLAN DAL context
27439 pEventData: pointer to the event information structure
27440
Jeff Johnson295189b2012-06-20 16:38:30 -070027441 @see
27442 @return Result of the function call
27443*/
27444WDI_Status
27445WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027446(
Jeff Johnson295189b2012-06-20 16:38:30 -070027447 WDI_ControlBlockType* pWDICtx,
27448 WDI_EventInfoType* pEventData
27449)
27450{
27451 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27452 NULL;
27453 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27454 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027455 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027456 wpt_uint16 usDataOffset = 0;
27457 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027458 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27459 wpt_uint8 ucCurrentBSSSesIdx = 0;
27460 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027461
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 == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027469 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027470 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027471 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27473 {
27474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 }
27479
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027480 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27481 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27482 &pBSSSes);
27483 if ( NULL == pBSSSes )
27484 {
27485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027486 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 return WDI_STATUS_E_FAILURE;
27488 }
27489
Jeff Johnson295189b2012-06-20 16:38:30 -070027490 /*-----------------------------------------------------------------------
27491 Get message buffer
27492 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27494 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027495 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027496 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027497 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027498 {
27499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27500 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027501 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027502 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27503 wdiFilterMatchCountCb);
27504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027506 }
27507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027508 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27509 wpalMemoryCopy( pSendBuffer+usDataOffset,
27510 &rcvFltPktMatchCntReqParam,
27511 sizeof(rcvFltPktMatchCntReqParam));
27512
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 //
27514 // Don't need to fill send buffer other than header
27515 //
27516 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027517 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027518
27519
27520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027521 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27524 wdiFilterMatchCountCb,
27525 pEventData->pUserData,
27526 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027527}
27528
27529/**
27530 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027531
27532 @param pWDICtx: pointer to the WLAN DAL context
27533 pEventData: pointer to the event information structure
27534
Jeff Johnson295189b2012-06-20 16:38:30 -070027535 @see
27536 @return Result of the function call
27537*/
27538WDI_Status
27539WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027540(
Jeff Johnson295189b2012-06-20 16:38:30 -070027541 WDI_ControlBlockType* pWDICtx,
27542 WDI_EventInfoType* pEventData
27543)
Jeff Johnsone7245742012-09-05 17:12:55 -070027544{
Jeff Johnson295189b2012-06-20 16:38:30 -070027545 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27546 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027547 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027548 wpt_uint16 usDataOffset = 0;
27549 wpt_uint16 usSendSize = 0;
27550 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027551 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027552 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027553
27554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027555 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027556
27557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027559 -------------------------------------------------------------------------*/
27560 if (( NULL == pEventData ) ||
27561 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27562 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027563 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027564 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27565 {
27566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027569 return WDI_STATUS_E_FAILURE;
27570 }
27571
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027572 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027573 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27574 &pBSSSes);
27575 if ( NULL == pBSSSes )
27576 {
27577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027578 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 }
27581
27582 /*-----------------------------------------------------------------------
27583 Get message buffer
27584 -----------------------------------------------------------------------*/
27585 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 sizeof(tHalRcvFltPktClearParam),
27588 &pSendBuffer, &usDataOffset, &usSendSize))||
27589 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27590 {
27591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27592 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027593 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 pEventData, pwdiRcvFltPktClearReqParamsType,
27595 wdiRcvFltPktClearFilterCb);
27596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027598 }
27599
27600
27601 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027602 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027603 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027605
Jeff Johnsone7245742012-09-05 17:12:55 -070027606 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27607 wpalMemoryCopy( pSendBuffer+usDataOffset,
27608 &rcvFltPktClearParam,
27609 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027610
27611 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027612 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027613
27614
27615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027619 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027620 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027621}
27622
27623/**
27624 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027625
27626 @param pWDICtx: pointer to the WLAN DAL context
27627 pEventData: pointer to the event information structure
27628
Jeff Johnson295189b2012-06-20 16:38:30 -070027629 @see
27630 @return Result of the function call
27631*/
27632WDI_Status
27633WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027634(
Jeff Johnson295189b2012-06-20 16:38:30 -070027635 WDI_ControlBlockType* pWDICtx,
27636 WDI_EventInfoType* pEventData
27637)
27638{
Jeff Johnson295189b2012-06-20 16:38:30 -070027639 eHalStatus halStatus;
27640 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027641 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27642 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27644
27645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027646 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027647
27648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027650 -------------------------------------------------------------------------*/
27651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27652 ( NULL == pEventData->pEventData ))
27653 {
27654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658 }
27659
Jeff Johnsone7245742012-09-05 17:12:55 -070027660 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027661
27662 /*-------------------------------------------------------------------------
27663 Extract response and send it to UMAC
27664 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027665 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27666 {
27667 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27668 pEventData->pEventData,
27669 sizeof(halRcvFltPktSetMcListRsp));
27670
27671 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27672 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27673 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27674 halRcvFltPktSetMcListRsp.bssIdx;
27675 }
27676 else
27677 {
27678 halStatus = *((eHalStatus*)pEventData->pEventData);
27679 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27680 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027681
27682 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027683 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027684
Jeff Johnsone7245742012-09-05 17:12:55 -070027685 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027686}
27687
27688/**
27689 @brief Process Set Rsp function (called when a
27690 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027691
27692 @param pWDICtx: pointer to the WLAN DAL context
27693 pEventData: pointer to the event information structure
27694
Jeff Johnson295189b2012-06-20 16:38:30 -070027695 @see
27696 @return Result of the function call
27697*/
27698WDI_Status
27699WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027700(
Jeff Johnson295189b2012-06-20 16:38:30 -070027701 WDI_ControlBlockType* pWDICtx,
27702 WDI_EventInfoType* pEventData
27703)
27704{
Jeff Johnson295189b2012-06-20 16:38:30 -070027705 eHalStatus halStatus;
27706 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027707 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27708 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27710
27711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027712 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027713
27714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027716 -------------------------------------------------------------------------*/
27717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27718 ( NULL == pEventData->pEventData ))
27719 {
27720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027724 }
27725
27726 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027727 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027728
27729 /*-------------------------------------------------------------------------
27730 Extract response and send it to UMAC
27731 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027732 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27733 {
27734 wpalMemoryCopy( &halSetPktFilterRspParams,
27735 pEventData->pEventData,
27736 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027737
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27739 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27740 }
27741 else
27742 {
27743 halStatus = *((eHalStatus*)pEventData->pEventData);
27744 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27745 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027747 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027748
Jeff Johnsone7245742012-09-05 17:12:55 -070027749 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027750}
27751
27752/**
27753 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027754
27755 @param pWDICtx: pointer to the WLAN DAL context
27756 pEventData: pointer to the event information structure
27757
Jeff Johnson295189b2012-06-20 16:38:30 -070027758 @see
27759 @return Result of the function call
27760*/
27761WDI_Status
27762WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027763(
Jeff Johnson295189b2012-06-20 16:38:30 -070027764 WDI_ControlBlockType* pWDICtx,
27765 WDI_EventInfoType* pEventData
27766)
27767{
Jeff Johnson295189b2012-06-20 16:38:30 -070027768 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027770 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27771 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027772
27773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27774
27775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027776 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027777
27778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027780 -------------------------------------------------------------------------*/
27781 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27782 ( NULL == pEventData->pEventData ))
27783 {
27784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 }
27789
Jeff Johnsone7245742012-09-05 17:12:55 -070027790 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027791
27792 /*-------------------------------------------------------------------------
27793 Extract response and send it to UMAC
27794 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027795 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27796 {
27797 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27798 pEventData->pEventData,
27799 sizeof(halRcvFltrPktMatachRsp));
27800
27801 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27802 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27803 }
27804 else
27805 {
27806 halStatus = *((eHalStatus*)pEventData->pEventData);
27807 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27808 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027809
27810 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027811 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027812
Jeff Johnsone7245742012-09-05 17:12:55 -070027813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027814}
27815
27816/**
27817 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027818
27819 @param pWDICtx: pointer to the WLAN DAL context
27820 pEventData: pointer to the event information structure
27821
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 @see
27823 @return Result of the function call
27824*/
27825WDI_Status
27826WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027827(
Jeff Johnson295189b2012-06-20 16:38:30 -070027828 WDI_ControlBlockType* pWDICtx,
27829 WDI_EventInfoType* pEventData
27830)
27831{
Jeff Johnson295189b2012-06-20 16:38:30 -070027832 eHalStatus halStatus;
27833 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027834 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27835 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27837
27838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027839 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027840
27841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027843 -------------------------------------------------------------------------*/
27844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27845 ( NULL == pEventData->pEventData ))
27846 {
27847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027851 }
27852
27853 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027854 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027855
27856 /*-------------------------------------------------------------------------
27857 Extract response and send it to UMAC
27858 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027859 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27860 {
27861 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27862 pEventData->pEventData,
27863 sizeof(halRcvFltPktClearRspMsg));
27864
27865 wdiRcvFltPktClearRspParamsType.wdiStatus =
27866 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27867 wdiRcvFltPktClearRspParamsType.bssIdx =
27868 halRcvFltPktClearRspMsg.bssIdx;
27869 }
27870 else
27871 {
27872 halStatus = *((eHalStatus*)pEventData->pEventData);
27873 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27874 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027875
27876 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027877 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027878
Jeff Johnsone7245742012-09-05 17:12:55 -070027879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027880}
27881#endif // WLAN_FEATURE_PACKET_FILTERING
27882
27883/**
27884 @brief Process Shutdown Rsp function
27885 There is no shutdown response comming from HAL
27886 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027887
Jeff Johnson295189b2012-06-20 16:38:30 -070027888 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027889 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027890
27891 @see
27892 @return Result of the function call
27893*/
27894WDI_Status
27895WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027896(
Jeff Johnson295189b2012-06-20 16:38:30 -070027897 WDI_ControlBlockType* pWDICtx,
27898 WDI_EventInfoType* pEventData
27899)
27900{
27901 /*There is no shutdown response comming from HAL - function just kept for
27902 simmetry */
27903 WDI_ASSERT(0);
27904 return WDI_STATUS_SUCCESS;
27905}/*WDI_ProcessShutdownRsp*/
27906
27907/**
27908 @brief WDI_SetPowerParamsReq
27909
Jeff Johnsone7245742012-09-05 17:12:55 -070027910 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027911 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027912
Jeff Johnson295189b2012-06-20 16:38:30 -070027913 wdiPowerParamsCb: callback for passing back the response
27914 of the Set Power Params operation received from the
27915 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027916
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027918 callback
27919
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 @return Result of the function call
27921*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027922WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027923WDI_SetPowerParamsReq
27924(
27925 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27926 WDI_SetPowerParamsCb wdiPowerParamsCb,
27927 void* pUserData
27928)
27929{
27930 WDI_EventInfoType wdiEventData;
27931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27932
27933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027935 ------------------------------------------------------------------------*/
27936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27937 {
27938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27939 "WDI API call before module is initialized - Fail request");
27940
Jeff Johnsone7245742012-09-05 17:12:55 -070027941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 }
27943
27944 /*------------------------------------------------------------------------
27945 Fill in Event data and post to the Main FSM
27946 ------------------------------------------------------------------------*/
27947 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027948 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027949 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027950 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027951 wdiEventData.pUserData = pUserData;
27952
27953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27954}/*WDI_SetPowerParamsReq*/
27955
27956/**
27957 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027958
27959 @param pWDICtx: pointer to the WLAN DAL context
27960 pEventData: pointer to the event information structure
27961
Jeff Johnson295189b2012-06-20 16:38:30 -070027962 @see
27963 @return Result of the function call
27964*/
27965WDI_Status
27966WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027967(
Jeff Johnson295189b2012-06-20 16:38:30 -070027968 WDI_ControlBlockType* pWDICtx,
27969 WDI_EventInfoType* pEventData
27970)
27971{
27972 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27973 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027974 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027975 wpt_uint16 usDataOffset = 0;
27976 wpt_uint16 usSendSize = 0;
27977 tSetPowerParamsType powerParams;
27978
27979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027981 -------------------------------------------------------------------------*/
27982 if (( NULL == pEventData ) ||
27983 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27984 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27985 {
27986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027990 }
27991
27992 /*-----------------------------------------------------------------------
27993 Get message buffer
27994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027996 sizeof(powerParams),
27997 &pSendBuffer, &usDataOffset, &usSendSize))||
27998 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27999 {
28000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028001 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 }
28006
28007 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028008 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028009 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28010
28011 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028012 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028013 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28014
28015 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028016 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028017 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28018
28019 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028020 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28022
28023 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028024 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28026
28027 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028028 powerParams.uBETInterval =
28029 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028030
Yue Mac24062f2013-05-13 17:01:29 -070028031 /* MAX LI for modulated DTIM */
28032 powerParams.uMaxLIModulatedDTIM =
28033 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028034
28035 wpalMemoryCopy( pSendBuffer+usDataOffset,
28036 &powerParams,
28037 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028038
28039 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028040 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028041
28042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028043 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028045 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28046 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028047}
28048
28049/**
28050 @brief Process Power Params Rsp function (called when a
28051 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028052
28053 @param pWDICtx: pointer to the WLAN DAL context
28054 pEventData: pointer to the event information structure
28055
Jeff Johnson295189b2012-06-20 16:38:30 -070028056 @see
28057 @return Result of the function call
28058*/
28059WDI_Status
28060WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028061(
Jeff Johnson295189b2012-06-20 16:38:30 -070028062 WDI_ControlBlockType* pWDICtx,
28063 WDI_EventInfoType* pEventData
28064)
28065{
28066 WDI_Status wdiStatus;
28067 eHalStatus halStatus;
28068 WDI_SetPowerParamsCb wdiPowerParamsCb;
28069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28070
28071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 -------------------------------------------------------------------------*/
28074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28075 ( NULL == pEventData->pEventData ))
28076 {
28077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028081 }
28082
Jeff Johnsone7245742012-09-05 17:12:55 -070028083 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028084
28085 /*-------------------------------------------------------------------------
28086 Extract response and send it to UMAC
28087 -------------------------------------------------------------------------*/
28088 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028090
28091 /*Notify UMAC*/
28092 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28093
Jeff Johnsone7245742012-09-05 17:12:55 -070028094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028095}/*WDI_ProcessSetPowerParamsRsp*/
28096
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028097/**
28098 @brief WDI_dhcpStartInd
28099 Host will send an event to the FW when DHCP is initiated
28100
28101 @param
28102 WDI_DHCPInd: DHCP Indication
28103 @see
28104 @return Result of the function call
28105*/
28106WDI_Status
28107WDI_dhcpStartInd
28108(
28109 WDI_DHCPInd *wdiDHCPInd
28110)
28111{
28112 WDI_EventInfoType wdiEventData;
28113
28114 /*------------------------------------------------------------------------
28115 Sanity Check
28116 ------------------------------------------------------------------------*/
28117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28118 {
28119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28120 "WDI API call before module is initialized - Fail request");
28121
28122 return WDI_STATUS_E_NOT_ALLOWED;
28123 }
28124
28125 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28126 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028127 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028128 wdiEventData.pCBfnc = NULL;
28129 wdiEventData.pUserData = NULL;
28130
28131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28132}
28133
28134
28135/**
28136 @brief WDI_dhcpStopInd
28137 Host will send an event to the FW when DHCP is completed
28138
28139 @param
28140 WDI_DHCPInd: DHCP Indication
28141 @see
28142 @return Result of the function call
28143*/
28144WDI_Status
28145WDI_dhcpStopInd
28146(
28147 WDI_DHCPInd *wdiDHCPInd
28148)
28149{
28150 WDI_EventInfoType wdiEventData;
28151
28152 /*------------------------------------------------------------------------
28153 Sanity Check
28154 ------------------------------------------------------------------------*/
28155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28156 {
28157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28158 "WDI API call before module is initialized - Fail request");
28159
28160 return WDI_STATUS_E_NOT_ALLOWED;
28161 }
28162
28163 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28164 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028165 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028166 wdiEventData.pCBfnc = NULL;
28167 wdiEventData.pUserData = NULL;
28168
28169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28170}
28171
28172
28173/**
28174 @brief Process DHCP Start Indication message and post it to HAL
28175
28176 @param pWDICtx: pointer to the WLAN DAL context
28177 pEventData: pointer to the event information structure
28178
28179 @see
28180 @return Result of the function call
28181*/
28182WDI_Status
28183WDI_ProcessDHCPStartInd
28184(
28185 WDI_ControlBlockType* pWDICtx,
28186 WDI_EventInfoType* pEventData
28187)
28188{
28189 wpt_uint8* pSendBuffer = NULL;
28190 wpt_uint16 usDataOffset = 0;
28191 wpt_uint16 usSendSize = 0;
28192 wpt_uint16 usLen = 0;
28193 WDI_DHCPInd* pwdiDHCPInd = NULL;
28194 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028195 WDI_Status wdiStatus;
28196
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028197
28198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28199
28200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28201 "%s", __func__);
28202
28203 /*-------------------------------------------------------------------------
28204 Sanity check
28205 -------------------------------------------------------------------------*/
28206 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28207 {
28208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28209 "%s: Invalid parameters", __func__);
28210 WDI_ASSERT(0);
28211 return WDI_STATUS_E_FAILURE;
28212 }
28213 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28214 /*-----------------------------------------------------------------------
28215 Get message buffer
28216 -----------------------------------------------------------------------*/
28217
28218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28219 WDI_DHCP_START_IND,
28220 sizeof(tDHCPInfo),
28221 &pSendBuffer, &usDataOffset, &usSendSize))||
28222 ( usSendSize < (usDataOffset + usLen )))
28223 {
28224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28225 "Unable to get send buffer in DHCP Start req %p ",
28226 pEventData);
28227 WDI_ASSERT(0);
28228 return WDI_STATUS_E_FAILURE;
28229 }
28230
Sandeep Puligillaee789512014-02-13 19:14:52 +053028231 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028232 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28233 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28234 WDI_MAC_ADDR_LEN);
28235
28236 pWDICtx->pReqStatusUserData = NULL;
28237 pWDICtx->pfncRspCB = NULL;
28238
28239 /*-------------------------------------------------------------------------
28240 Send DHCP Start Indication to HAL
28241 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028242 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28243 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028244}/*WDI_ProcessDHCPStartInd*/
28245
28246/**
28247 @brief Process DHCP Stop indication message and post it to HAL
28248
28249 @param pWDICtx: pointer to the WLAN DAL context
28250 pEventData: pointer to the event information structure
28251
28252 @see
28253 @return Result of the function call
28254*/
28255WDI_Status
28256WDI_ProcessDHCPStopInd
28257(
28258 WDI_ControlBlockType* pWDICtx,
28259 WDI_EventInfoType* pEventData
28260)
28261{
28262 wpt_uint8* pSendBuffer = NULL;
28263 wpt_uint16 usDataOffset = 0;
28264 wpt_uint16 usSendSize = 0;
28265 wpt_uint16 usLen = 0;
28266 WDI_DHCPInd* pwdiDHCPInd = NULL;
28267 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028268 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028269
28270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28271
28272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28273 "%s", __func__);
28274
28275 /*-------------------------------------------------------------------------
28276 Sanity check
28277 -------------------------------------------------------------------------*/
28278
28279 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28280 {
28281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28282 "%s: Invalid parameters", __func__);
28283 WDI_ASSERT(0);
28284 return WDI_STATUS_E_FAILURE;
28285 }
28286 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28287 /*-----------------------------------------------------------------------
28288 Get message buffer
28289 -----------------------------------------------------------------------*/
28290
28291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28292 WDI_DHCP_STOP_IND,
28293 sizeof(tDHCPInfo),
28294 &pSendBuffer, &usDataOffset, &usSendSize))||
28295 ( usSendSize < (usDataOffset + usLen )))
28296 {
28297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28298 "Unable to get send buffer in DHCP Start req %p ",
28299 pEventData);
28300 WDI_ASSERT(0);
28301 return WDI_STATUS_E_FAILURE;
28302 }
28303
Sandeep Puligillaee789512014-02-13 19:14:52 +053028304 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028305 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28306 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28307 WDI_MAC_ADDR_LEN);
28308
28309 pWDICtx->pReqStatusUserData = NULL;
28310 pWDICtx->pfncRspCB = NULL;
28311 /*-------------------------------------------------------------------------
28312 Send DHCP Stop indication to HAL
28313 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028314 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28315 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028316
28317}/*WDI_ProcessDHCPStopInd*/
28318
28319
Jeff Johnson295189b2012-06-20 16:38:30 -070028320#ifdef WLAN_FEATURE_GTK_OFFLOAD
28321/**
28322 @brief WDI_GTKOffloadReq will be called when the upper MAC
28323 wants to set GTK Rekey Counter while in power save. Upon
28324 the call of this API the WLAN DAL will pack and send a
28325 HAL GTK offload request message to the lower RIVA
28326 sub-system if DAL is in state STARTED.
28327
28328 In state BUSY this request will be queued. Request won't
28329 be allowed in any other state.
28330
28331 WDI_PostAssocReq must have been called.
28332
28333 @param pwdiGtkOffloadParams: the GTK offload as specified
28334 by the Device Interface
28335
28336 wdiGtkOffloadCb: callback for passing back the response
28337 of the GTK offload operation received from the device
28338
28339 pUserData: user data will be passed back with the
28340 callback
28341
28342 @see WDI_PostAssocReq
28343 @return Result of the function call
28344*/
28345WDI_Status
28346WDI_GTKOffloadReq
28347(
28348 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28349 WDI_GtkOffloadCb wdiGtkOffloadCb,
28350 void* pUserData
28351)
28352{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028353 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28355
28356 /*------------------------------------------------------------------------
28357 Sanity Check
28358 ------------------------------------------------------------------------*/
28359 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28360 {
28361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28362 "WDI API call before module is initialized - Fail request");
28363
28364 return WDI_STATUS_E_NOT_ALLOWED;
28365 }
28366
28367 /*------------------------------------------------------------------------
28368 Fill in Event data and post to the Main FSM
28369 ------------------------------------------------------------------------*/
28370 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28371 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028372 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028373 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28374 wdiEventData.pUserData = pUserData;
28375
28376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28377}
28378
28379
28380/**
28381 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28382 MAC wants to get GTK Rekey Counter while in power save.
28383 Upon the call of this API the WLAN DAL will pack and
28384 send a HAL GTK offload request message to the lower RIVA
28385 sub-system if DAL is in state STARTED.
28386
28387 In state BUSY this request will be queued. Request won't
28388 be allowed in any other state.
28389
28390 WDI_PostAssocReq must have been called.
28391
28392 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28393 Information Message as specified by the
28394 Device Interface
28395
28396 wdiGtkOffloadGetInfoCb: callback for passing back the
28397 response of the GTK offload operation received from the
28398 device
28399
28400 pUserData: user data will be passed back with the
28401 callback
28402
28403 @see WDI_PostAssocReq
28404 @return Result of the function call
28405*/
28406WDI_Status
28407WDI_GTKOffloadGetInfoReq
28408(
28409 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28410 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28411 void* pUserData
28412)
28413{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028414 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28416
28417 /*------------------------------------------------------------------------
28418 Sanity Check
28419 ------------------------------------------------------------------------*/
28420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28421 {
28422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28423 "WDI API call before module is initialized - Fail request");
28424
28425 return WDI_STATUS_E_NOT_ALLOWED;
28426 }
28427
28428 /*------------------------------------------------------------------------
28429 Fill in Event data and post to the Main FSM
28430 ------------------------------------------------------------------------*/
28431 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28432 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28433 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28434 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28435 wdiEventData.pUserData = pUserData;
28436
28437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28438}
28439
28440
28441/**
28442 @brief Process set GTK Offload Request function
28443
28444 @param pWDICtx: pointer to the WLAN DAL context
28445 pEventData: pointer to the event information structure
28446
28447 @see
28448 @return Result of the function call
28449*/
28450WDI_Status
28451WDI_ProcessGTKOffloadReq
28452(
28453 WDI_ControlBlockType* pWDICtx,
28454 WDI_EventInfoType* pEventData
28455)
28456{
28457 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28458 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28459 wpt_uint8* pSendBuffer = NULL;
28460 wpt_uint16 usDataOffset = 0;
28461 wpt_uint16 usSendSize = 0;
28462 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028463 wpt_uint8 ucCurrentSessionId = 0;
28464 WDI_BSSSessionType* pBSSSes = NULL;
28465
Jeff Johnson295189b2012-06-20 16:38:30 -070028466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28467
28468 /*-------------------------------------------------------------------------
28469 Sanity check
28470 -------------------------------------------------------------------------*/
28471 if (( NULL == pEventData ) ||
28472 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28473 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28474 {
28475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028477 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028478 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028479 }
28480
28481 /*-----------------------------------------------------------------------
28482 Get message buffer
28483 -----------------------------------------------------------------------*/
28484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28485 sizeof(gtkOffloadReqParams),
28486 &pSendBuffer, &usDataOffset, &usSendSize))||
28487 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28488 {
28489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028490 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028491 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28492 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028493 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028494 }
28495
28496 //
28497 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28498 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028499 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28500 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28501 &pBSSSes);
28502 if ( NULL == pBSSSes )
28503 {
28504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028505 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028506 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028507 }
28508
28509 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28510
Jeff Johnson295189b2012-06-20 16:38:30 -070028511 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28512 // Copy KCK
28513 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28514 // Copy KEK
28515 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28516 // Copy KeyReplayCounter
28517 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28518
28519 wpalMemoryCopy( pSendBuffer+usDataOffset,
28520 &gtkOffloadReqParams,
28521 sizeof(gtkOffloadReqParams));
28522
28523 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28524 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28525
28526 /*-------------------------------------------------------------------------
28527 Send Get STA Request to HAL
28528 -------------------------------------------------------------------------*/
28529 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28530 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028531
28532fail:
28533 // Release the message buffer so we don't leak
28534 wpalMemoryFree(pSendBuffer);
28535
28536failRequest:
28537 //WDA should have failure check to avoid the memory leak
28538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028539}
28540
28541
28542/**
28543 @brief Process GTK Offload Get Information Request function
28544
28545 @param pWDICtx: pointer to the WLAN DAL context
28546 pEventData: pointer to the event information structure
28547
28548 @see
28549 @return Result of the function call
28550*/
28551WDI_Status
28552WDI_ProcessGTKOffloadGetInfoReq
28553(
28554 WDI_ControlBlockType* pWDICtx,
28555 WDI_EventInfoType* pEventData
28556)
28557{
28558 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28559 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28560 wpt_uint8* pSendBuffer = NULL;
28561 wpt_uint16 usDataOffset = 0;
28562 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028563 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28564 wpt_uint8 ucCurrentSessionId = 0;
28565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028566
28567 /*-------------------------------------------------------------------------
28568 Sanity check
28569 -------------------------------------------------------------------------*/
28570 if (( NULL == pEventData ) ||
28571 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28572 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28573 {
28574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028576 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028577 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028578 }
28579
28580 /*-----------------------------------------------------------------------
28581 Get message buffer
28582 -----------------------------------------------------------------------*/
28583 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028584 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028585 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028586 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028587 {
28588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028589 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028590 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28591 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028592 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028594 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28595 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28596 &pBSSSes);
28597 if ( NULL == pBSSSes )
28598 {
28599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028600 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028601 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028602 }
28603 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028604
28605 //
28606 // Don't need to fill send buffer other than header
28607 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028608 wpalMemoryCopy( pSendBuffer+usDataOffset,
28609 &halGtkOffloadGetInfoReqParams,
28610 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028611
28612 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28613 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28614
28615 /*-------------------------------------------------------------------------
28616 Send Get STA Request to HAL
28617 -------------------------------------------------------------------------*/
28618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28619 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028620fail:
28621 // Release the message buffer so we don't leak
28622 wpalMemoryFree(pSendBuffer);
28623
28624failRequest:
28625 //WDA should have failure check to avoid the memory leak
28626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028627}
28628
28629/**
28630 @brief Process host offload Rsp function (called when a
28631 response is being received over the bus from HAL)
28632
28633 @param pWDICtx: pointer to the WLAN DAL context
28634 pEventData: pointer to the event information structure
28635
28636 @see
28637 @return Result of the function call
28638*/
28639WDI_Status
28640WDI_ProcessGtkOffloadRsp
28641(
28642 WDI_ControlBlockType* pWDICtx,
28643 WDI_EventInfoType* pEventData
28644)
28645{
Jeff Johnson295189b2012-06-20 16:38:30 -070028646 eHalStatus halStatus;
28647 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028648 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28649 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028650
28651 /*-------------------------------------------------------------------------
28652 Sanity check
28653 -------------------------------------------------------------------------*/
28654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28655 ( NULL == pEventData->pEventData))
28656 {
28657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028659 WDI_ASSERT(0);
28660 return WDI_STATUS_E_FAILURE;
28661 }
28662
Wilson Yang00256342013-10-10 23:13:38 -070028663 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28664
Jeff Johnson295189b2012-06-20 16:38:30 -070028665 /*-------------------------------------------------------------------------
28666 Extract response and send it to UMAC
28667 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028668 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28669 {
28670 wpalMemoryCopy( &halGtkOffloadRspParams,
28671 pEventData->pEventData,
28672 sizeof(halGtkOffloadRspParams));
28673
28674 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028675 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028676 wdiGtkOffloadRsparams.bssIdx =
28677 halGtkOffloadRspParams.bssIdx;
28678 }
28679 else
28680 {
28681 halStatus = *((eHalStatus*)pEventData->pEventData);
28682 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28683 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028684
28685 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028686 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028687
28688 return WDI_STATUS_SUCCESS;
28689}
28690
28691/**
28692 @brief Process GTK Offload Get Information Response function
28693
28694 @param pWDICtx: pointer to the WLAN DAL context
28695 pEventData: pointer to the event information structure
28696
28697 @see
28698 @return Result of the function call
28699*/
28700WDI_Status
28701WDI_ProcessGTKOffloadGetInfoRsp
28702(
28703 WDI_ControlBlockType* pWDICtx,
28704 WDI_EventInfoType* pEventData
28705)
28706{
Jeff Johnson295189b2012-06-20 16:38:30 -070028707 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028708 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028709 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28710 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028711 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028712
Jeff Johnson295189b2012-06-20 16:38:30 -070028713
28714 /*-------------------------------------------------------------------------
28715 Sanity check
28716 -------------------------------------------------------------------------*/
28717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28718 ( NULL == pEventData->pEventData ))
28719 {
28720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028722 WDI_ASSERT(0);
28723 return WDI_STATUS_E_FAILURE;
28724 }
28725
Wilson Yang00256342013-10-10 23:13:38 -070028726 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28727
28728 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028729 Extract response and send it to UMAC
28730 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028731 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28732 {
28733 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28734 pEventData->pEventData,
28735 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028736
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028737 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028738 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028739 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28740 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28741 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28742 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28743 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28744 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28745 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28746 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028747
28748 wpalMutexAcquire(&pWDICtx->wptMutex);
28749 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28750 &pBSSSes);
28751
28752 if ( NULL == pBSSSes )
28753 {
28754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28755 "Association sequence for this BSS does not exist or "
28756 "association no longer in progress - mysterious HAL response");
28757 wpalMutexRelease(&pWDICtx->wptMutex);
28758 return WDI_STATUS_E_NOT_ALLOWED;
28759 }
28760
28761 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28762 sizeof (wpt_macAddr));
28763 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028764 }
28765 else
28766 {
28767 halStatus = *((eHalStatus*)pEventData->pEventData);
28768 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28769 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028770 /*Notify UMAC*/
28771 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28772 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028773 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028774
28775 return WDI_STATUS_SUCCESS;
28776}
28777#endif // WLAN_FEATURE_GTK_OFFLOAD
28778
28779#ifdef WLAN_WAKEUP_EVENTS
28780WDI_Status
28781WDI_ProcessWakeReasonInd
28782(
28783 WDI_ControlBlockType* pWDICtx,
28784 WDI_EventInfoType* pEventData
28785)
28786{
28787 WDI_LowLevelIndType *pWdiInd;
28788 tpWakeReasonParams pWakeReasonParams;
28789 wpt_uint32 allocSize = 0;
28790
28791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028792 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028793
28794 /*-------------------------------------------------------------------------
28795 Sanity check
28796 -------------------------------------------------------------------------*/
28797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28798 ( NULL == pEventData->pEventData ))
28799 {
28800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028802 WDI_ASSERT( 0 );
28803 return WDI_STATUS_E_FAILURE;
28804 }
28805
28806 /*-------------------------------------------------------------------------
28807 Extract indication and send it to UMAC
28808 -------------------------------------------------------------------------*/
28809 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28810
28811 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28812
28813 //Allocate memory for WDI_WakeReasonIndType structure
28814 pWdiInd = wpalMemoryAllocate(allocSize) ;
28815
28816 if(NULL == pWdiInd)
28817 {
28818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028819 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028820 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028821 WDI_ASSERT(0);
28822 return WDI_STATUS_E_FAILURE;
28823 }
28824
28825 wpalMemoryZero(pWdiInd, allocSize);
28826
28827 /* Fill in the indication parameters*/
28828 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28829 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28830 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28831 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28832 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28833 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28834 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28835 &(pWakeReasonParams->aDataStart[0]),
28836 pWakeReasonParams->ulStoredDataLen);
28837
ltimariub77f24b2013-01-24 18:54:33 -080028838
28839 if ( pWDICtx->wdiLowLevelIndCB )
28840 {
28841 /*Notify UMAC*/
28842 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28843 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028844
28845 //Free memory allocated for WDI_WakeReasonIndType structure
28846 wpalMemoryFree(pWdiInd);
28847
28848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028849 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028850
28851 return WDI_STATUS_SUCCESS;
28852}
28853#endif // WLAN_WAKEUP_EVENTS
28854
28855void WDI_GetWcnssCompiledApiVersion
28856(
28857 WDI_WlanVersionType *pWcnssApiVersion
28858)
28859{
28860 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28861 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28862 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28863 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28864}
28865
28866/**
28867 @brief Process Set TM Level Rsp function (called when a
28868 response is being received over the bus from HAL)
28869
28870 @param pWDICtx: pointer to the WLAN DAL context
28871 pEventData: pointer to the event information structure
28872
28873 @see
28874 @return Result of the function call
28875*/
28876WDI_Status
28877WDI_ProcessSetTmLevelRsp
28878(
28879 WDI_ControlBlockType* pWDICtx,
28880 WDI_EventInfoType* pEventData
28881)
28882{
28883 WDI_Status wdiStatus;
28884 eHalStatus halStatus;
28885 WDI_SetTmLevelCb wdiSetTmLevelCb;
28886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28887
28888 /*-------------------------------------------------------------------------
28889 Sanity check
28890 -------------------------------------------------------------------------*/
28891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28892 ( NULL == pEventData->pEventData ))
28893 {
28894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028896 WDI_ASSERT(0);
28897 return WDI_STATUS_E_FAILURE;
28898 }
28899
28900 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28901
28902 /*-------------------------------------------------------------------------
28903 Extract response and send it to UMAC
28904 -------------------------------------------------------------------------*/
28905 halStatus = *((eHalStatus*)pEventData->pEventData);
28906 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28907
28908 /*Notify UMAC*/
28909 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28910
28911 return WDI_STATUS_SUCCESS;
28912}/*WDI_ProcessSetTmLevelRsp*/
28913
28914/**
28915 @brief Process Set Thermal Mitigation level Changed request
28916
28917 @param pWDICtx: pointer to the WLAN DAL context
28918 pEventData: pointer to the event information structure
28919
28920 @see
28921 @return Result of the function call
28922*/
28923WDI_Status
28924WDI_ProcessSetTmLevelReq
28925(
28926 WDI_ControlBlockType* pWDICtx,
28927 WDI_EventInfoType* pEventData
28928)
28929{
28930 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28931 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28932 wpt_uint8* pSendBuffer = NULL;
28933 wpt_uint16 usDataOffset = 0;
28934 wpt_uint16 usSendSize = 0;
28935 tSetThermalMitgationType halTmMsg;
28936
28937 /*-------------------------------------------------------------------------
28938 Sanity check
28939 -------------------------------------------------------------------------*/
28940 if (( NULL == pEventData ) ||
28941 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28942 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28943 {
28944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028946 WDI_ASSERT(0);
28947 return WDI_STATUS_E_FAILURE;
28948 }
28949
28950 /*-----------------------------------------------------------------------
28951 Get message buffer
28952 -----------------------------------------------------------------------*/
28953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28954 sizeof(halTmMsg),
28955 &pSendBuffer, &usDataOffset, &usSendSize))||
28956 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28957 {
28958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028959 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028960 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28961 WDI_ASSERT(0);
28962 return WDI_STATUS_E_FAILURE;
28963 }
28964
28965 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28966 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28967
28968 wpalMemoryCopy( pSendBuffer+usDataOffset,
28969 &halTmMsg,
28970 sizeof(halTmMsg));
28971
28972 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28973 pWDICtx->pfncRspCB = NULL;
28974 /*-------------------------------------------------------------------------
28975 Send Get STA Request to HAL
28976 -------------------------------------------------------------------------*/
28977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28978 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28979}
28980
28981/* Fill the value from the global features enabled array to the global capabilities
28982 * bitmap struct
28983 */
28984static void
28985FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28986{
28987 wpt_int8 i;
28988 for (i=0; i<len; i++)
28989 {
28990 setFeatCaps(fCaps, enabledFeat[i]);
28991 }
28992}
28993
28994/**
28995 @brief WDI_featureCapsExchangeReq
28996 Post feature capability bitmap exchange event.
28997 Host will send its own capability to FW in this req and
28998 expect FW to send its capability back as a bitmap in Response
28999
29000 @param
29001
29002 wdiFeatureCapsExchangeCb: callback called on getting the response.
29003 It is kept to mantain similarity between WDI reqs and if needed, can
29004 be used in future. Currently, It is set to NULL
29005
29006 pUserData: user data will be passed back with the
29007 callback
29008
29009 @see
29010 @return Result of the function call
29011*/
29012WDI_Status
29013WDI_featureCapsExchangeReq
29014(
29015 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29016 void* pUserData
29017)
29018{
29019 WDI_EventInfoType wdiEventData;
29020 wpt_int32 fCapsStructSize;
29021
29022 /*------------------------------------------------------------------------
29023 Sanity Check
29024 ------------------------------------------------------------------------*/
29025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29026 {
29027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29028 "WDI API call before module is initialized - Fail request");
29029
29030 return WDI_STATUS_E_NOT_ALLOWED;
29031 }
29032
29033 /* Allocate memory separately for global variable carrying FW caps */
29034 fCapsStructSize = sizeof(tWlanFeatCaps);
29035 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29036 if ( NULL == gpHostWlanFeatCaps )
29037 {
29038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029039 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029040 WDI_ASSERT(0);
29041 return WDI_STATUS_MEM_FAILURE;
29042 }
29043
29044 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29045
29046 /*------------------------------------------------------------------------
29047 Fill in Event data and post to the Main FSM
29048 ------------------------------------------------------------------------*/
29049 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29050 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029052 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029053 gpHostWlanFeatCaps->featCaps[0],
29054 gpHostWlanFeatCaps->featCaps[1],
29055 gpHostWlanFeatCaps->featCaps[2],
29056 gpHostWlanFeatCaps->featCaps[3]
29057 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29059 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029060 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29061 wdiEventData.pEventData = gpHostWlanFeatCaps;
29062 wdiEventData.uEventDataSize = fCapsStructSize;
29063 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29064 wdiEventData.pUserData = pUserData;
29065
29066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29067}
29068
29069/**
Yathish9f22e662012-12-10 14:21:35 -080029070 @brief Disable Active mode offload in Host
29071
29072 @param void
29073 @see
29074 @return void
29075*/
29076void
29077WDI_disableCapablityFeature(wpt_uint8 feature_index)
29078{
29079 supportEnabledFeatures[feature_index] = 0;
29080 return;
29081}
29082
29083/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029084 @brief Process Host-FW Capability Exchange Request function
29085
29086 @param pWDICtx: pointer to the WLAN DAL context
29087 pEventData: pointer to the event information structure
29088
29089 @see
29090 @return Result of the function call
29091*/
29092WDI_Status
29093WDI_ProcessFeatureCapsExchangeReq
29094(
29095 WDI_ControlBlockType* pWDICtx,
29096 WDI_EventInfoType* pEventData
29097)
29098{
29099 wpt_uint8* pSendBuffer = NULL;
29100 wpt_uint16 usDataOffset = 0;
29101 wpt_uint16 usSendSize = 0;
29102 wpt_uint16 usLen = 0;
29103
29104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29105
29106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029107 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029108
29109 /*-------------------------------------------------------------------------
29110 Sanity check
29111 -------------------------------------------------------------------------*/
29112 /* Call back function is NULL since not required for cap exchange req */
29113 if (( NULL == pEventData ) ||
29114 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29115 {
29116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029118 WDI_ASSERT(0);
29119 return WDI_STATUS_E_FAILURE;
29120 }
29121
29122 /*-----------------------------------------------------------------------
29123 Get message buffer
29124 -----------------------------------------------------------------------*/
29125 usLen = sizeof(tWlanFeatCaps);
29126
29127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29128 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29129 usLen,
29130 &pSendBuffer, &usDataOffset, &usSendSize))||
29131 ( usSendSize < (usDataOffset + usLen )))
29132 {
29133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029134 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029135 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29136 WDI_ASSERT(0);
29137 return WDI_STATUS_E_FAILURE;
29138 }
29139
29140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029141 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029142 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29143 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29144 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29145 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29146 );
29147
29148 /* Copy host caps after the offset in the send buffer */
29149 wpalMemoryCopy( pSendBuffer+usDataOffset,
29150 (tWlanFeatCaps *)pEventData->pEventData,
29151 usLen);
29152
29153 /*-------------------------------------------------------------------------
29154 Send Start Request to HAL
29155 -------------------------------------------------------------------------*/
29156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29157 (WDI_StartRspCb)pEventData->pCBfnc,
29158 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29159
29160}/*WDI_ProcessFeatureCapsExchangeReq*/
29161
29162/**
29163 @brief Process Host-FW Capability Exchange Response function
29164
29165 @param pWDICtx: pointer to the WLAN DAL context
29166 pEventData: pointer to the event information structure
29167
29168 @see
29169 @return Result of the function call
29170*/
29171WDI_Status
29172WDI_ProcessFeatureCapsExchangeRsp
29173(
29174 WDI_ControlBlockType* pWDICtx,
29175 WDI_EventInfoType* pEventData
29176)
29177{
29178 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29179 wpt_int32 fCapsStructSize;
29180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29181
29182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029183 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029184
29185 /*-------------------------------------------------------------------------
29186 Sanity check
29187 -------------------------------------------------------------------------*/
29188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29189 ( NULL == pEventData->pEventData ))
29190 {
29191 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029193 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029194 WDI_ASSERT(0);
29195 return WDI_STATUS_E_FAILURE;
29196 }
29197
29198 /* Allocate memory separately for global variable carrying FW caps */
29199 fCapsStructSize = sizeof(tWlanFeatCaps);
29200 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29201 if ( NULL == gpFwWlanFeatCaps )
29202 {
29203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029204 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029205 WDI_ASSERT(0);
29206 return WDI_STATUS_MEM_FAILURE;
29207 }
29208
29209 /*-------------------------------------------------------------------------
29210 Unpack HAL Response Message - the header was already extracted by the
29211 main Response Handling procedure
29212 -------------------------------------------------------------------------*/
29213 /*-------------------------------------------------------------------------
29214 Extract response and send it to UMAC
29215 -------------------------------------------------------------------------*/
29216
29217 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29218 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029220 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029221 gpFwWlanFeatCaps->featCaps[0],
29222 gpFwWlanFeatCaps->featCaps[1],
29223 gpFwWlanFeatCaps->featCaps[2],
29224 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029225 );
29226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29227 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029228 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29229
29230 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29231 if (wdiFeatureCapsExchangeCb != NULL)
29232 wdiFeatureCapsExchangeCb(NULL, NULL);
29233
29234 return WDI_STATUS_SUCCESS;
29235}
29236
Mohit Khanna4a70d262012-09-11 16:30:12 -070029237#ifdef WLAN_FEATURE_11AC
29238WDI_Status
29239WDI_ProcessUpdateVHTOpModeRsp
29240(
29241 WDI_ControlBlockType* pWDICtx,
29242 WDI_EventInfoType* pEventData
29243)
29244{
29245 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29246 WDI_Status wdiStatus;
29247 eHalStatus halStatus;
29248
29249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29250
29251 /*-------------------------------------------------------------------------
29252 Sanity check
29253 -------------------------------------------------------------------------*/
29254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29255 ( NULL == pEventData->pEventData))
29256 {
29257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029258 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029259 WDI_ASSERT(0);
29260 return WDI_STATUS_E_FAILURE;
29261 }
29262 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29263
29264 /*-------------------------------------------------------------------------
29265 Extract response and send it to UMAC
29266 -------------------------------------------------------------------------*/
29267 halStatus = *((eHalStatus*)pEventData->pEventData);
29268 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29269
29270 /*Notify UMAC*/
29271 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29272
29273 return WDI_STATUS_SUCCESS;
29274}
29275#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029276/**
29277 @brief WDI_getHostWlanFeatCaps
29278 WDI API that returns whether the feature passed to it as enum value in
29279 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29280 variable storing host capability bitmap to find this. This can be used by
29281 other moduels to decide certain things like call different APIs based on
29282 whether a particular feature is supported.
29283
29284 @param
29285
29286 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29287
29288 @see
29289 @return
29290 0 - if the feature is NOT supported in host
29291 any non-zero value - if the feature is SUPPORTED in host.
29292*/
29293wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29294{
29295 wpt_uint8 featSupported = 0;
29296 if (gpHostWlanFeatCaps != NULL)
29297 {
29298 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29299 }
29300 else
29301 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029303 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029304 }
29305 return featSupported;
29306}
29307
29308/**
29309 @brief WDI_getFwWlanFeatCaps
29310 WDI API that returns whether the feature passed to it as enum value in
29311 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29312 variable storing host capability bitmap to find this. This can be used by
29313 other moduels to decide certain things like call different APIs based on
29314 whether a particular feature is supported.
29315
29316 @param
29317
29318 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29319 in wlan_hal_msg.h.
29320
29321 @see
29322 @return
29323 0 - if the feature is NOT supported in FW
29324 any non-zero value - if the feature is SUPPORTED in FW.
29325*/
29326wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29327{
29328 wpt_uint8 featSupported = 0;
29329 if (gpFwWlanFeatCaps != NULL)
29330 {
29331 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29332 }
29333 else
29334 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029336 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029337 }
29338 return featSupported;
29339}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029340
29341#ifdef WLAN_FEATURE_11AC
29342WDI_Status
29343WDI_ProcessUpdateVHTOpModeReq
29344(
29345 WDI_ControlBlockType* pWDICtx,
29346 WDI_EventInfoType* pEventData
29347)
29348{
29349 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29350 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29351 wpt_uint8* pSendBuffer = NULL;
29352 wpt_uint16 usDataOffset = 0;
29353 wpt_uint16 usSendSize = 0;
29354
29355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29356
29357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029358 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029359
29360 /*-------------------------------------------------------------------------
29361 Sanity check
29362 -------------------------------------------------------------------------*/
29363 if (( NULL == pEventData ) ||
29364 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29365 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29366 {
29367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029368 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029369 WDI_ASSERT(0);
29370 return WDI_STATUS_E_FAILURE;
29371 }
29372
29373 /*-----------------------------------------------------------------------
29374 Get message buffer
29375 -----------------------------------------------------------------------*/
29376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29377 sizeof(WDI_UpdateVHTOpMode),
29378 &pSendBuffer, &usDataOffset, &usSendSize))||
29379 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29380 {
29381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29382 "Unable to get send buffer in update vht opMode req");
29383 WDI_ASSERT(0);
29384 return WDI_STATUS_E_FAILURE;
29385 }
29386
29387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029388 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029389
29390 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29391 sizeof(WDI_UpdateVHTOpMode));
29392
29393 /*-------------------------------------------------------------------------
29394 Send Start Request to HAL
29395 -------------------------------------------------------------------------*/
29396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29397 wdiVHTOpModeCb,
29398 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29399
29400}
29401
29402WDI_Status
29403WDI_UpdateVHTOpModeReq
29404(
29405 WDI_UpdateVHTOpMode *pData,
29406 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29407 void* pUserData
29408)
29409{
29410 WDI_EventInfoType wdiEventData;
29411
29412 /*------------------------------------------------------------------------
29413 Sanity Check
29414 ------------------------------------------------------------------------*/
29415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29416 {
29417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29418 "WDI API call before module is initialized - Fail request");
29419
29420 return WDI_STATUS_E_NOT_ALLOWED;
29421 }
29422
29423 /*------------------------------------------------------------------------
29424 Fill in Event data and post to the Main FSM
29425 ------------------------------------------------------------------------*/
29426 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29427 wdiEventData.pEventData = pData;
29428 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29429 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29430 wdiEventData.pUserData = pUserData;
29431
29432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029433 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029434
29435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29436
29437}
29438#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029439
29440/**
29441 @brief WDI_TransportChannelDebug -
29442 Display DXE Channel debugging information
29443 User may request to display DXE channel snapshot
29444 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029445
Jeff Johnsonb88db982012-12-10 13:34:59 -080029446 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029447 @param debugFlags : Enable stall detect features
29448 defined by WPAL_DeviceDebugFlags
29449 These features may effect
29450 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029451 @see
29452 @return none
29453*/
29454void WDI_TransportChannelDebug
29455(
29456 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029457 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029458)
29459{
Mihir Shete40a55652014-03-02 14:14:47 +053029460 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029461 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029462}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029463/**
29464 @brief WDI_SsrTimerCB
29465 Callback function for SSR timer, if this is called then the graceful
29466 shutdown for Riva did not happen.
29467
29468 @param pUserData : user data to timer
29469
29470 @see
29471 @return none
29472*/
29473void
29474WDI_SsrTimerCB
29475(
29476 void *pUserData
29477)
29478{
29479 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29481
29482 if (NULL == pWDICtx )
29483 {
29484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029485 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029486 WDI_ASSERT(0);
29487 return;
29488 }
29489 wpalRivaSubystemRestart();
29490
29491 return;
29492
29493}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029494
29495/**
29496 @brief WDI_SetEnableSSR -
29497 This API is called to enable/disable SSR on WDI timeout.
29498
29499 @param enableSSR : enable/disable SSR
29500
29501 @see
29502 @return none
29503*/
29504void WDI_SetEnableSSR(wpt_boolean enableSSR)
29505{
29506 gWDICb.bEnableSSR = enableSSR;
29507}
Leo Chang9056f462013-08-01 19:21:11 -070029508
29509
29510#ifdef FEATURE_WLAN_LPHB
29511/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029512 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029513 This function will be invoked when FW detects low power
29514 heart beat failure
29515
29516 @param pWDICtx : wdi context
29517 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029518 @see
29519 @return Result of the function call
29520*/
29521WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029522WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029523(
29524 WDI_ControlBlockType* pWDICtx,
29525 WDI_EventInfoType* pEventData
29526)
29527{
29528 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029529 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29531
29532 /*-------------------------------------------------------------------------
29533 Sanity check
29534 -------------------------------------------------------------------------*/
29535 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29536 (NULL == pEventData->pEventData))
29537 {
29538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29539 "%s: Invalid parameters", __func__);
29540 WDI_ASSERT(0);
29541 return WDI_STATUS_E_FAILURE;
29542 }
29543
29544 /*-------------------------------------------------------------------------
29545 Extract indication and send it to UMAC
29546 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029547 wpalMemoryCopy(&lphbIndicationParam,
29548 pEventData->pEventData,
29549 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029550
Leo Changd9df8aa2013-09-26 13:32:26 -070029551 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029552 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029553 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029554 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029555 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029556 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029557 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029558 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029559 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029560 /*Notify UMAC*/
29561 if (pWDICtx->wdiLowLevelIndCB)
29562 {
29563 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29564 }
29565
29566 return WDI_STATUS_SUCCESS;
29567}
29568
29569/**
29570 @brief WDI_ProcessLphbCfgRsp -
29571 LPHB configuration response from FW
29572
29573 @param pWDICtx : wdi context
29574 pEventData : indication data
29575
29576 @see
29577 @return Result of the function call
29578*/
29579WDI_Status WDI_ProcessLphbCfgRsp
29580(
29581 WDI_ControlBlockType* pWDICtx,
29582 WDI_EventInfoType* pEventData
29583)
29584{
29585 WDI_Status wdiStatus;
29586 eHalStatus halStatus;
29587 WDI_LphbCfgCb wdiLphbCfgCb;
29588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29589
29590 /*-------------------------------------------------------------------------
29591 Sanity check
29592 -------------------------------------------------------------------------*/
29593 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29594 (NULL == pEventData->pEventData))
29595 {
29596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29597 "%s: Invalid parameters", __func__);
29598 WDI_ASSERT(0);
29599 return WDI_STATUS_E_FAILURE;
29600 }
29601
29602 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29603
29604 /*-------------------------------------------------------------------------
29605 Extract response and send it to UMAC
29606 -------------------------------------------------------------------------*/
29607 halStatus = *((eHalStatus*)pEventData->pEventData);
29608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29609
29610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29611 "LPHB Cfg Rsp Return status %d", wdiStatus);
29612 /*Notify UMAC*/
29613 if (NULL != wdiLphbCfgCb)
29614 {
29615 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29616 }
29617
29618 return WDI_STATUS_SUCCESS;
29619}
29620
29621/**
29622 @brief WDI_ProcessLPHBConfReq -
29623 LPHB configuration request to FW
29624
29625 @param pWDICtx : wdi context
29626 pEventData : indication data
29627
29628 @see
29629 @return none
29630*/
29631WDI_Status WDI_ProcessLPHBConfReq
29632(
29633 WDI_ControlBlockType* pWDICtx,
29634 WDI_EventInfoType* pEventData
29635)
29636{
29637 WDI_LPHBReq *pLphbReqParams;
29638 WDI_Status wdiStatus;
29639 wpt_uint8* pSendBuffer = NULL;
29640 wpt_uint16 usDataOffset = 0;
29641 wpt_uint16 usSendSize = 0;
29642 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29644
29645 /*-------------------------------------------------------------------------
29646 Sanity check
29647 -------------------------------------------------------------------------*/
29648 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29649 {
29650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29651 "%s: Invalid parameters in Suspend ind",__func__);
29652 WDI_ASSERT(0);
29653 return WDI_STATUS_E_FAILURE;
29654 }
29655
29656 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29657
29658 /*-----------------------------------------------------------------------
29659 Get message buffer
29660 -----------------------------------------------------------------------*/
29661 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29662 WDI_LPHB_CFG_REQ,
29663 sizeof(tHalLowPowerHeartBeatReqMsg),
29664 &pSendBuffer, &usDataOffset, &usSendSize))||
29665 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29666 {
29667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29668 "Unable to get send buffer in LPHB Ind ");
29669 WDI_ASSERT(0);
29670 return WDI_STATUS_E_FAILURE;
29671 }
29672
29673 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29674 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29675
29676 halLphbReqRarams->lowPowerHeartBeatCmdType =
29677 (tANI_U16)(++pLphbReqParams->cmd);
29678 switch ((tANI_U16)pLphbReqParams->cmd)
29679 {
29680 case WDI_LPHB_SET_EN_PARAMS_INDID:
29681 halLphbReqRarams->sessionIdx =
29682 pLphbReqParams->params.lphbEnableReq.session;
29683 halLphbReqRarams->options.control.heartBeatEnable =
29684 pLphbReqParams->params.lphbEnableReq.enable;
29685 halLphbReqRarams->options.control.heartBeatType =
29686 pLphbReqParams->params.lphbEnableReq.item;
29687 break;
29688
29689 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29690 halLphbReqRarams->sessionIdx =
29691 pLphbReqParams->params.lphbTcpParamReq.session;
29692 halLphbReqRarams->options.tcpParams.timeOutSec =
29693 pLphbReqParams->params.lphbTcpParamReq.timeout;
29694 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29695 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29696 sizeof(v_U32_t));
29697 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29698 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29699 sizeof(v_U32_t));
29700
29701 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29702 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29703 WDI_MAC_ADDR_LEN);
29704
29705 halLphbReqRarams->options.tcpParams.hostPort =
29706 pLphbReqParams->params.lphbTcpParamReq.src_port;
29707 halLphbReqRarams->options.tcpParams.destPort =
29708 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029709 halLphbReqRarams->options.tcpParams.timePeriodSec =
29710 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29711 halLphbReqRarams->options.tcpParams.tcpSn =
29712 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029713 break;
29714
29715 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29716 halLphbReqRarams->sessionIdx =
29717 pLphbReqParams->params.lphbTcpFilterReq.session;
29718 halLphbReqRarams->options.tcpUdpFilter.offset =
29719 pLphbReqParams->params.lphbTcpFilterReq.offset;
29720 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29721 pLphbReqParams->params.lphbTcpFilterReq.length;
29722 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29723 pLphbReqParams->params.lphbTcpFilterReq.filter,
29724 WDI_LPHB_FILTER_LEN);
29725 break;
29726
29727 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29728 halLphbReqRarams->sessionIdx =
29729 pLphbReqParams->params.lphbUdpParamReq.session;
29730 halLphbReqRarams->options.udpParams.timeOutSec =
29731 pLphbReqParams->params.lphbUdpParamReq.timeout;
29732 halLphbReqRarams->options.udpParams.timePeriodSec =
29733 pLphbReqParams->params.lphbUdpParamReq.interval;
29734 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29735 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29736 sizeof(v_U32_t));
29737 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29738 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29739 sizeof(v_U32_t));
29740
29741 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29742 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29743 WDI_MAC_ADDR_LEN);
29744
29745 halLphbReqRarams->options.udpParams.hostPort =
29746 pLphbReqParams->params.lphbUdpParamReq.src_port;
29747 halLphbReqRarams->options.udpParams.destPort =
29748 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29749 break;
29750
29751 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29752 halLphbReqRarams->sessionIdx =
29753 pLphbReqParams->params.lphbUdpFilterReq.session;
29754 halLphbReqRarams->options.tcpUdpFilter.offset =
29755 pLphbReqParams->params.lphbUdpFilterReq.offset;
29756 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29757 pLphbReqParams->params.lphbUdpFilterReq.length;
29758 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29759 pLphbReqParams->params.lphbUdpFilterReq.filter,
29760 WDI_LPHB_FILTER_LEN);
29761 break;
29762
29763 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29764 /* NA */
29765 break;
29766
29767 default:
29768 break;
29769 }
29770
29771 /*-------------------------------------------------------------------------
29772 Send Suspend Request to HAL
29773 -------------------------------------------------------------------------*/
29774 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29775 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29776
29777 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29778 usSendSize, pWDICtx->pfncRspCB,
29779 pWDICtx->pReqStatusUserData,
29780 WDI_LPHB_CFG_RESP);
29781
29782 return wdiStatus;
29783}
29784
29785/**
29786 @brief WDI_LPHBConfReq -
29787 LPHB configuration request API
29788
29789 @param lphbconfParam : configuration parameter
29790 usrData : client context
29791 lphbCfgCb : callback function pointer
29792
29793 @see
29794 @return Success or fail status code
29795*/
29796WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29797 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29798{
29799 WDI_EventInfoType wdiEventData;
29800
29801 /*------------------------------------------------------------------------
29802 Sanity Check
29803 ------------------------------------------------------------------------*/
29804 if (eWLAN_PAL_FALSE == gWDIInitialized)
29805 {
29806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29807 "WDI API call before module is initialized - Fail request");
29808
29809 return WDI_STATUS_E_NOT_ALLOWED;
29810 }
29811
29812 /*------------------------------------------------------------------------
29813 Fill in Event data and post to the Main FSM
29814 ------------------------------------------------------------------------*/
29815 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29816 wdiEventData.pEventData = lphbconfParam;
29817 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29818 wdiEventData.pCBfnc = lphbCfgCb;
29819 wdiEventData.pUserData = usrData;
29820
29821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29822}
29823#endif /* FEATURE_WLAN_LPHB */
29824
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029825/**
29826 @brief WDI_ProcessIbssPeerInactivityInd
29827 Process peer inactivity indication coming from HAL
29828
29829 @param pWDICtx: pointer to the WLAN DAL context
29830 pEventData: pointer to the event information structure
29831 @see
29832 @return Result of the function call
29833*/
29834WDI_Status
29835WDI_ProcessIbssPeerInactivityInd
29836(
29837 WDI_ControlBlockType* pWDICtx,
29838 WDI_EventInfoType* pEventData
29839)
29840{
29841 WDI_LowLevelIndType wdiInd;
29842 tIbssPeerInactivityIndMsg halIbssIndMsg;
29843
29844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29845
29846 /*-------------------------------------------------------------------------
29847 Sanity check
29848 -------------------------------------------------------------------------*/
29849 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29850 ( NULL == pEventData->pEventData ))
29851 {
29852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29853 "%s: Invalid parameters", __func__);
29854 WDI_ASSERT( 0 );
29855 return WDI_STATUS_E_FAILURE;
29856 }
29857
29858 /*-------------------------------------------------------------------------
29859 Extract indication and send it to UMAC
29860 -------------------------------------------------------------------------*/
29861 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29862 pEventData->pEventData,
29863 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29864
29865 /*Fill in the indication parameters*/
29866 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29867
29868 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29869 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29870
29871 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29872 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29873
29874 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29875 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29876 sizeof(tSirMacAddr));
29877
29878 /*Notify UMAC*/
29879 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29880
29881 return WDI_STATUS_SUCCESS;
29882
29883} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029884
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029885/**
29886*@brief WDI_RateUpdateInd will be called when the upper MAC
29887 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029888
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029889
29890 @param wdiRateUpdateIndParams:
29891
29892
29893 @see
29894 @return Result of the function call
29895*/
29896WDI_Status
29897WDI_RateUpdateInd
29898(
29899 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29900)
29901{
29902 WDI_EventInfoType wdiEventData;
29903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29904
29905 /*------------------------------------------------------------------------
29906 Sanity Check
29907 ------------------------------------------------------------------------*/
29908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29909 {
29910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29911 "WDI API call before module is initialized - Fail request");
29912
29913 return WDI_STATUS_E_NOT_ALLOWED;
29914 }
29915
29916 /*------------------------------------------------------------------------
29917 Fill in Event data and post to the Main FSM
29918 ------------------------------------------------------------------------*/
29919 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29920 wdiEventData.pEventData = wdiRateUpdateIndParams;
29921 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29922 wdiEventData.pCBfnc = NULL;
29923 wdiEventData.pUserData = NULL;
29924
29925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29926
29927}/* WDI_RateUpdateInd */
29928
29929/**
29930 @brief Process Rate Update Indication and post it to HAL
29931
29932 @param pWDICtx: pointer to the WLAN DAL context
29933 pEventData: pointer to the event information structure
29934
29935 @see
29936 @return Result of the function call
29937*/
29938WDI_Status
29939WDI_ProcessRateUpdateInd
29940(
29941 WDI_ControlBlockType* pWDICtx,
29942 WDI_EventInfoType* pEventData
29943)
29944{
29945 wpt_uint8* pSendBuffer = NULL;
29946 wpt_uint16 usDataOffset = 0;
29947 wpt_uint16 usSendSize = 0;
29948 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29949 tHalRateUpdateInd *pRateUpdateInd;
29950 WDI_Status wdiStatus;
29951
29952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29953
29954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29955 "%s", __func__);
29956
29957 /*-------------------------------------------------------------------------
29958 Sanity check
29959 -------------------------------------------------------------------------*/
29960 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29961 {
29962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29963 "%s: Invalid parameters", __func__);
29964 WDI_ASSERT(0);
29965 return WDI_STATUS_E_FAILURE;
29966 }
29967 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29968 /*-----------------------------------------------------------------------
29969 Get message buffer
29970 -----------------------------------------------------------------------*/
29971
29972 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29973 WDI_RATE_UPDATE_IND,
29974 sizeof(tHalRateUpdateParams),
29975 &pSendBuffer, &usDataOffset, &usSendSize))||
29976 ( usSendSize < (usDataOffset +
29977 sizeof(tHalRateUpdateParams) )))
29978 {
29979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29980 "Unable to get send buffer in Rate Update Indication %p ",
29981 pEventData);
29982 WDI_ASSERT(0);
29983 return WDI_STATUS_E_FAILURE;
29984 }
29985
29986 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29987
29988 /* Copy the bssid */
29989 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29990 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29991
29992 /* Copy the tx flags */
29993 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29994 pwdiRateUpdateInd->ucastDataRateTxFlag;
29995 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29996 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29997 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29998 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29999 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30000 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30001
30002 /* Copy the tx rates */
30003 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30004 pwdiRateUpdateInd->ucastDataRate;
30005 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30006 pwdiRateUpdateInd->reliableMcastDataRate;
30007 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30008 pwdiRateUpdateInd->mcastDataRate24GHz;
30009 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30010 pwdiRateUpdateInd->mcastDataRate5GHz;
30011
30012 /*-------------------------------------------------------------------------
30013 Send Rate Update Indication to HAL
30014 -------------------------------------------------------------------------*/
30015 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30016 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30017
30018 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30019
30020 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30021 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30022
30023} /* WDI_ProcessRateUpdateInd */
30024
30025#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030026/**
30027 @brief Process stop batch indication from WDA
30028
30029 @param pWDICtx: pointer to the WLAN DAL context
30030 pEventData: pointer to the event information structure
30031
30032 @see
30033 @return Result of the function call
30034*/
30035WDI_Status
30036WDI_ProcessStopBatchScanInd
30037(
30038 WDI_ControlBlockType* pWDICtx,
30039 WDI_EventInfoType* pEventData
30040)
30041{
30042 wpt_uint8* pSendBuffer = NULL;
30043 wpt_uint16 usDataOffset = 0;
30044 wpt_uint16 usSendSize = 0;
30045 WDI_Status wdiStatus;
30046 tHalBatchScanStopIndParam *pHalInd = NULL;
30047 WDI_StopBatchScanIndType *pWdiInd = NULL;
30048
30049
30050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30051
30052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30053 "%s", __func__);
30054
30055 /*-------------------------------------------------------------------------
30056 Sanity check
30057 -------------------------------------------------------------------------*/
30058
30059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30060 {
30061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30062 "%s: Invalid parameters", __func__);
30063 WDI_ASSERT(0);
30064 return WDI_STATUS_E_FAILURE;
30065 }
30066 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30067 /*-----------------------------------------------------------------------
30068 Get message buffer
30069 -----------------------------------------------------------------------*/
30070
30071 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30072 WDI_STOP_BATCH_SCAN_IND,
30073 sizeof(tHalBatchScanStopIndParam),
30074 &pSendBuffer, &usDataOffset, &usSendSize))||
30075 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30076 {
30077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30078 "Unable to get send buffer in stop batch scan ind %p ",
30079 pEventData);
30080 WDI_ASSERT(0);
30081 return WDI_STATUS_E_FAILURE;
30082 }
30083
30084 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30085 pHalInd->param = pWdiInd->param;
30086
30087 pWDICtx->pReqStatusUserData = NULL;
30088 pWDICtx->pfncRspCB = NULL;
30089 /*-------------------------------------------------------------------------
30090 Send Stop batch scan indication to HAL
30091 -------------------------------------------------------------------------*/
30092 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30093 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30094}
30095
30096/**
30097 @brief This API is called to trigger batch scan results from FW
30098
30099 @param pWDICtx: pointer to the WLAN DAL context
30100 pEventData: pointer to the event information structure
30101
30102 @see
30103 @return Result of the function call
30104*/
30105WDI_Status
30106WDI_ProcessTriggerBatchScanResultInd
30107(
30108 WDI_ControlBlockType* pWDICtx,
30109 WDI_EventInfoType* pEventData
30110)
30111{
30112 WDI_Status wdiStatus;
30113 wpt_uint8* pSendBuffer = NULL;
30114 wpt_uint16 usDataOffset = 0;
30115 wpt_uint16 usSendSize = 0;
30116 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30117 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30118
30119
30120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30121
30122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30123 "%s", __func__);
30124
30125 /*-------------------------------------------------------------------------
30126 Sanity check
30127 -------------------------------------------------------------------------*/
30128
30129 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30130 {
30131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30132 "%s: Invalid parameters", __func__);
30133 WDI_ASSERT(0);
30134 return WDI_STATUS_E_FAILURE;
30135 }
30136 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30137 /*-----------------------------------------------------------------------
30138 Get message buffer
30139 -----------------------------------------------------------------------*/
30140
30141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30142 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30143 sizeof(tHalBatchScanTriggerResultParam),
30144 &pSendBuffer, &usDataOffset, &usSendSize))||
30145 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30146 {
30147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30148 "Unable to get send buffer in stop batch scan ind %p ",
30149 pEventData);
30150 WDI_ASSERT(0);
30151 return WDI_STATUS_E_FAILURE;
30152 }
30153
30154 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30155 pHalInd->param = pWdiInd->param;
30156
30157 pWDICtx->pReqStatusUserData = NULL;
30158 pWDICtx->pfncRspCB = NULL;
30159 /*-------------------------------------------------------------------------
30160 Send trigger batch scan result indication to HAL
30161 -------------------------------------------------------------------------*/
30162 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30163 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30164}
30165
30166
30167/**
30168 @brief Process set batch scan response from FW
30169
30170 @param pWDICtx: pointer to the WLAN DAL context
30171 pEventData: pointer to the event information structure
30172
30173 @see
30174 @return Result of the function call
30175*/
30176WDI_Status
30177WDI_ProcessSetBatchScanRsp
30178(
30179 WDI_ControlBlockType* pWDICtx,
30180 WDI_EventInfoType* pEventData
30181)
30182{
30183 WDI_SetBatchScanCb wdiSetBatchScanCb;
30184 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30185
30186 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30188
30189 /*sanity check*/
30190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30191 ( NULL == pEventData->pEventData))
30192 {
30193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30194 "%s: Invalid parameters", __func__);
30195 WDI_ASSERT(0);
30196 return WDI_STATUS_E_FAILURE;
30197 }
30198
30199 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30200 if ( NULL == wdiSetBatchScanCb)
30201 {
30202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30203 "%s: call back function is NULL", __func__);
30204 WDI_ASSERT(0);
30205 return WDI_STATUS_E_FAILURE;
30206 }
30207
30208 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30209
30210 if (NULL == pSetBatchScanRsp)
30211 {
30212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030213 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030214 pWDICtx, pEventData, pEventData->pEventData);
30215 WDI_ASSERT(0);
30216 return WDI_STATUS_E_FAILURE;
30217 }
30218
Sunil Duttbd736ed2014-05-26 21:19:41 +053030219 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030220 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30221
30222 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30223
Sunil Duttbd736ed2014-05-26 21:19:41 +053030224 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030225 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30226
30227 wpalMemoryFree(pSetBatchScanRsp);
30228
30229 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030230}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030231
30232/**
30233 @brief Process batch scan result indication from FW
30234
30235 @param pWDICtx: pointer to the WLAN DAL context
30236 pEventData: pointer to the event information structure
30237
30238 @see
30239 @return Result of the function call
30240*/
30241WDI_Status
30242WDI_ProcessBatchScanResultInd
30243(
30244 WDI_ControlBlockType* pWDICtx,
30245 WDI_EventInfoType* pEventData
30246)
30247{
30248 void *pBatchScanResultInd;
30249 WDI_LowLevelIndType wdiInd;
30250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30251
Sunil Duttbd736ed2014-05-26 21:19:41 +053030252 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30254 ( NULL == pEventData->pEventData))
30255 {
30256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30257 "%s: Invalid parameters", __func__);
30258 WDI_ASSERT(0);
30259 return WDI_STATUS_E_FAILURE;
30260 }
30261
Sunil Duttbd736ed2014-05-26 21:19:41 +053030262 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030263 pBatchScanResultInd = (void *)pEventData->pEventData;
30264
Sunil Duttbd736ed2014-05-26 21:19:41 +053030265 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030266 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30267
30268 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30269
Sunil Duttbd736ed2014-05-26 21:19:41 +053030270 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030271 if (pWDICtx->wdiLowLevelIndCB)
30272 {
30273 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30274 }
30275 else
30276 {
30277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30278 "%s: WDILowLevelIndCb is null", __func__);
30279 WDI_ASSERT(0);
30280 return WDI_STATUS_E_FAILURE;
30281 }
30282
30283 return WDI_STATUS_SUCCESS;
30284} /*End of WDI_ProcessBatchScanResultInd*/
30285
Sunil Duttbd736ed2014-05-26 21:19:41 +053030286#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30287/**
30288 @brief Process Link Layer Statistics Result indication from FW
30289
30290 @param pWDICtx: pointer to the WLAN DAL context
30291 pEventData: pointer to the event information structure
30292
30293 @see
30294 @return Result of the function call
30295*/
30296WDI_Status
30297WDI_ProcessLinkLayerStatsResultsInd
30298(
30299 WDI_ControlBlockType* pWDICtx,
30300 WDI_EventInfoType* pEventData
30301)
30302{
30303 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030304 WDI_LLstatsResultsType *halLLStatsResults;
30305 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030306 WDI_LowLevelIndType wdiInd;
30307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30308
30309 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30310 "%s: Event RESULTS Indication", __func__);
30311
30312 /* sanity check */
30313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30314 ( NULL == pEventData->pEventData))
30315 {
30316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30317 "%s: Invalid parameters", __func__);
30318 WDI_ASSERT(0);
30319 return WDI_STATUS_E_FAILURE;
30320 }
30321
30322 /* extract response and send it to UMAC */
30323 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30324
30325 /* Fill in the indication parameters */
30326 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30327
Dino Mycled3d50022014-07-07 12:58:25 +053030328 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30329 = pLinkLayerStatsInd;
30330
30331 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30332
30333
30334 /* Need to fill in the MAC address */
30335 if ( WDI_STATUS_SUCCESS !=
30336 WDI_STATableGetStaMacAddr(pWDICtx,
30337 halLLStatsResults->iface_id,
30338 &macAddr))
30339 {
30340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30341 " ifaceId: %u does not exist in the WDI Station Table",
30342 halLLStatsResults->iface_id);
30343
30344 return WDI_STATUS_E_FAILURE;
30345 }
30346 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30347 macAddr, WDI_MAC_ADDR_LEN);
30348
30349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30350 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30351 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030352
30353 /* Notify UMAC */
30354 if (pWDICtx->wdiLowLevelIndCB)
30355 {
30356 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30357 }
30358 else
30359 {
30360 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30361 "%s: WDILowLevelIndCb is null", __func__);
30362 WDI_ASSERT(0);
30363 return WDI_STATUS_E_FAILURE;
30364 }
30365
30366 return WDI_STATUS_SUCCESS;
30367} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30368#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30369
Rajeev79dbe4c2013-10-05 11:03:42 +053030370/**
30371 @brief WDI_ProcessSetBatchScanReq -
30372 Set batch scan request to FW
30373
30374 @param pWDICtx : wdi context
30375 pEventData : indication data
30376
30377 @see
30378 @return none
30379*/
30380WDI_Status WDI_ProcessSetBatchScanReq
30381(
30382 WDI_ControlBlockType* pWDICtx,
30383 WDI_EventInfoType* pEventData
30384)
30385{
30386 WDI_SetBatchScanReqType *pWdiReq;
30387 WDI_Status wdiStatus;
30388 wpt_uint8* pSendBuffer = NULL;
30389 wpt_uint16 usDataOffset = 0;
30390 wpt_uint16 usSendSize = 0;
30391 tHalBatchScanSetParams *pHalReq;
30392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30393
30394 /*sanity check*/
30395 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30396 {
30397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30398 "%s: Invalid parameters in set batch scan request", __func__);
30399 WDI_ASSERT(0);
30400 return WDI_STATUS_E_FAILURE;
30401 }
30402
30403
30404 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30405
30406
30407 /*get message buffer*/
30408 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30409 WDI_SET_BATCH_SCAN_REQ,
30410 sizeof(tHalBatchScanSetParams),
30411 &pSendBuffer, &usDataOffset, &usSendSize))||
30412 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30413 {
30414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30415 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30416 WDI_ASSERT(0);
30417 return WDI_STATUS_E_FAILURE;
30418 }
30419
30420 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30421
30422 pHalReq->rtt = pWdiReq->rtt;
30423 pHalReq->rfBand = pWdiReq->rfBand;
30424 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30425 pHalReq->scanInterval = pWdiReq->scanFrequency;
30426 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30427
30428 /*send set batch scan request to fw*/
30429 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30430 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30431
30432 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30433 usSendSize, pWDICtx->pfncRspCB,
30434 pWDICtx->pReqStatusUserData,
30435 WDI_SET_BATCH_SCAN_RESP);
30436
30437 return wdiStatus;
30438}
30439
30440/**
30441 @brief WDI_SetBatchScanReq
30442 This API is called to set batch scan request in FW
30443
30444 @param pBatchScanReqParam : pointer to set batch scan re param
30445 usrData : Client context
30446 setBatchScanRspCb : set batch scan resp callback
30447 @see
30448 @return SUCCESS or FAIL
30449*/
30450WDI_Status WDI_SetBatchScanReq
30451(
30452 void *pBatchScanReqParam,
30453 void *usrData,
30454 WDI_SetBatchScanCb setBatchScanRspCb
30455)
30456{
30457 WDI_EventInfoType wdiEventData;
30458
30459 /*sanity check*/
30460 if (eWLAN_PAL_FALSE == gWDIInitialized)
30461 {
30462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30463 "WDI API call before module is initialized - Fail request");
30464
30465 return WDI_STATUS_E_NOT_ALLOWED;
30466 }
30467
30468 /* fill in event data and post to the main FSM */
30469 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30470 wdiEventData.pEventData = pBatchScanReqParam;
30471 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30472 wdiEventData.pCBfnc = setBatchScanRspCb;
30473 wdiEventData.pUserData = usrData;
30474
30475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30476}
30477
30478/**
30479 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30480
30481 @param None
30482
30483 @see
30484
30485 @return Status of the request
30486*/
30487WDI_Status
30488WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30489{
30490 WDI_EventInfoType wdiEventData;
30491
30492 /*-------------------------------------------------------------------------
30493 Sanity Check
30494 ------------------------------------------------------------------------*/
30495 if (eWLAN_PAL_FALSE == gWDIInitialized)
30496 {
30497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30498 "WDI API call before module is initialized - Fail request!");
30499
30500 return WDI_STATUS_E_NOT_ALLOWED;
30501 }
30502
30503 /*-------------------------------------------------------------------------
30504 Fill in Event data and post to the Main FSM
30505 ------------------------------------------------------------------------*/
30506 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30507 wdiEventData.pEventData = pWdiReq;
30508 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30509 wdiEventData.pCBfnc = NULL;
30510 wdiEventData.pUserData = NULL;
30511
30512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30513}
30514
30515/**
30516 @brief WDI_TriggerBatchScanResultInd
30517 This API is called to pull batch scan result from FW
30518
30519 @param pWdiReq : pointer to get batch scan ind param
30520 @see
30521 @return SUCCESS or FAIL
30522*/
30523WDI_Status WDI_TriggerBatchScanResultInd
30524(
30525 WDI_TriggerBatchScanResultIndType *pWdiReq
30526)
30527{
30528 WDI_EventInfoType wdiEventData;
30529 /*-------------------------------------------------------------------------
30530 Sanity Check
30531 ------------------------------------------------------------------------*/
30532 if (eWLAN_PAL_FALSE == gWDIInitialized)
30533 {
30534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30535 "WDI API call before module is initialized - Fail request!");
30536
30537 return WDI_STATUS_E_NOT_ALLOWED;
30538 }
30539
30540 /*-------------------------------------------------------------------------
30541 Fill in Event data and post to the Main FSM
30542 ------------------------------------------------------------------------*/
30543 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30544 wdiEventData.pEventData = pWdiReq;
30545 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30546 wdiEventData.pCBfnc = NULL;
30547 wdiEventData.pUserData = NULL;
30548
30549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30550}
Rajeev79dbe4c2013-10-05 11:03:42 +053030551#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030552
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030553/**
30554 @brief Process Update Channel Rsp function (called when a response is
30555 being received over the bus from HAL)
30556
30557 @param pWDICtx: pointer to the WLAN DAL context
30558 pEventData: pointer to the event information structure
30559
30560 @see
30561 @return Result of the function call
30562*/
30563WDI_Status
30564WDI_ProcessUpdateChanRsp
30565(
30566 WDI_ControlBlockType* pWDICtx,
30567 WDI_EventInfoType* pEventData
30568)
30569{
30570 WDI_Status wdiStatus;
30571 eHalStatus halStatus;
30572 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30574
30575 /*-------------------------------------------------------------------------
30576 Sanity check
30577 -------------------------------------------------------------------------*/
30578 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30579 ( NULL == pEventData->pEventData))
30580 {
30581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30582 "%s: Invalid parameters", __func__);
30583 WDI_ASSERT(0);
30584 return WDI_STATUS_E_FAILURE;
30585 }
30586
30587 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30588
30589 /*-------------------------------------------------------------------------
30590 Extract response and send it to UMAC
30591 -------------------------------------------------------------------------*/
30592 halStatus = *((eHalStatus*)pEventData->pEventData);
30593 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30594
30595 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30596
30597 return WDI_STATUS_SUCCESS;
30598}/*WDI_ProcessUpdateChanRsp*/
30599
Leo Chang0b0e45a2013-12-15 15:18:55 -080030600#ifdef FEATURE_WLAN_CH_AVOID
30601/**
30602 @brief v -WDI_ProcessChAvoidInd
30603
30604
30605 @param pWDICtx : wdi context
30606 pEventData : indication data
30607 @see
30608 @return Result of the function call
30609*/
30610WDI_Status
30611WDI_ProcessChAvoidInd
30612(
30613 WDI_ControlBlockType* pWDICtx,
30614 WDI_EventInfoType* pEventData
30615)
30616{
30617 WDI_LowLevelIndType wdiInd;
30618 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30619 wpt_uint16 rangeLoop;
30620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30621
30622 /*-------------------------------------------------------------------------
30623 Sanity check
30624 -------------------------------------------------------------------------*/
30625 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30626 (NULL == pEventData->pEventData))
30627 {
30628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30629 "%s: Invalid parameters", __func__);
30630 WDI_ASSERT(0);
30631 return WDI_STATUS_E_FAILURE;
30632 }
30633
30634 /*-------------------------------------------------------------------------
30635 Extract indication and send it to UMAC
30636 -------------------------------------------------------------------------*/
30637 wpalMemoryCopy(&chAvoidIndicationParam,
30638 pEventData->pEventData,
30639 sizeof(tHalAvoidFreqRangeIndParams));
30640
30641 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30642 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30643 chAvoidIndicationParam.avoidCnt;
30644 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30645 (void *)chAvoidIndicationParam.avoidRange,
30646 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30647 sizeof(WDI_ChAvoidFreqType));
30648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30649 "%s: band count %d", __func__,
30650 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30651 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30652 {
30653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30654 "%s: srart freq %d, end freq %d", __func__,
30655 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30656 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30657 }
30658
30659 /*Notify UMAC*/
30660 if (pWDICtx->wdiLowLevelIndCB)
30661 {
30662 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30663 }
30664
30665 return WDI_STATUS_SUCCESS;
30666}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030667
Leo Chang0b0e45a2013-12-15 15:18:55 -080030668#endif /* FEATURE_WLAN_CH_AVOID */
30669
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030670/**
30671 @brief Process OBSS Start scan result indication
30672
30673 @param pWDICtx: pointer to the WLAN DAL context
30674 pEventData: pointer to the event information structure
30675
30676 @see
30677 @return Result of the function call
30678*/
30679WDI_Status
30680WDI_ProcessHT40OBSSScanInd
30681(
30682 WDI_ControlBlockType* pWDICtx,
30683 WDI_EventInfoType* pEventData
30684)
30685{
30686 wpt_uint8* pSendBuffer = NULL;
30687 wpt_uint16 usDataOffset = 0;
30688 wpt_uint16 usSendSize = 0;
30689 wpt_uint16 usLen = 0;
30690 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30691 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30692 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30693 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30694
30695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30696
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030698 "%s", __func__);
30699
30700 /*-------------------------------------------------------------------------
30701 Sanity check
30702 -------------------------------------------------------------------------*/
30703 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30704 {
30705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30706 "%s: Invalid parameters", __func__);
30707 WDI_ASSERT(0);
30708 return WDI_STATUS_E_FAILURE;
30709 }
30710 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30711
30712 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30713 /*-----------------------------------------------------------------------
30714 Get message buffer
30715 -----------------------------------------------------------------------*/
30716
30717 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30718 WDI_START_HT40_OBSS_SCAN_IND,
30719 sizeof(tHT40ObssScanIndType),
30720 &pSendBuffer, &usDataOffset, &usSendSize))||
30721 ( usSendSize < (usDataOffset + usLen )))
30722 {
30723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30724 "Unable to get send buffer in HT40 OBSS Start req %p ",
30725 pEventData);
30726 WDI_ASSERT(0);
30727 return WDI_STATUS_E_FAILURE;
30728 }
30729 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30730 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30731 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30732 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30733 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30734 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30735 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30736 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30737 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30738 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30739 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30740 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30741 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30742 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30743 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30744 pHT40ObssScanInd->OBSSScanActivityThreshold =
30745 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30746 pHT40ObssScanInd->selfStaIdx =
30747 pwdiHT40OBSSScanInd->selfStaIdx;
30748 pHT40ObssScanInd->bssIdx =
30749 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030750 pHT40ObssScanInd->currentOperatingClass =
30751 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030752 pHT40ObssScanInd->fortyMHZIntolerent =
30753 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30754 pHT40ObssScanInd->channelCount =
30755 pwdiHT40OBSSScanInd->channelCount;
30756
30757 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30758 WDI_ROAM_SCAN_MAX_CHANNELS);
30759 pHT40ObssScanInd->ieFieldLen =
30760 pwdiHT40OBSSScanInd->ieFieldLen;
30761
30762 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30763 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30764 pWDICtx->pReqStatusUserData = NULL;
30765 pWDICtx->pfncRspCB = NULL;
30766
30767 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30768 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30769
30770 /*-------------------------------------------------------------------------
30771 Send OBSS Start Indication to HAL
30772 -------------------------------------------------------------------------*/
30773 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30774 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30775
30776} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30777
30778
30779/**
30780 @brief wdi_HT40OBSSScanInd
30781 This API is called to start OBSS scan
30782
30783 @param pWdiReq : pointer to get ind param
30784 @see
30785 @return SUCCESS or FAIL
30786*/
30787WDI_Status WDI_HT40OBSSScanInd
30788(
30789 WDI_HT40ObssScanParamsType *pWdiReq
30790)
30791{
30792 WDI_EventInfoType wdiEventData;
30793
30794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30795 "%s", __func__);
30796 /*-------------------------------------------------------------------------
30797 Sanity Check
30798 ------------------------------------------------------------------------*/
30799 if (eWLAN_PAL_FALSE == gWDIInitialized)
30800 {
30801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30802 "WDI API call before module is initialized - Fail request!");
30803
30804 return WDI_STATUS_E_NOT_ALLOWED;
30805 }
30806
30807 /*-------------------------------------------------------------------------
30808 Fill in Event data and post to the Main FSM
30809 ------------------------------------------------------------------------*/
30810 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30811 wdiEventData.pEventData = pWdiReq;
30812 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30813 wdiEventData.pCBfnc = NULL;
30814 wdiEventData.pUserData = NULL;
30815
30816
30817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30818}
30819
30820/**
30821 @brief Process OBSS Stop scan result
30822
30823 @param pWDICtx: pointer to the WLAN DAL context
30824 pEventData: pointer to the event information structure
30825
30826 @see
30827 @return Result of the function call
30828*/
30829WDI_Status
30830WDI_ProcessHT40OBSSStopScanInd
30831(
30832 WDI_ControlBlockType* pWDICtx,
30833 WDI_EventInfoType* pEventData
30834)
30835{
30836 wpt_uint8* pSendBuffer = NULL;
30837 wpt_uint16 usDataOffset = 0;
30838 wpt_uint16 usSendSize = 0;
30839 wpt_uint16 usLen = 0;
30840 wpt_uint8 *wdiBssIdx = 0;
30841 tANI_U8 *bssIdx = 0;
30842 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30843
30844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30845
30846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30847 "%s", __func__);
30848
30849 /*-------------------------------------------------------------------------
30850 Sanity check
30851 -------------------------------------------------------------------------*/
30852 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30853 {
30854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30855 "%s: Invalid parameters", __func__);
30856 WDI_ASSERT(0);
30857 return WDI_STATUS_E_FAILURE;
30858 }
30859 bssIdx = (wpt_uint8*)pEventData->pEventData;
30860 /*-----------------------------------------------------------------------
30861 Get message buffer
30862 -----------------------------------------------------------------------*/
30863
30864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30865 WDI_STOP_HT40_OBSS_SCAN_IND,
30866 sizeof(tANI_U8),
30867 &pSendBuffer, &usDataOffset, &usSendSize))||
30868 ( usSendSize < (usDataOffset + usLen )))
30869 {
30870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30871 "Unable to get send buffer in HT40 OBSS Start req %p ",
30872 pEventData);
30873 WDI_ASSERT(0);
30874 return WDI_STATUS_E_FAILURE;
30875 }
30876
30877 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30878 bssIdx = wdiBssIdx;
30879
30880 pWDICtx->pReqStatusUserData = NULL;
30881 pWDICtx->pfncRspCB = NULL;
30882
30883 /*-------------------------------------------------------------------------
30884 Send DHCP Start Indication to HAL
30885 -------------------------------------------------------------------------*/
30886 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30887 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30888} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30889
30890/**
30891 @brief WDI_HT40OBSSStopScanInd
30892 This API is called to start OBSS scan
30893 @param pWdiReq : pointer to get ind param
30894 @see
30895 @return SUCCESS or FAIL
30896*/
30897WDI_Status WDI_HT40OBSSStopScanInd
30898(
30899 wpt_uint8 bssIdx
30900)
30901{
30902 WDI_EventInfoType wdiEventData;
30903
30904 /*-------------------------------------------------------------------------
30905 Sanity Check
30906 ------------------------------------------------------------------------*/
30907 if (eWLAN_PAL_FALSE == gWDIInitialized)
30908 {
30909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30910 "WDI API call before module is initialized - Fail request!");
30911
30912 return WDI_STATUS_E_NOT_ALLOWED;
30913 }
30914
30915 /*-------------------------------------------------------------------------
30916 Fill in Event data and post to the Main FSM
30917 ------------------------------------------------------------------------*/
30918 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30919 wdiEventData.pEventData = &bssIdx;
30920 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30921 wdiEventData.pCBfnc = NULL;
30922 wdiEventData.pUserData = NULL;
30923
30924 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30925}
30926
c_hpothu86041002014-04-14 19:06:51 +053030927WDI_Status
30928WDI_printRegInfo
30929(
30930 WDI_ControlBlockType* pWDICtx,
30931 WDI_EventInfoType* pEventData
30932)
30933{
30934 tHalRegDebugInfo *pRegTable;
30935 tHalRegDebugInfoParams *pRegParams;
30936 uint32 cnt=0;
30937
30938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30939 "%s: ", __func__);
30940 /*-------------------------------------------------------------------------
30941 Sanity check
30942 -------------------------------------------------------------------------*/
30943 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30944 ( NULL == pEventData->pEventData))
30945 {
30946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30947 "%s: Invalid parameters", __func__);
30948 WDI_ASSERT(0);
30949 return WDI_STATUS_E_FAILURE;
30950 }
30951
30952 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30953
30954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30955 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30956 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30957
30958 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30959
30960 if (pRegParams->regCount <= 0)
30961 {
30962 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30963 "%s incorrect parameters passed", __func__);
30964 return WDI_STATUS_E_FAILURE;
30965 }
30966
30967 while(pRegParams->regCount--)
30968 {
30969 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30970 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30971 cnt++;
30972 }
30973
30974 return WDI_STATUS_SUCCESS;
30975}
c_hpothu92367912014-05-01 15:18:17 +053030976
30977/*
Abhishek Singh66c16762014-08-14 19:13:19 +053030978 * FUNCTION: WDI_delBaInd
30979 * send the delBA to peer.
30980 */
30981
30982WDI_Status
30983WDI_delBaInd
30984(
30985 WDI_ControlBlockType* pWDICtx,
30986 WDI_EventInfoType* pEventData
30987
30988)
30989{
30990 tHalWlanDelBaIndMsg halDelBaInd;
30991 WDI_LowLevelIndType wdiInd;
30992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30993
30994 /*-------------------------------------------------------------------------
30995 Sanity check
30996 -------------------------------------------------------------------------*/
30997 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30998 ( NULL == pEventData->pEventData))
30999 {
31000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31001 "%s: Invalid parameters", __func__);
31002 WDI_ASSERT(0);
31003 return WDI_STATUS_E_FAILURE;
31004 }
31005
31006 /*-------------------------------------------------------------------------
31007 Extract indication and send it to UMAC
31008 -------------------------------------------------------------------------*/
31009
31010 /* Parameters need to be unpacked according to HAL struct*/
31011 wpalMemoryCopy( &halDelBaInd,
31012 pEventData->pEventData,
31013 sizeof(halDelBaInd));
31014
31015 /*Fill in the indication parameters*/
31016 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31017
31018 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31019 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31020 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31021
31022 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31023 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31024 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31025
31026 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31027 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31028 if ( pWDICtx->wdiLowLevelIndCB )
31029 {
31030 /*Notify UMAC*/
31031 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31032 }
31033
31034 return WDI_STATUS_SUCCESS;
31035
31036
31037}
31038
31039/*
c_hpothu92367912014-05-01 15:18:17 +053031040 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31041 * send the response to PE with beacon miss count
31042 * received from WDI.
31043 */
31044WDI_Status
31045WDI_ProcessGetBcnMissRateRsp
31046(
31047 WDI_ControlBlockType* pWDICtx,
31048 WDI_EventInfoType* pEventData
31049)
31050{
31051 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31052 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31053
31054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31055 "In %s",__func__);
31056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31057
31058 /*-------------------------------------------------------------------------
31059 Sanity check
31060 -------------------------------------------------------------------------*/
31061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31062 ( NULL == pEventData->pEventData))
31063 {
31064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31065 "%s: Invalid parameters", __func__);
31066 WDI_ASSERT(0);
31067 return WDI_STATUS_E_FAILURE;
31068 }
31069
31070 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31071 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31072
31073 /*Notify UMAC*/
31074 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31075 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31076 return WDI_STATUS_SUCCESS;
31077}
31078
31079/*
31080 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31081 * Request to WDI to get missed beacon rate.
31082 */
31083WDI_Status
31084WDI_ProcessGetBcnMissRateReq
31085(
31086 WDI_ControlBlockType* pWDICtx,
31087 WDI_EventInfoType* pEventData
31088)
31089{
31090 wpt_uint8* pSendBuffer = NULL;
31091 wpt_uint16 usDataOffset = 0;
31092 wpt_uint16 usSendSize = 0;
31093 wpt_uint8 ucCurrentBSSSesIdx = 0;
31094 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031095 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31096 tHalBcnMissRateReqParams halBcnMissRateReq;
31097
31098/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31099
31100 /*-------------------------------------------------------------------------
31101 Sanity check
31102 -------------------------------------------------------------------------*/
31103 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31104 ( NULL == pEventData->pCBfnc ) )
31105 {
31106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31107 "%s: Invalid parameters", __func__);
31108 WDI_ASSERT(0);
31109 return WDI_STATUS_E_FAILURE;
31110 }
31111
31112 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31113
31114 wpalMutexAcquire(&pWDICtx->wptMutex);
31115
31116 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31117 pEventData->pEventData, &pBSSSes);
31118 if ( NULL == pBSSSes )
31119 {
31120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31121 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031122 MAC_ADDRESS_STR, __func__,
31123 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031124 wpalMutexRelease(&pWDICtx->wptMutex);
31125 return WDI_STATUS_E_NOT_ALLOWED;
31126 }
31127 wpalMutexRelease(&pWDICtx->wptMutex);
31128
31129 /*-----------------------------------------------------------------------
31130 Get message buffer
31131 -----------------------------------------------------------------------*/
31132 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31133 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31134 sizeof(tHalBcnMissRateReqParams),
31135 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31136 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31137 {
31138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31139 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31140 pEventData);
31141 WDI_ASSERT(0);
31142 return WDI_STATUS_E_FAILURE;
31143 }
31144
31145 pWDICtx->wdiReqStatusCB = NULL;
31146 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31147
31148 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31149
31150 wpalMemoryCopy( pSendBuffer+usDataOffset,
31151 &halBcnMissRateReq,
31152 sizeof(tHalBcnMissRateReqParams));
31153 /*-------------------------------------------------------------------------
31154 Send Get STA Request to HAL
31155 -------------------------------------------------------------------------*/
31156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31157 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31158}
31159
31160/**
31161 @brief WDI_GetBcnMissRate
31162
31163 @param pUserData: user data will be passed back with the
31164 callback
31165 WDI_GetBcnMissRateCb: callback for passing back the response
31166 of the get stats operation received from the device
31167 bssid: bssid, to send bssIdx to FW
31168
31169 @return SUCCESS or FAIL
31170*/
31171WDI_Status WDI_GetBcnMissRate( void *pUserData,
31172 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31173 tANI_U8 *bssid )
31174{
31175 WDI_EventInfoType wdiEventData;
31176
31177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31178
31179 /*------------------------------------------------------------------------
31180 Sanity Check
31181 ------------------------------------------------------------------------*/
31182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31183 {
31184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31185 "WDI API call before module is initialized - Fail request");
31186
31187 return WDI_STATUS_E_NOT_ALLOWED;
31188 }
31189
31190 /*------------------------------------------------------------------------
31191 Fill in Event data and post to the Main FSM
31192 ------------------------------------------------------------------------*/
31193 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31194 wdiEventData.pEventData = bssid;
31195 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31196 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31197 wdiEventData.pUserData = pUserData;
31198
31199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31200}
Abhishek Singh85b74712014-10-08 11:38:19 +053031201
31202/*
31203 * FUNCTION: WDI_ProcessGetFwStatsRsp
31204 * send the response with FW stats asked.
31205 */
31206WDI_Status
31207 WDI_ProcessGetFwStatsRsp
31208(
31209 WDI_ControlBlockType* pWDICtx,
31210 WDI_EventInfoType* pEventData
31211)
31212{
31213 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31214 tpHalfwStatsRspParams pHalFwstatsRsp;
31215 WDI_FWStatsResults fwStats;
31216
31217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31218
31219 /*-------------------------------------------------------------------------
31220 Sanity check
31221 -------------------------------------------------------------------------*/
31222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31223 ( NULL == pEventData->pEventData))
31224 {
31225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31226 "%s: Invalid parameters", __func__);
31227 WDI_ASSERT(0);
31228 return WDI_STATUS_E_FAILURE;
31229 }
31230 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31231 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31232
31233 if(pHalFwstatsRsp->length)
31234 {
31235 switch( pHalFwstatsRsp->type )
31236 {
31237 case FW_UBSP_STATS:
31238 {
31239 ubspFwStats *ubspStatsfromFw;
31240
31241 fwStats.type = pHalFwstatsRsp->type;
31242 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31243 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31244 ubspStatsfromFw->ubsp_enter_cnt;
31245 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31246 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31247 }
31248 break;
31249 default:
31250 {
31251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31252 "%s: No handling for stats type %d", __func__,
31253 pHalFwstatsRsp->type);
31254 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31255 NULL, pWDICtx->pRspCBUserData);
31256 return WDI_STATUS_E_FAILURE;
31257 }
31258 }
31259 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31260 }
31261 else
31262 {
31263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31264 "%s: Length = 0 for type %d return failure ", __func__,
31265 pHalFwstatsRsp->type);
31266 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31267 NULL, pWDICtx->pRspCBUserData);
31268 return WDI_STATUS_E_FAILURE;
31269 }
31270 return WDI_STATUS_SUCCESS;
31271}
31272
31273/*
31274 * FUNCTION: WDI_ProcessGetFwStatsReq
31275 * Request to WDI to get FW Stats.
31276 */
31277WDI_Status
31278 WDI_ProcessGetFwStatsReq
31279(
31280 WDI_ControlBlockType* pWDICtx,
31281 WDI_EventInfoType* pEventData
31282)
31283{
31284 wpt_uint8* pSendBuffer = NULL;
31285 wpt_uint16 usDataOffset = 0;
31286 wpt_uint16 usSendSize = 0;
31287 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31288 tHalfwStatsReqParams halFwStatsReq;
31289
31290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31291
31292 /*-------------------------------------------------------------------------
31293 Sanity check
31294 -------------------------------------------------------------------------*/
31295 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31296 ( NULL == pEventData->pCBfnc ) )
31297 {
31298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31299 "%s: Invalid parameters", __func__);
31300 WDI_ASSERT(0);
31301 return WDI_STATUS_E_FAILURE;
31302 }
31303
31304 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31305
31306 /*-----------------------------------------------------------------------
31307 Get message buffer
31308 -----------------------------------------------------------------------*/
31309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31310 pWDICtx, WDI_GET_FW_STATS_REQ,
31311 sizeof(tHalfwStatsReqParams),
31312 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31313 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31314 {
31315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31316 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31317 pEventData);
31318 WDI_ASSERT(0);
31319 return WDI_STATUS_E_FAILURE;
31320 }
31321
31322 pWDICtx->wdiReqStatusCB = NULL;
31323 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31324 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31325 wpalMemoryCopy( pSendBuffer+usDataOffset,
31326 &halFwStatsReq,
31327 sizeof(tHalfwStatsReqParams));
31328 /*-------------------------------------------------------------------------
31329 Send Get STA Request to HAL
31330 -------------------------------------------------------------------------*/
31331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31332 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31333}
31334
Sunil Duttbd736ed2014-05-26 21:19:41 +053031335#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31336
31337/**
31338 @brief WDI_LLStatsSetReq
31339 This API is called to set link layer stats request in FW
31340
31341 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31342 wdiLLStatsSetRspCb : set link layer stats resp callback
31343 usrData : Client context
31344 @see
31345 @return SUCCESS or FAIL
31346*/
31347WDI_Status
31348WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31349 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31350 void* pUserData)
31351{
31352 WDI_EventInfoType wdiEventData;
31353
31354 /*------------------------------------------------------------------------
31355 Sanity Check
31356 ------------------------------------------------------------------------*/
31357 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31358 {
31359 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31360 "WDI API call before module is initialized - Fail request");
31361
31362 return WDI_STATUS_E_NOT_ALLOWED;
31363 }
31364
31365 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31366 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31367 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31368 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31369 wdiEventData.pUserData = pUserData;
31370
31371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31372}
31373
31374/**
31375 @brief WDI_ProcessLLStatsSetReq -
31376 Set Link Layer Stats request to FW
31377
31378 @param pWDICtx : wdi context
31379 pEventData : indication data
31380
31381 @see
31382 @return none
31383*/
31384WDI_Status
31385WDI_ProcessLLStatsSetReq
31386(
31387 WDI_ControlBlockType* pWDICtx,
31388 WDI_EventInfoType* pEventData
31389)
31390{
31391 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31392 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31393 wpt_uint8* pSendBuffer = NULL;
31394 wpt_uint16 usSendSize = 0;
31395 wpt_uint16 usDataOffset = 0;
31396 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31397
31398 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31399 ( NULL == pEventData->pCBfnc ))
31400 {
31401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31402 "%s: Invalid parameters", __func__);
31403 WDI_ASSERT(0);
31404 return WDI_STATUS_E_FAILURE;
31405 }
31406
31407 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31408 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31409
31410 /*-----------------------------------------------------------------------
31411 Get message buffer
31412 ! TO DO : proper conversion into the HAL Message Request Format
31413 -----------------------------------------------------------------------*/
31414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31415 pWDICtx,
31416 WDI_LL_STATS_SET_REQ,
31417 sizeof(tHalMacLlSetStatsReqParams),
31418 &pSendBuffer, &usDataOffset,
31419 &usSendSize))||
31420 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31421 {
31422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31423 "Unable to get send buffer in %s %p %p %p", __func__,
31424 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31425 WDI_ASSERT(0);
31426 return WDI_STATUS_E_FAILURE;
31427 }
31428
31429
Dino Mycled3d50022014-07-07 12:58:25 +053031430 /* Need to fill in the self STA Index */
31431 if ( WDI_STATUS_SUCCESS !=
31432 WDI_STATableFindStaidByAddr(pWDICtx,
31433 pwdiLLStatsSetReqParams->macAddr,
31434 &halLLStatsSetParams.sta_id))
31435 {
31436 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31437 MAC_ADDRESS_STR
31438 ": This station does not exist in the WDI Station Table",
31439 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31440
31441 wpalMemoryFree(pSendBuffer);
31442 return WDI_STATUS_E_FAILURE;
31443 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031444
31445 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031446 halLLStatsSetParams.mpdu_size_threshold =
31447 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31448 halLLStatsSetParams.aggressive_statistics_gathering =
31449 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31450
31451 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31452 " halLLStatsSetParams.req_id = %u",
31453 halLLStatsSetParams.req_id);
31454 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31455 " halLLStatsSetParams.sta_id = %u",
31456 halLLStatsSetParams.sta_id);
31457 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31458 " halLLStatsSetParams.mpdu_size_threshold = %u",
31459 halLLStatsSetParams.mpdu_size_threshold);
31460 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31461 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31462 halLLStatsSetParams.aggressive_statistics_gathering);
31463
31464 wpalMemoryCopy(pSendBuffer+usDataOffset,
31465 &halLLStatsSetParams,
31466 sizeof(halLLStatsSetParams));
31467
31468 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31469
31470 /*-------------------------------------------------------------------------
31471 Send Clear Link Layer Stats Request to HAL
31472 -------------------------------------------------------------------------*/
31473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31474 wdiLLStatsSetCb, pEventData->pUserData,
31475 WDI_LL_STATS_SET_RSP);
31476}
31477
31478/**
31479 @brief WDI_LLStatsGetReq
31480 This API is called to get link layer stats request in FW
31481
31482 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31483 wdiLLStatsGetRspCb : get link layer stats resp callback
31484 usrData : Client context
31485 @see
31486 @return SUCCESS or FAIL
31487*/
31488WDI_Status
31489WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31490 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31491 void* pUserData)
31492{
31493 WDI_EventInfoType wdiEventData;
31494
31495 /*------------------------------------------------------------------------
31496 Sanity Check
31497 ------------------------------------------------------------------------*/
31498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31499 {
31500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31501 "WDI API call before module is initialized - Fail request");
31502
31503 return WDI_STATUS_E_NOT_ALLOWED;
31504 }
31505
31506 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31507 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31508 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31509 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31510 wdiEventData.pUserData = pUserData;
31511
31512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31513}
31514
31515/**
31516 @brief WDI_ProcessLLStatsGetReq -
31517 Get Link Layer Stats request to FW
31518
31519 @param pWDICtx : wdi context
31520 pEventData : indication data
31521
31522 @see
31523 @return none
31524*/
31525WDI_Status
31526WDI_ProcessLLStatsGetReq
31527(
31528 WDI_ControlBlockType* pWDICtx,
31529 WDI_EventInfoType* pEventData
31530)
31531{
31532 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31533 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31534 wpt_uint8* pSendBuffer = NULL;
31535 wpt_uint16 usSendSize = 0;
31536 wpt_uint16 usDataOffset = 0;
31537 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31538
31539 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31540 ( NULL == pEventData->pCBfnc ))
31541 {
31542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31543 "%s: Invalid parameters", __func__);
31544 WDI_ASSERT(0);
31545 return WDI_STATUS_E_FAILURE;
31546 }
31547
31548 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31549 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31550
31551 /*-----------------------------------------------------------------------
31552 Get message buffer
31553 ! TO DO : proper conversion into the HAL Message Request Format
31554 -----------------------------------------------------------------------*/
31555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31556 pWDICtx,
31557 WDI_LL_STATS_GET_REQ,
31558 sizeof(tHalMacLlGetStatsReqParams),
31559 &pSendBuffer, &usDataOffset,
31560 &usSendSize))||
31561 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31562 {
31563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31564 "Unable to get send buffer in %s %p %p %p", __func__,
31565 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31566 WDI_ASSERT(0);
31567 return WDI_STATUS_E_FAILURE;
31568 }
Dino Mycled3d50022014-07-07 12:58:25 +053031569 /* Need to fill in the self STA Index */
31570 if ( WDI_STATUS_SUCCESS !=
31571 WDI_STATableFindStaidByAddr(pWDICtx,
31572 pwdiLLStatsGetReqParams->macAddr,
31573 &halLLStatsGetParams.sta_id))
31574 {
31575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31576 MAC_ADDRESS_STR
31577 ": This station does not exist in the WDI Station Table",
31578 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31579
31580 wpalMemoryFree(pSendBuffer);
31581 return WDI_STATUS_E_FAILURE;
31582 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031583
31584 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031585 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31586
31587 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31588 " halLLStatsGetParams.req_id = %u",
31589 halLLStatsGetParams.req_id);
31590 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31591 " halLLStatsGetParams.staId = %u",
31592 halLLStatsGetParams.sta_id);
31593 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31594 " halLLStatsGetParams.Mask = %u",
31595 halLLStatsGetParams.param_id_mask);
31596
31597 wpalMemoryCopy(pSendBuffer+usDataOffset,
31598 &halLLStatsGetParams,
31599 sizeof(halLLStatsGetParams));
31600
31601 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31602
31603 /*-------------------------------------------------------------------------
31604 Send Clear Link Layer Stats Request to HAL
31605 -------------------------------------------------------------------------*/
31606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31607 wdiLLStatsGetCb, pEventData->pUserData,
31608 WDI_LL_STATS_GET_RSP);
31609}
31610
31611/**
31612 @brief WDI_LLStatsClearReq
31613 This API is called to clear link layer stats request in FW
31614
31615 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31616 wdiLLStatsSetRspCb : clear link layer stats resp callback
31617 usrData : Client context
31618 @see
31619 @return SUCCESS or FAIL
31620*/
31621WDI_Status
31622WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31623 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31624 void* pUserData)
31625{
31626 WDI_EventInfoType wdiEventData;
31627
31628 /*------------------------------------------------------------------------
31629 Sanity Check
31630 ------------------------------------------------------------------------*/
31631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31632 {
31633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31634 "WDI API call before module is initialized - Fail request");
31635
31636 return WDI_STATUS_E_NOT_ALLOWED;
31637 }
31638
31639 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31640 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31641 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31642 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31643 wdiEventData.pUserData = pUserData;
31644
31645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31646 "%s:%d Enter", __func__, __LINE__);
31647
31648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31649}
31650
31651/**
31652 @brief WDI_ProcessLLStatsClearReq -
31653 Clear Link Layer Stats request to FW
31654
31655 @param pWDICtx : wdi context
31656 pEventData : indication data
31657
31658 @see
31659 @return none
31660*/
31661WDI_Status
31662WDI_ProcessLLStatsClearReq
31663(
31664 WDI_ControlBlockType* pWDICtx,
31665 WDI_EventInfoType* pEventData
31666)
31667{
31668 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31669 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31670 wpt_uint8* pSendBuffer = NULL;
31671 wpt_uint16 usSendSize = 0;
31672 wpt_uint16 usDataOffset = 0;
31673 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31674
31675 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31676 ( NULL == pEventData->pCBfnc ))
31677 {
31678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31679 "%s: Invalid parameters", __func__);
31680 WDI_ASSERT(0);
31681 return WDI_STATUS_E_FAILURE;
31682 }
31683
31684 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31685 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31686
31687 /*-----------------------------------------------------------------------
31688 Get message buffer
31689 ! TO DO : proper conversion into the HAL Message Request Format
31690 -----------------------------------------------------------------------*/
31691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31692 pWDICtx,
31693 WDI_LL_STATS_CLEAR_REQ,
31694 sizeof(tHalMacLlClearStatsReqParams),
31695 &pSendBuffer, &usDataOffset,
31696 &usSendSize))||
31697 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31698 {
31699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31700 "Unable to get send buffer in %s %p %p %p", __func__,
31701 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31702 WDI_ASSERT(0);
31703 return WDI_STATUS_E_FAILURE;
31704 }
Dino Mycled3d50022014-07-07 12:58:25 +053031705 /* Need to fill in the self STA Index */
31706 if ( WDI_STATUS_SUCCESS !=
31707 WDI_STATableFindStaidByAddr(pWDICtx,
31708 pwdiLLStatsClearReqParams->macAddr,
31709 &halLLStatsClearParams.sta_id))
31710 {
31711 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31712 MAC_ADDRESS_STR
31713 ": This station does not exist in the WDI Station Table",
31714 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31715
31716 wpalMemoryFree(pSendBuffer);
31717 return WDI_STATUS_E_FAILURE;
31718 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031719
31720 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031721 halLLStatsClearParams.stats_clear_req_mask =
31722 pwdiLLStatsClearReqParams->statsClearReqMask;
31723 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31724
31725 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31726 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31727 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31728 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31729 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31730 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31731 halLLStatsClearParams.stats_clear_req_mask);
31732 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31733 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31734
31735 wpalMemoryCopy(pSendBuffer+usDataOffset,
31736 &halLLStatsClearParams,
31737 sizeof(halLLStatsClearParams));
31738
31739 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31740
31741 /*-------------------------------------------------------------------------
31742 Send Clear Link Layer Stats Request to HAL
31743 -------------------------------------------------------------------------*/
31744 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31745 wdiLLStatsClearCb, pEventData->pUserData,
31746 WDI_LL_STATS_CLEAR_RSP);
31747}
31748#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031749
Abhishek Singh85b74712014-10-08 11:38:19 +053031750WDI_Status WDI_FWStatsGetReq( void* pUserData,
31751 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31752 wpt_uint32 stats)
31753{
31754 WDI_EventInfoType wdiEventData;
31755
31756 /*------------------------------------------------------------------------
31757 Sanity Check
31758 ------------------------------------------------------------------------*/
31759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31760 {
31761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31762 "WDI API call before module is initialized - Fail request");
31763 return WDI_STATUS_E_NOT_ALLOWED;
31764 }
31765 /*------------------------------------------------------------------------
31766 Fill in Event data and post to the Main FSM
31767 ------------------------------------------------------------------------*/
31768 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31769 wdiEventData.pEventData = (void *)&stats;
31770 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31771 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31772 wdiEventData.pUserData = pUserData;
31773
31774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31775
31776}
31777
Dino Mycle41bdc942014-06-10 11:30:24 +053031778#ifdef WLAN_FEATURE_EXTSCAN
31779
31780/**
31781 @brief Process EXTSCAN BUffer full indication from FW
31782
31783 @param pWDICtx: pointer to the WLAN DAL context
31784 pEventData: pointer to the event information structure
31785
31786 @see
31787 @return Result of the function call
31788*/
31789WDI_Status
31790WDI_ProcessEXTScanProgressInd
31791(
31792 WDI_ControlBlockType* pWDICtx,
31793 WDI_EventInfoType* pEventData
31794)
31795{
31796 WDI_LowLevelIndType wdiInd;
31797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31798
31799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31800 "%s: ", __func__);
31801
31802 /* sanity check */
31803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31804 ( NULL == pEventData->pEventData))
31805 {
31806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31807 "%s: Invalid parameters", __func__);
31808 WDI_ASSERT(0);
31809 return WDI_STATUS_E_FAILURE;
31810 }
31811
31812 /* Fill in the indication parameters */
31813 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31814
31815 /* extract response and send it to UMAC */
31816 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31817
31818 /* Notify UMAC */
31819 if (pWDICtx->wdiLowLevelIndCB)
31820 {
31821 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31822 }
31823 else
31824 {
Dino Mycled3d50022014-07-07 12:58:25 +053031825 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031826 "%s: WDILowLevelIndCb is null", __func__);
31827 WDI_ASSERT(0);
31828 return WDI_STATUS_E_FAILURE;
31829 }
31830 return WDI_STATUS_SUCCESS;
31831
31832} /* End of WDI_ProcessEXTScanProgressInd */
31833
31834
31835/**
31836 @brief Process EXTScan Scan Available indication from FW
31837
31838 @param pWDICtx: pointer to the WLAN DAL context
31839 pEventData: pointer to the event information structure
31840
31841 @see
31842 @return Result of the function call
31843*/
31844WDI_Status
31845WDI_ProcessEXTScanScanAvailableInd
31846(
31847 WDI_ControlBlockType* pWDICtx,
31848 WDI_EventInfoType* pEventData
31849)
31850{
31851 WDI_LowLevelIndType wdiInd;
31852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31853
31854 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31855 "%s: ", __func__);
31856
31857 /* sanity check */
31858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31859 ( NULL == pEventData->pEventData))
31860 {
31861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31862 "%s: Invalid parameters", __func__);
31863 WDI_ASSERT(0);
31864 return WDI_STATUS_E_FAILURE;
31865 }
31866
31867
31868
31869 /* Fill in the indication parameters */
31870 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31871
31872 /* extract response and send it to UMAC */
31873 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31874
31875 /* Notify UMAC */
31876 if (pWDICtx->wdiLowLevelIndCB)
31877 {
31878 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31879 }
31880 else
31881 {
31882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31883 "%s: WDILowLevelIndCb is null", __func__);
31884 WDI_ASSERT(0);
31885 return WDI_STATUS_E_FAILURE;
31886 }
31887 return WDI_STATUS_SUCCESS;
31888} /* End of WDI_ProcessEXTScanScanDoneInd */
31889
31890/**
31891 @brief Process EXTScan Result Indication indication from FW
31892
31893 @param pWDICtx: pointer to the WLAN DAL context
31894 pEventData: pointer to the event information structure
31895
31896 @see
31897 @return Result of the function call
31898*/
31899WDI_Status
31900WDI_ProcessEXTScanResultInd
31901(
31902 WDI_ControlBlockType* pWDICtx,
31903 WDI_EventInfoType* pEventData
31904)
31905{
31906 WDI_LowLevelIndType wdiInd;
31907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31908
31909 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31910 "%s: ", __func__);
31911
31912 /* sanity check */
31913 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31914 ( NULL == pEventData->pEventData))
31915 {
31916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31917 "%s: Invalid parameters", __func__);
31918 WDI_ASSERT(0);
31919 return WDI_STATUS_E_FAILURE;
31920 }
31921
31922 /* Fill in the indication parameters */
31923 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31924
31925 /* extract response and send it to UMAC */
31926 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31927
31928 /* Notify UMAC */
31929 if (pWDICtx->wdiLowLevelIndCB)
31930 {
31931 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31932 }
31933 else
31934 {
31935 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31936 "%s: WDILowLevelIndCb is null", __func__);
31937 WDI_ASSERT(0);
31938 return WDI_STATUS_E_FAILURE;
31939 }
31940 return WDI_STATUS_SUCCESS;
31941} /* End of WDI_ProcessEXTScanResultInd */
31942
31943/**
31944 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31945
31946 @param pWDICtx: pointer to the WLAN DAL context
31947 pEventData: pointer to the event information structure
31948
31949 @see
31950 @return Result of the function call
31951*/
31952WDI_Status
31953WDI_ProcessEXTScanBssidHotListResultInd
31954(
31955 WDI_ControlBlockType* pWDICtx,
31956 WDI_EventInfoType* pEventData
31957)
31958{
31959 WDI_LowLevelIndType wdiInd;
31960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31961
31962 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31963 "%s: ", __func__);
31964
31965 /* sanity check */
31966 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31967 ( NULL == pEventData->pEventData))
31968 {
31969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31970 "%s: Invalid parameters", __func__);
31971 WDI_ASSERT(0);
31972 return WDI_STATUS_E_FAILURE;
31973 }
31974
31975 /* Fill in the indication parameters */
31976 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31977
31978 /* extract response and send it to UMAC */
31979 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31980
31981 /* Notify UMAC */
31982 if (pWDICtx->wdiLowLevelIndCB)
31983 {
31984 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31985 }
31986 else
31987 {
31988 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31989 "%s: WDILowLevelIndCb is null", __func__);
31990 WDI_ASSERT(0);
31991 return WDI_STATUS_E_FAILURE;
31992 }
31993 return WDI_STATUS_SUCCESS;
31994} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31995
31996/**
31997 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31998
31999 @param pWDICtx: pointer to the WLAN DAL context
32000 pEventData: pointer to the event information structure
32001
32002 @see
32003 @return Result of the function call
32004*/
32005WDI_Status
32006WDI_ProcessEXTScanSignfRssiResultInd
32007(
32008 WDI_ControlBlockType* pWDICtx,
32009 WDI_EventInfoType* pEventData
32010)
32011{
32012 WDI_LowLevelIndType wdiInd;
32013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32014
32015 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32016 "%s: ", __func__);
32017
32018 /* sanity check */
32019 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32020 ( NULL == pEventData->pEventData))
32021 {
32022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32023 "%s: Invalid parameters", __func__);
32024 WDI_ASSERT(0);
32025 return WDI_STATUS_E_FAILURE;
32026 }
32027
32028 /* Fill in the indication parameters */
32029 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32030
32031 /* extract response and send it to UMAC */
32032 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32033
32034 /* Notify UMAC */
32035 if (pWDICtx->wdiLowLevelIndCB)
32036 {
32037 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32038 }
32039 else
32040 {
32041 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32042 "%s: WDILowLevelIndCb is null", __func__);
32043 WDI_ASSERT(0);
32044 return WDI_STATUS_E_FAILURE;
32045 }
32046 return WDI_STATUS_SUCCESS;
32047} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32048
32049/**
32050 @brief WDI_EXTScanGetCapabilitiesReq
32051
32052 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32053 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32054 of the Req operation received from the device
32055 pUserData: user data will be passed back with the callback
32056
32057 @return SUCCESS or FAIL
32058*/
32059WDI_Status
32060WDI_EXTScanGetCapabilitiesReq(
32061 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32062 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32063 void* pUserData)
32064{
32065 WDI_EventInfoType wdiEventData;
32066
32067 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32068 "%s: %d ",__func__, __LINE__);
32069 /*------------------------------------------------------------------------
32070 Sanity Check
32071 ------------------------------------------------------------------------*/
32072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32073 {
32074 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32075 "WDI API call before module is initialized - Fail request");
32076
32077 return WDI_STATUS_E_NOT_ALLOWED;
32078 }
32079
32080 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32081 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32082 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32083 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32084 wdiEventData.pUserData = pUserData;
32085
32086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32087}
32088
32089/**
32090 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32091 Extended Scan Get Capability request to FW
32092
32093 @param pWDICtx : wdi context
32094 pEventData : indication data
32095
32096 @see
32097 @return none
32098*/
32099WDI_Status
32100WDI_ProcessEXTScanGetCapabilitiesReq
32101(
32102 WDI_ControlBlockType* pWDICtx,
32103 WDI_EventInfoType* pEventData
32104)
32105{
32106 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32107 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32108 wpt_uint8* pSendBuffer = NULL;
32109 wpt_uint16 usSendSize = 0;
32110 wpt_uint16 usDataOffset = 0;
32111 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32112
32113 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32114 "%s: %d Enter",__func__, __LINE__);
32115
32116 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32117 ( NULL == pEventData->pCBfnc ))
32118 {
32119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32120 "%s: Invalid parameters", __func__);
32121 WDI_ASSERT(0);
32122 return WDI_STATUS_E_FAILURE;
32123 }
32124
32125 pwdiEXTScanGetCapabilitiesReqParams =
32126 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32127 wdiEXTScanGetCapabilitiesRspCb =
32128 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32129
32130 /*-----------------------------------------------------------------------
32131 Get message buffer
32132 ! TO DO : proper conversion into the HAL Message Request Format
32133 -----------------------------------------------------------------------*/
32134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32135 pWDICtx,
32136 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32137 sizeof(halEXTScanGetCapReqParams),
32138 &pSendBuffer, &usDataOffset,
32139 &usSendSize))||
32140 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32141 {
32142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32143 "Unable to get send buffer in %s %p %p %p", __func__,
32144 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32145 wdiEXTScanGetCapabilitiesRspCb);
32146 WDI_ASSERT(0);
32147 return WDI_STATUS_E_FAILURE;
32148 }
32149
32150 halEXTScanGetCapReqParams.requestId =
32151 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32152 halEXTScanGetCapReqParams.sessionId =
32153 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32154
32155 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32156 " requestId %u "
32157 " sessionId %u ",
32158 halEXTScanGetCapReqParams.requestId,
32159 halEXTScanGetCapReqParams.sessionId);
32160
32161 wpalMemoryCopy(pSendBuffer+usDataOffset,
32162 &halEXTScanGetCapReqParams,
32163 sizeof(halEXTScanGetCapReqParams));
32164
32165 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32166
32167
32168 /*-------------------------------------------------------------------------
32169 Send EXTScan Stop Request to HAL
32170 -------------------------------------------------------------------------*/
32171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32172 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32173 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32174}
32175
32176/**
32177 @brief WDI_EXTScanGetCachedResultsReq
32178
32179 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32180 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32181 of the Req operation received from the device
32182 pUserData: user data will be passed back with the callback
32183
32184 @return SUCCESS or FAIL
32185*/
32186
32187WDI_Status
32188WDI_EXTScanGetCachedResultsReq(
32189 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32190 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32191 void* pUserData)
32192{
32193 WDI_EventInfoType wdiEventData;
32194
32195 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32196 "%s: %d Enter",__func__, __LINE__);
32197 /*------------------------------------------------------------------------
32198 Sanity Check
32199 ------------------------------------------------------------------------*/
32200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32201 {
32202 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32203 "WDI API call before module is initialized - Fail request");
32204
32205 return WDI_STATUS_E_NOT_ALLOWED;
32206 }
32207
32208 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32209 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32210 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32211 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32212 wdiEventData.pUserData = pUserData;
32213
32214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32215}
32216
32217/**
32218 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32219 Extended Scan Get Cached Result request to FW
32220
32221 @param pWDICtx : wdi context
32222 pEventData : indication data
32223
32224 @see
32225 @return none
32226*/
32227WDI_Status
32228WDI_ProcessEXTScanGetCachedResultsReq
32229(
32230 WDI_ControlBlockType* pWDICtx,
32231 WDI_EventInfoType* pEventData
32232)
32233{
32234 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32235 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32236 wpt_uint8* pSendBuffer = NULL;
32237 wpt_uint16 usSendSize = 0;
32238 wpt_uint16 usDataOffset = 0;
32239 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32240
32241 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32242 "%s: %d Enter",__func__, __LINE__);
32243
32244 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32245 ( NULL == pEventData->pCBfnc ))
32246 {
32247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32248 "%s: Invalid parameters", __func__);
32249 WDI_ASSERT(0);
32250 return WDI_STATUS_E_FAILURE;
32251 }
32252
32253 pwdiEXTScanGetCachedResultsReqParams =
32254 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32255 wdiEXTScanGetCachedResultsCb =
32256 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32257
32258 /*-----------------------------------------------------------------------
32259 Get message buffer
32260 ! TO DO : proper conversion into the HAL Message Request Format
32261 -----------------------------------------------------------------------*/
32262 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32263 pWDICtx,
32264 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32265 sizeof(tHalExtScanGetScanReq),
32266 &pSendBuffer, &usDataOffset,
32267 &usSendSize))||
32268 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32269 {
32270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32271 "Unable to get send buffer in %s %p %p %p", __func__,
32272 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32273 wdiEXTScanGetCachedResultsCb);
32274 WDI_ASSERT(0);
32275 return WDI_STATUS_E_FAILURE;
32276 }
32277
32278 halEXTScanGetScanReqParams.requestId =
32279 pwdiEXTScanGetCachedResultsReqParams->requestId;
32280 halEXTScanGetScanReqParams.sessionId =
32281 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32282 halEXTScanGetScanReqParams.flush =
32283 pwdiEXTScanGetCachedResultsReqParams->flush;
32284
32285 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32286 " requestId %u "
32287 " sessionId %u "
32288 " flush %u ",
32289 halEXTScanGetScanReqParams.requestId,
32290 halEXTScanGetScanReqParams.sessionId,
32291 halEXTScanGetScanReqParams.flush);
32292
32293 wpalMemoryCopy(pSendBuffer+usDataOffset,
32294 &halEXTScanGetScanReqParams,
32295 sizeof(halEXTScanGetScanReqParams));
32296
32297 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32298
32299
32300 /*-------------------------------------------------------------------------
32301 Send EXTScan Stop Request to HAL
32302 -------------------------------------------------------------------------*/
32303 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32304 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32305 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32306}
32307
32308/**
32309 @brief WDI_EXTScanStopReq
32310
32311 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32312 WDI_EXTScanStopRspCb: callback for passing back the response
32313 of the Req operation received from the device
32314 pUserData: user data will be passed back with the callback
32315
32316 @return SUCCESS or FAIL
32317*/
32318WDI_Status
32319WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32320 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32321 void* pUserData)
32322{
32323 WDI_EventInfoType wdiEventData;
32324
32325 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32326 "%s: %d ",__func__, __LINE__);
32327 /*------------------------------------------------------------------------
32328 Sanity Check
32329 ------------------------------------------------------------------------*/
32330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32331 {
32332 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32333 "WDI API call before module is initialized - Fail request");
32334
32335 return WDI_STATUS_E_NOT_ALLOWED;
32336 }
32337
32338 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32339 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32340 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32341 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32342 wdiEventData.pUserData = pUserData;
32343
32344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32345}
32346
32347/**
32348 @brief WDI_ProcessEXTScanStopReq -
32349 Extended Scan Stop request to FW
32350
32351 @param pWDICtx : wdi context
32352 pEventData : indication data
32353
32354 @see
32355 @return none
32356*/
32357WDI_Status
32358WDI_ProcessEXTScanStopReq
32359(
32360 WDI_ControlBlockType* pWDICtx,
32361 WDI_EventInfoType* pEventData
32362)
32363{
32364 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32365 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32366 wpt_uint8* pSendBuffer = NULL;
32367 wpt_uint16 usSendSize = 0;
32368 wpt_uint16 usDataOffset = 0;
32369 tHalExtScanStopReq halEXTScanStopReqParams;
32370
32371 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32372 "%s: %d ",__func__, __LINE__);
32373
32374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32375 ( NULL == pEventData->pCBfnc ))
32376 {
32377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32378 "%s: Invalid parameters", __func__);
32379 WDI_ASSERT(0);
32380 return WDI_STATUS_E_FAILURE;
32381 }
32382
32383 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32384 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32385
32386 /*-----------------------------------------------------------------------
32387 Get message buffer
32388 ! TO DO : proper conversion into the HAL Message Request Format
32389 -----------------------------------------------------------------------*/
32390 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32391 pWDICtx,
32392 WDI_EXTSCAN_STOP_REQ,
32393 sizeof(tHalExtScanStopReq),
32394 &pSendBuffer, &usDataOffset,
32395 &usSendSize))||
32396 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32397 {
32398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32399 "Unable to get send buffer in %s %p %p %p", __func__,
32400 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32401 WDI_ASSERT(0);
32402 return WDI_STATUS_E_FAILURE;
32403 }
32404
32405 halEXTScanStopReqParams.requestId =
32406 pwdiEXTScanStopReqParams->requestId;
32407 halEXTScanStopReqParams.sessionId =
32408 pwdiEXTScanStopReqParams->sessionId;
32409
32410 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32411 " halEXTScanStopReqParams.requestId %u "
32412 " halEXTScanStopReqParams.sessionId %u ",
32413 halEXTScanStopReqParams.requestId,
32414 halEXTScanStopReqParams.sessionId);
32415
32416 wpalMemoryCopy(pSendBuffer+usDataOffset,
32417 &halEXTScanStopReqParams,
32418 sizeof(halEXTScanStopReqParams));
32419
32420 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32421
32422
32423 /*-------------------------------------------------------------------------
32424 Send EXTScan Stop Request to HAL
32425 -------------------------------------------------------------------------*/
32426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32427 wdiEXTScanStopCb, pEventData->pUserData,
32428 WDI_EXTSCAN_STOP_RSP);
32429}
32430
32431/**
32432 @brief WDI_EXTScanStartReq
32433
32434 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32435 WDI_EXTScanStartRspCb: callback for passing back the response
32436 of the Req operation received from the device
32437 pUserData: user data will be passed back with the callback
32438
32439 @return SUCCESS or FAIL
32440*/
32441WDI_Status
32442WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32443 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32444 void* pUserData)
32445{
32446 WDI_EventInfoType wdiEventData;
32447
32448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32449 "%s: %d Enter",__func__, __LINE__);
32450 /*------------------------------------------------------------------------
32451 Sanity Check
32452 ------------------------------------------------------------------------*/
32453 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32454 {
32455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32456 "WDI API call before module is initialized - Fail request");
32457
32458 return WDI_STATUS_E_NOT_ALLOWED;
32459 }
32460
32461 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32462 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32463 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32464 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32465 wdiEventData.pUserData = pUserData;
32466
32467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32468}
32469
32470/**
32471 @brief WDI_ProcessEXTScanStartReq -
32472 Extended Scan Start Request to FW
32473
32474 @param pWDICtx : wdi context
32475 pEventData : indication data
32476
32477 @see
32478 @return none
32479*/
32480WDI_Status
32481WDI_ProcessEXTScanStartReq
32482(
32483 WDI_ControlBlockType* pWDICtx,
32484 WDI_EventInfoType* pEventData
32485)
32486{
32487 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32488 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32489 wpt_uint8* pSendBuffer = NULL;
32490 wpt_uint16 usSendSize = 0;
32491 wpt_uint16 usDataOffset = 0;
32492 tpHalExtScanStartReq pHalExtScanStartReqParams;
32493 int i = 0;
32494 int j = 0;
32495
32496 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32497 "%s: %d Enter",__func__, __LINE__);
32498
32499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32500 ( NULL == pEventData->pCBfnc ))
32501 {
32502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32503 "%s: Invalid parameters", __func__);
32504 WDI_ASSERT(0);
32505 return WDI_STATUS_E_FAILURE;
32506 }
32507
32508 pwdiEXTScanStartReqParams =
32509 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32510 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32511
32512 /*-----------------------------------------------------------------------
32513 Get message buffer
32514 ! TO DO : proper conversion into the HAL Message Request Format
32515 -----------------------------------------------------------------------*/
32516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32517 pWDICtx,
32518 WDI_EXTSCAN_START_REQ,
32519 sizeof(tHalExtScanStartReq),
32520 &pSendBuffer, &usDataOffset,
32521 &usSendSize))||
32522 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32523 {
32524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32525 "Unable to get send buffer in %s %p %p %p", __func__,
32526 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32527 WDI_ASSERT(0);
32528 return WDI_STATUS_E_FAILURE;
32529 }
32530
32531 pHalExtScanStartReqParams =
32532 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32533
32534 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32535 pHalExtScanStartReqParams->maxApPerScan =
32536 pwdiEXTScanStartReqParams->maxAPperScan;
32537 pHalExtScanStartReqParams->reportThreshold =
32538 pwdiEXTScanStartReqParams->reportThreshold;
32539 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32540 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32541 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32542
32543 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32544 {
32545 pHalExtScanStartReqParams->bucketData[i].bucketId =
32546 pwdiEXTScanStartReqParams->buckets[i].bucket;
32547 pHalExtScanStartReqParams->bucketData[i].channelBand =
32548 pwdiEXTScanStartReqParams->buckets[i].band;
32549 pHalExtScanStartReqParams->bucketData[i].period =
32550 pwdiEXTScanStartReqParams->buckets[i].period;
32551 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32552 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32553 pHalExtScanStartReqParams->bucketData[i].numChannels =
32554 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32555
32556 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32557 {
32558 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32559 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32560 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32561 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32562 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32563 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32564 }
32565
32566 }
32567
32568
32569 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32570 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32571 " sessionId %u numBuckets%u ",
32572 pHalExtScanStartReqParams->basePeriod,
32573 pHalExtScanStartReqParams->maxApPerScan,
32574 pHalExtScanStartReqParams->reportThreshold,
32575 pHalExtScanStartReqParams->requestId,
32576 pHalExtScanStartReqParams->sessionId,
32577 pHalExtScanStartReqParams->numBuckets);
32578
32579 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32580 {
32581 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32582 " %d) bucketId %u channelBand %u period %u "
32583 " reportEvents %u numChannels %u ",i,
32584 pHalExtScanStartReqParams->bucketData[i].bucketId,
32585 pHalExtScanStartReqParams->bucketData[i].channelBand,
32586 pHalExtScanStartReqParams->bucketData[i].period,
32587 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32588 pHalExtScanStartReqParams->bucketData[i].numChannels);
32589
32590 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32591 {
32592 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32593 "%d) channel %u dwellTimeMs %u passive %u ",j,
32594 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32595 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32596 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32597 }
32598
32599 }
32600
Dino Mycle41bdc942014-06-10 11:30:24 +053032601 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32602
32603 /*-------------------------------------------------------------------------
32604 Send EXTSCAN Start Request to HAL
32605 -------------------------------------------------------------------------*/
32606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32607 wdiEXTScanStartCb, pEventData->pUserData,
32608 WDI_EXTSCAN_START_RSP);
32609}
32610
32611/**
32612 @brief WDI_EXTScanSetBSSIDHotlistReq
32613
32614 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32615 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32616 of the Req operation received from the device
32617 pUserData: user data will be passed back with the callback
32618
32619 @return SUCCESS or FAIL
32620*/
32621WDI_Status
32622WDI_EXTScanSetBSSIDHotlistReq(
32623 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32624 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32625 void* pUserData)
32626{
32627 WDI_EventInfoType wdiEventData;
32628
32629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32630 "%s: %d Enter ",__func__, __LINE__);
32631 /*------------------------------------------------------------------------
32632 Sanity Check
32633 ------------------------------------------------------------------------*/
32634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32635 {
32636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32637 "WDI API call before module is initialized - Fail request");
32638
32639 return WDI_STATUS_E_NOT_ALLOWED;
32640 }
32641
32642 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32643 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32644 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32645 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32646 wdiEventData.pUserData = pUserData;
32647
32648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32649}
32650
32651/**
32652 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32653 Extended Scan Set BSSSID Hotlist Request to FW
32654
32655 @param pWDICtx : wdi context
32656 pEventData : indication data
32657
32658 @see
32659 @return none
32660*/
32661WDI_Status
32662WDI_ProcessEXTScanSetBSSIDHotlistReq
32663(
32664 WDI_ControlBlockType* pWDICtx,
32665 WDI_EventInfoType* pEventData
32666)
32667{
32668 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32669 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32670 wpt_uint8* pSendBuffer = NULL;
32671 wpt_uint16 usSendSize = 0;
32672 wpt_uint16 usDataOffset = 0;
32673 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32674 int i;
32675
32676 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32677 "%s: %d Enter",__func__, __LINE__);
32678
32679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32680 ( NULL == pEventData->pCBfnc ))
32681 {
32682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32683 "%s: Invalid parameters", __func__);
32684 WDI_ASSERT(0);
32685 return WDI_STATUS_E_FAILURE;
32686 }
32687
32688 pwdiEXTScanSetBSSIDHotlistReqParams =
32689 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32690 wdiEXTScanSetBSSIDHotlistRspCb =
32691 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32692
32693 /*-----------------------------------------------------------------------
32694 Get message buffer
32695 ! TO DO : proper conversion into the HAL Message Request Format
32696 -----------------------------------------------------------------------*/
32697 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32698 pWDICtx,
32699 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32700 sizeof(tHalBssidHotlistSetReq),
32701 &pSendBuffer, &usDataOffset,
32702 &usSendSize))||
32703 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32704 {
32705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32706 "Unable to get send buffer in %s %p %p %p", __func__,
32707 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32708 wdiEXTScanSetBSSIDHotlistRspCb);
32709 WDI_ASSERT(0);
32710 return WDI_STATUS_E_FAILURE;
32711 }
32712 pHalBssidHotlistSetReqParams =
32713 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32714
32715 pHalBssidHotlistSetReqParams->requestId =
32716 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32717
32718 pHalBssidHotlistSetReqParams->sessionId =
32719 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32720
32721 pHalBssidHotlistSetReqParams->numAp =
32722 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32723
32724 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32725
32726 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32727 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32728 WDI_MAC_ADDR_LEN);
32729
32730 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32731 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32732
32733 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32734 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32735
32736 pHalBssidHotlistSetReqParams->ap[i].channel =
32737 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32738
32739 }
32740
32741 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32742 "ReqID %u sessionId %u numAp %u ",
32743 pHalBssidHotlistSetReqParams->requestId,
32744 pHalBssidHotlistSetReqParams->sessionId,
32745 pHalBssidHotlistSetReqParams->numAp);
32746
32747 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32748
32749 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32750 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32751 __func__, __LINE__, i,
32752 pHalBssidHotlistSetReqParams->ap[i].bssid,
32753 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32754 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32755 pHalBssidHotlistSetReqParams->ap[i].channel);
32756
32757 }
32758
32759 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32760
32761
32762 /*-------------------------------------------------------------------------
32763 Send EXTScan Stop Request to HAL
32764 -------------------------------------------------------------------------*/
32765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32766 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32767 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32768}
32769
32770/**
32771 @brief WDI_EXTScanResetBSSIDHotlistReq
32772
32773 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32774 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32775 of the Req operation received from the device
32776 pUserData: user data will be passed back with the callback
32777
32778 @return SUCCESS or FAIL
32779*/
32780WDI_Status
32781WDI_EXTScanResetBSSIDHotlistReq(
32782 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32783 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32784 void* pUserData)
32785{
32786 WDI_EventInfoType wdiEventData;
32787
32788 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32789 "%s: %d",__func__, __LINE__);
32790 /*------------------------------------------------------------------------
32791 Sanity Check
32792 ------------------------------------------------------------------------*/
32793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32794 {
32795 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32796 "WDI API call before module is initialized - Fail request");
32797
32798 return WDI_STATUS_E_NOT_ALLOWED;
32799 }
32800
32801 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32802 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32803 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32804 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32805 wdiEventData.pUserData = pUserData;
32806
32807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32808}
32809
32810/**
32811 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32812 Extended Scan reset BSSID hotlist Request to FW
32813
32814 @param pWDICtx : wdi context
32815 pEventData : indication data
32816
32817 @see
32818 @return none
32819*/
32820WDI_Status
32821WDI_ProcessEXTScanResetBSSIDHotlistReq
32822(
32823 WDI_ControlBlockType* pWDICtx,
32824 WDI_EventInfoType* pEventData
32825)
32826{
32827 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32828 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32829 wpt_uint8* pSendBuffer = NULL;
32830 wpt_uint16 usSendSize = 0;
32831 wpt_uint16 usDataOffset = 0;
32832 tpHalHotlistResetReq pHalHotlistResetReqParams;
32833
32834 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32835 "%s: %d",__func__, __LINE__);
32836
32837 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32838 ( NULL == pEventData->pCBfnc ))
32839 {
32840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32841 "%s: Invalid parameters", __func__);
32842 WDI_ASSERT(0);
32843 return WDI_STATUS_E_FAILURE;
32844 }
32845
32846 pwdiEXTScanResetBSSIDHotlistReqParams =
32847 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32848 wdiEXTScanResetBSSIDHotlistRspCb =
32849 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32850
32851 /*-----------------------------------------------------------------------
32852 Get message buffer
32853 ! TO DO : proper conversion into the HAL Message Request Format
32854 -----------------------------------------------------------------------*/
32855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32856 pWDICtx,
32857 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32858 sizeof(tHalHotlistResetReq),
32859 &pSendBuffer, &usDataOffset,
32860 &usSendSize))||
32861 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32862 {
32863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32864 "Unable to get send buffer in %s %p %p %p", __func__,
32865 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32866 wdiEXTScanResetBSSIDHotlistRspCb);
32867 WDI_ASSERT(0);
32868 return WDI_STATUS_E_FAILURE;
32869 }
32870 pHalHotlistResetReqParams =
32871 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32872
32873 pHalHotlistResetReqParams->requestId =
32874 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32875
32876 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32877
32878 /*-------------------------------------------------------------------------
32879 Send EXTScan Stop Request to HAL
32880 -------------------------------------------------------------------------*/
32881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32882 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32883 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32884}
32885
32886/**
32887 @brief WDI_EXTScanSetSignfRSSIChangeReq
32888
32889 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32890 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32891 of the Req operation received from the device
32892 pUserData: user data will be passed back with the callback
32893
32894 @return SUCCESS or FAIL
32895*/
32896WDI_Status
32897WDI_EXTScanSetSignfRSSIChangeReq(
32898 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32899 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32900 void* pUserData)
32901{
32902 WDI_EventInfoType wdiEventData;
32903
32904 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32905 "%s: %d ",__func__, __LINE__);
32906 /*------------------------------------------------------------------------
32907 Sanity Check
32908 ------------------------------------------------------------------------*/
32909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32910 {
32911 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32912 "WDI API call before module is initialized - Fail request");
32913
32914 return WDI_STATUS_E_NOT_ALLOWED;
32915 }
32916
32917 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32918 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32919 wdiEventData.uEventDataSize =
32920 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32921 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32922 wdiEventData.pUserData = pUserData;
32923
32924 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32925}
32926
32927/**
32928 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32929 Extended Scan set Significant RSSI change Request to FW
32930
32931 @param pWDICtx : wdi context
32932 pEventData : indication data
32933
32934 @see
32935 @return none
32936*/
32937WDI_Status
32938WDI_ProcessEXTScanSetSignifRSSIChangeReq
32939(
32940 WDI_ControlBlockType* pWDICtx,
32941 WDI_EventInfoType* pEventData
32942)
32943{
32944 WDI_EXTScanSetSignfRSSIChangeReqParams*
32945 pwdiEXTScanSetSignfRSSIChangeReqParams;
32946 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32947 wpt_uint8* pSendBuffer = NULL;
32948 wpt_uint16 usSendSize = 0;
32949 wpt_uint16 usDataOffset = 0;
32950 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32951 int i;
32952
32953 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32954 "%s: %d Enter",__func__, __LINE__);
32955
32956 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32957 ( NULL == pEventData->pCBfnc ))
32958 {
32959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32960 "%s: Invalid parameters", __func__);
32961 WDI_ASSERT(0);
32962 return WDI_STATUS_E_FAILURE;
32963 }
32964
32965 pwdiEXTScanSetSignfRSSIChangeReqParams =
32966 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32967 wdiEXTScanSetSignfRSSIChangeRspCb =
32968 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32969
32970 /*-----------------------------------------------------------------------
32971 Get message buffer
32972 ! TO DO : proper conversion into the HAL Message Request Format
32973 -----------------------------------------------------------------------*/
32974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32975 pWDICtx,
32976 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32977 sizeof(tHalSigRssiSetReq),
32978 &pSendBuffer, &usDataOffset,
32979 &usSendSize))||
32980 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32981 {
32982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32983 "Unable to get send buffer in %s %p %p %p", __func__,
32984 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32985 wdiEXTScanSetSignfRSSIChangeRspCb);
32986 WDI_ASSERT(0);
32987 return WDI_STATUS_E_FAILURE;
32988 }
32989
32990 pHalSigRssiSetReqParams =
32991 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32992
32993 pHalSigRssiSetReqParams->requestId =
32994 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32995 pHalSigRssiSetReqParams->sessionId =
32996 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32997 pHalSigRssiSetReqParams->rssiSampleSize =
32998 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32999 pHalSigRssiSetReqParams->lostApSampleSize =
33000 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33001 pHalSigRssiSetReqParams->minBreaching =
33002 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33003 pHalSigRssiSetReqParams->numAp =
33004 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33005
33006
33007 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33008
33009 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33010 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33011 WDI_MAC_ADDR_LEN);
33012
33013 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33014 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33015
33016 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33017 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33018
33019 pHalSigRssiSetReqParams->ap[i].channel =
33020 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33021
33022 }
33023
33024
33025 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33026 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33027 " minBreaching %u numAp %u ",
33028 pHalSigRssiSetReqParams->requestId,
33029 pHalSigRssiSetReqParams->sessionId,
33030 pHalSigRssiSetReqParams->rssiSampleSize,
33031 pHalSigRssiSetReqParams->lostApSampleSize,
33032 pHalSigRssiSetReqParams->minBreaching,
33033 pHalSigRssiSetReqParams->numAp);
33034
33035 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33036
33037 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33038 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33039 i,
33040 pHalSigRssiSetReqParams->ap[i].bssid,
33041 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33042 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33043 pHalSigRssiSetReqParams->ap[i].channel);
33044
33045 }
33046
33047 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33048
33049
33050 /*-------------------------------------------------------------------------
33051 Send EXTScan Stop Request to HAL
33052 -------------------------------------------------------------------------*/
33053 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33054 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33055 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33056}
33057
33058/**
33059 @brief WDI_EXTScanResetSignfRSSIChangeReq
33060
33061 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33062 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33063 of the Req operation received from the device
33064 pUserData: user data will be passed back with the callback
33065
33066 @return SUCCESS or FAIL
33067*/
33068WDI_Status
33069WDI_EXTScanResetSignfRSSIChangeReq(
33070 WDI_EXTScanResetSignfRSSIChangeReqParams*
33071 pwdiEXTScanResetSignfRSSIChangeReqParams,
33072 WDI_EXTScanResetSignfRSSIChangeRspCb
33073 wdiEXTScanResetSignfRSSIChangeRspCb,
33074 void* pUserData)
33075{
33076 WDI_EventInfoType wdiEventData;
33077
33078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33079 "%s: %d ",__func__, __LINE__);
33080 /*------------------------------------------------------------------------
33081 Sanity Check
33082 ------------------------------------------------------------------------*/
33083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33084 {
33085 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33086 "WDI API call before module is initialized - Fail request");
33087
33088 return WDI_STATUS_E_NOT_ALLOWED;
33089 }
33090
33091 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33092 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33093 wdiEventData.uEventDataSize =
33094 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33095 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33096 wdiEventData.pUserData = pUserData;
33097
33098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33099}
33100
33101/**
33102 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33103 Extended Scana reset Significant RSSI change Request to FW
33104
33105 @param pWDICtx : wdi context
33106 pEventData : indication data
33107
33108 @see
33109 @return none
33110*/
33111WDI_Status
33112WDI_ProcessEXTScanResetSignfRSSIChangeReq
33113(
33114 WDI_ControlBlockType* pWDICtx,
33115 WDI_EventInfoType* pEventData
33116)
33117{
33118 WDI_EXTScanResetSignfRSSIChangeReqParams*
33119 pwdiEXTScanResetSignfRSSIChangeReqParams;
33120 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33121 wpt_uint8* pSendBuffer = NULL;
33122 wpt_uint16 usSendSize = 0;
33123 wpt_uint16 usDataOffset = 0;
33124 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33125
33126 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33127 "%s: %d ",__func__, __LINE__);
33128
33129 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33130 ( NULL == pEventData->pCBfnc ))
33131 {
33132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33133 "%s: Invalid parameters", __func__);
33134 WDI_ASSERT(0);
33135 return WDI_STATUS_E_FAILURE;
33136 }
33137
33138 pwdiEXTScanResetSignfRSSIChangeReqParams =
33139 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33140 wdiEXTScanResetSignfRSSIChangeRspCb =
33141 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33142
33143 /*-----------------------------------------------------------------------
33144 Get message buffer
33145 ! TO DO : proper conversion into the HAL Message Request Format
33146 -----------------------------------------------------------------------*/
33147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33148 pWDICtx,
33149 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33150 sizeof(tHalSigRssiResetReq),
33151 &pSendBuffer, &usDataOffset,
33152 &usSendSize))||
33153 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33154 {
33155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33156 "Unable to get send buffer in %s %p %p %p", __func__,
33157 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33158 wdiEXTScanResetSignfRSSIChangeRspCb);
33159 WDI_ASSERT(0);
33160 return WDI_STATUS_E_FAILURE;
33161 }
33162 pHalSigRssiResetReqParams =
33163 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33164
33165 pHalSigRssiResetReqParams->requestId =
33166 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33167
33168 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33169
33170
33171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33172 wdiEXTScanResetSignfRSSIChangeRspCb,
33173 pEventData->pUserData,
33174 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33175}
33176
33177/**
33178 @brief Process Extended Scan Start Rsp function (called when a response
33179 is being received over the bus from HAL)
33180
33181 @param pWDICtx: pointer to the WLAN DAL context
33182 pEventData: pointer to the event information structure
33183
33184 @see
33185 @return Result of the function call
33186*/
33187WDI_Status
33188WDI_ProcessEXTScanStartRsp
33189(
33190 WDI_ControlBlockType* pWDICtx,
33191 WDI_EventInfoType* pEventData
33192)
33193{
33194 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33195
33196 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33197 "%s: %d",__func__, __LINE__);
33198 /*-------------------------------------------------------------------------
33199 Sanity check
33200 -------------------------------------------------------------------------*/
33201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33202 ( NULL == pEventData->pEventData))
33203 {
33204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33205 "%s: Invalid parameters", __func__);
33206 WDI_ASSERT(0);
33207 return WDI_STATUS_E_FAILURE;
33208 }
33209
33210 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33211 if ( NULL == wdiEXTScanStartRspCb)
33212 {
33213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33214 "%s: Callback function Invalid", __func__);
33215 WDI_ASSERT(0);
33216 return WDI_STATUS_E_FAILURE;
33217 }
33218
33219 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33220
33221 return WDI_STATUS_SUCCESS;
33222}
33223
33224
33225/**
33226 @brief Process Extended Scan Stop Rsp function (called when a response
33227 is being received over the bus from HAL)
33228
33229 @param pWDICtx: pointer to the WLAN DAL context
33230 pEventData: pointer to the event information structure
33231
33232 @see
33233 @return Result of the function call
33234*/
33235WDI_Status
33236WDI_ProcessEXTScanStopRsp
33237(
33238 WDI_ControlBlockType* pWDICtx,
33239 WDI_EventInfoType* pEventData
33240)
33241{
33242 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33243
33244 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33245 "%s: %d",__func__, __LINE__);
33246
33247
33248 /*-------------------------------------------------------------------------
33249 Sanity check
33250 -------------------------------------------------------------------------*/
33251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33252 ( NULL == pEventData->pEventData))
33253 {
33254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33255 "%s: Invalid parameters", __func__);
33256 WDI_ASSERT(0);
33257 return WDI_STATUS_E_FAILURE;
33258 }
33259
33260 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33261 if ( NULL == wdiEXTScanStopRspCb)
33262 {
33263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33264 "%s: Callback function Invalid", __func__);
33265 WDI_ASSERT(0);
33266 return WDI_STATUS_E_FAILURE;
33267 }
33268
33269 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33270
33271 return WDI_STATUS_SUCCESS;
33272}
33273
33274/**
33275 @brief Process Extended Scan Get Cached Rsp function (called when a response
33276 is being received over the bus from HAL)
33277
33278 @param pWDICtx: pointer to the WLAN DAL context
33279 pEventData: pointer to the event information structure
33280
33281 @see
33282 @return Result of the function call
33283*/
33284WDI_Status
33285WDI_ProcessEXTScanGetCachedResultsRsp
33286(
33287 WDI_ControlBlockType* pWDICtx,
33288 WDI_EventInfoType* pEventData
33289)
33290{
33291 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33292
33293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33294 "%s: %d Enter",__func__, __LINE__);
33295
33296
33297 /*-------------------------------------------------------------------------
33298 Sanity check
33299 -------------------------------------------------------------------------*/
33300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33301 ( NULL == pEventData->pEventData))
33302 {
33303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33304 "%s: Invalid parameters", __func__);
33305 WDI_ASSERT(0);
33306 return WDI_STATUS_E_FAILURE;
33307 }
33308
33309 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33310 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33311 {
33312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33313 "%s: Callback function Invalid", __func__);
33314 WDI_ASSERT(0);
33315 return WDI_STATUS_E_FAILURE;
33316 }
33317
33318 wdiEXTScanGetCachedResultsRspCb(
33319 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33320
33321 return WDI_STATUS_SUCCESS;
33322}
33323
33324/**
33325 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33326 is being received over the bus from HAL)
33327
33328 @param pWDICtx: pointer to the WLAN DAL context
33329 pEventData: pointer to the event information structure
33330
33331 @see
33332 @return Result of the function call
33333*/
33334WDI_Status
33335WDI_ProcessEXTScanGetCapabilitiesRsp
33336(
33337 WDI_ControlBlockType* pWDICtx,
33338 WDI_EventInfoType* pEventData
33339)
33340{
33341 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33342
33343 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33344 "%s: %d ",__func__, __LINE__);
33345
33346
33347 /*-------------------------------------------------------------------------
33348 Sanity check
33349 -------------------------------------------------------------------------*/
33350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33351 ( NULL == pEventData->pEventData))
33352 {
33353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33354 "%s: Invalid parameters", __func__);
33355 WDI_ASSERT(0);
33356 return WDI_STATUS_E_FAILURE;
33357 }
33358
33359 wdiEXTScanGetCapabilitiesRspCb =
33360 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33361 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33362 {
33363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33364 "%s: Callback function Invalid", __func__);
33365 WDI_ASSERT(0);
33366 return WDI_STATUS_E_FAILURE;
33367 }
33368
33369 wdiEXTScanGetCapabilitiesRspCb(
33370 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33371
33372 return WDI_STATUS_SUCCESS;
33373}
33374
33375/**
33376 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33377 response is being received over the bus from HAL)
33378
33379 @param pWDICtx: pointer to the WLAN DAL context
33380 pEventData: pointer to the event information structure
33381
33382 @see
33383 @return Result of the function call
33384*/
33385WDI_Status
33386WDI_ProcessEXTScanSetHotlistBSSIDRsp
33387(
33388 WDI_ControlBlockType* pWDICtx,
33389 WDI_EventInfoType* pEventData
33390)
33391{
33392 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33393
33394 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33395 "%s: %d ",__func__, __LINE__);
33396
33397
33398 /*-------------------------------------------------------------------------
33399 Sanity check
33400 -------------------------------------------------------------------------*/
33401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33402 ( NULL == pEventData->pEventData))
33403 {
33404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33405 "%s: Invalid parameters", __func__);
33406 WDI_ASSERT(0);
33407 return WDI_STATUS_E_FAILURE;
33408 }
33409
33410 wdiEXTScanSetBSSIDHotlistRspCb =
33411 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33412 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33413 {
33414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33415 "%s: Callback function Invalid", __func__);
33416 WDI_ASSERT(0);
33417 return WDI_STATUS_E_FAILURE;
33418 }
33419
33420 wdiEXTScanSetBSSIDHotlistRspCb(
33421 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33422
33423 return WDI_STATUS_SUCCESS;
33424}
33425
33426/**
33427 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33428 when a response is being received over the bus from HAL)
33429
33430 @param pWDICtx: pointer to the WLAN DAL context
33431 pEventData: pointer to the event information structure
33432
33433 @see
33434 @return Result of the function call
33435*/
33436WDI_Status
33437WDI_ProcessEXTScanResetHotlistBSSIDRsp
33438(
33439 WDI_ControlBlockType* pWDICtx,
33440 WDI_EventInfoType* pEventData
33441)
33442{
33443 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33444
33445 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33446 "%s: %d ",__func__, __LINE__);
33447
33448
33449 /*-------------------------------------------------------------------------
33450 Sanity check
33451 -------------------------------------------------------------------------*/
33452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33453 ( NULL == pEventData->pEventData))
33454 {
33455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33456 "%s: Invalid parameters", __func__);
33457 WDI_ASSERT(0);
33458 return WDI_STATUS_E_FAILURE;
33459 }
33460
33461 wdiEXTScanResetBSSIDHotlistRspCb =
33462 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33463 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33464 {
33465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33466 "%s: Callback function Invalid", __func__);
33467 WDI_ASSERT(0);
33468 return WDI_STATUS_E_FAILURE;
33469 }
33470
33471 wdiEXTScanResetBSSIDHotlistRspCb(
33472 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33473
33474 return WDI_STATUS_SUCCESS;
33475}
33476
33477/**
33478 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33479 when a response is being received over the bus from HAL)
33480
33481 @param pWDICtx: pointer to the WLAN DAL context
33482 pEventData: pointer to the event information structure
33483
33484 @see
33485 @return Result of the function call
33486*/
33487WDI_Status
33488WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33489(
33490 WDI_ControlBlockType* pWDICtx,
33491 WDI_EventInfoType* pEventData
33492)
33493{
33494 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33495
33496 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33497 "%s: %d",__func__, __LINE__);
33498
33499
33500 /*-------------------------------------------------------------------------
33501 Sanity check
33502 -------------------------------------------------------------------------*/
33503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33504 ( NULL == pEventData->pEventData))
33505 {
33506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33507 "%s: Invalid parameters", __func__);
33508 WDI_ASSERT(0);
33509 return WDI_STATUS_E_FAILURE;
33510 }
33511
33512 wdiEXTScanSetSignfRSSIChangeRspCb =
33513 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33514 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33515 {
33516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33517 "%s: Callback function Invalid", __func__);
33518 WDI_ASSERT(0);
33519 return WDI_STATUS_E_FAILURE;
33520 }
33521
33522 wdiEXTScanSetSignfRSSIChangeRspCb(
33523 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33524
33525 return WDI_STATUS_SUCCESS;
33526}
33527
33528/**
33529 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33530 (called when a response is being received over the bus from HAL)
33531
33532 @param pWDICtx: pointer to the WLAN DAL context
33533 pEventData: pointer to the event information structure
33534
33535 @see
33536 @return Result of the function call
33537*/
33538WDI_Status
33539WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33540(
33541 WDI_ControlBlockType* pWDICtx,
33542 WDI_EventInfoType* pEventData
33543)
33544{
33545 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33546
33547 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33548 "%s: %d Enter",__func__, __LINE__);
33549
33550
33551 /*-------------------------------------------------------------------------
33552 Sanity check
33553 -------------------------------------------------------------------------*/
33554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33555 ( NULL == pEventData->pEventData))
33556 {
33557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33558 "%s: Invalid parameters", __func__);
33559 WDI_ASSERT(0);
33560 return WDI_STATUS_E_FAILURE;
33561 }
33562
33563 wdiEXTScanResetSignfRSSIChangeRspCb =
33564 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33565 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33566 {
33567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33568 "%s: Callback function Invalid", __func__);
33569 WDI_ASSERT(0);
33570 return WDI_STATUS_E_FAILURE;
33571 }
33572
33573 wdiEXTScanResetSignfRSSIChangeRspCb(
33574 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33575
33576 return WDI_STATUS_SUCCESS;
33577}
33578#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033579
33580/**
33581 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33582
33583 @param None
33584
33585 @see
33586
33587 @return Status of the request
33588*/
33589WDI_Status
33590WDI_SetSpoofMacAddrReq
33591(
33592 WDI_SpoofMacAddrInfoType* pWdiReq,
33593 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33594 void* pUserData)
33595{
33596 WDI_EventInfoType wdiEventData;
33597
33598 /*-------------------------------------------------------------------------
33599 Sanity Check
33600 ------------------------------------------------------------------------*/
33601 if (eWLAN_PAL_FALSE == gWDIInitialized)
33602 {
33603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33604 "WDI API call before module is initialized - Fail request!");
33605
33606 return WDI_STATUS_E_NOT_ALLOWED;
33607 }
33608
33609 /*-------------------------------------------------------------------------
33610 Fill in Event data and post to the Main FSM
33611 ------------------------------------------------------------------------*/
33612 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33613 wdiEventData.pEventData = pWdiReq;
33614 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33615 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33616 wdiEventData.pUserData = pUserData;
33617
33618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33619}
33620
33621/**
33622 @brief Process SpoofMacAddr Request
33623
33624 @param pWDICtx: pointer to the WLAN DAL context
33625 pEventData: pointer to the event information structure
33626
33627 @see
33628 @return Result of the function call
33629*/
33630WDI_Status
33631WDI_ProcessSpoofMacAddrReq
33632(
33633 WDI_ControlBlockType* pWDICtx,
33634 WDI_EventInfoType* pEventData
33635)
33636{
33637 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33638 wpt_uint8* pSendBuffer = NULL;
33639 wpt_uint16 usDataOffset = 0;
33640 wpt_uint16 usSendSize = 0;
33641 WDI_Status wdiStatus;
33642 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33643 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33644
33645
33646 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33647 "%s: %d Enter",__func__, __LINE__);
33648
33649 /*-------------------------------------------------------------------------
33650 Sanity check
33651 -------------------------------------------------------------------------*/
33652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33653 ( NULL == pEventData->pEventData))
33654 {
33655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33656 "%s: Invalid parameters", __func__);
33657 WDI_ASSERT(0);
33658 return WDI_STATUS_E_FAILURE;
33659 }
33660 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33661
33662 /*-----------------------------------------------------------------------
33663 Get message buffer
33664 -----------------------------------------------------------------------*/
33665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33666 WDI_SPOOF_MAC_ADDR_REQ,
33667 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33668 &pSendBuffer, &usDataOffset, &usSendSize))||
33669 (usSendSize < (usDataOffset +
33670 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33671 {
33672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33673 "Unable to get send buffer in Process Spoof Mac Addr Req");
33674 WDI_ASSERT(0);
33675 return WDI_STATUS_E_FAILURE;
33676 }
33677
33678 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33679 wdiSpoofMacAddr->macAddr,
33680 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33681
33682 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33683
33684 wpalMemoryCopy( pSendBuffer+usDataOffset,
33685 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33686 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33687
33688 /*-------------------------------------------------------------------------
33689 Send Suspend Request to HAL
33690 -------------------------------------------------------------------------*/
33691 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33692 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33693
33694 return wdiStatus;
33695}
33696
33697/**
33698 @brief Process Spoof Mac Address Rsp function
33699 (called when a response is being received over the bus from HAL)
33700
33701 @param pWDICtx: pointer to the WLAN DAL context
33702 pEventData: pointer to the event information structure
33703
33704 @see
33705 @return Result of the function call
33706*/
33707WDI_Status
33708WDI_ProcessSpoofMacAddrRsp
33709(
33710 WDI_ControlBlockType* pWDICtx,
33711 WDI_EventInfoType* pEventData
33712)
33713{
33714 tMacSpoofedScanResp halRsp;
33715 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33716 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33717
33718 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33719 "%s: %d Enter",__func__, __LINE__);
33720
33721 /*-------------------------------------------------------------------------
33722 Sanity check
33723 -------------------------------------------------------------------------*/
33724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33725 ( NULL == pEventData->pEventData))
33726 {
33727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33728 "%s: Invalid parameters", __func__);
33729 WDI_ASSERT(0);
33730 return WDI_STATUS_E_FAILURE;
33731 }
33732 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33733
33734 /*-------------------------------------------------------------------------
33735 Extract response and send it to UMAC
33736 -------------------------------------------------------------------------*/
33737 wpalMemoryCopy( &halRsp,
33738 pEventData->pEventData, sizeof(halRsp));
33739
33740 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33741
33742 /*Notify UMAC*/
33743 wdiSpoofMacAddrRspCb(
33744 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33745
33746 return WDI_STATUS_SUCCESS;
33747}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033748
33749/**
33750 @brief WDI_EncryptMsgReq
33751
33752 @param pwdiEncryptMsgParams: Req parameter for the FW
33753 wdiEncryptMsgCbRsp: callback for passing back the response
33754 of the Req operation received from the device
33755 pUserData: user data will be passed back with the callback
33756
33757 @return SUCCESS or FAIL
33758*/
33759WDI_Status
33760WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
33761 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
33762 void* pUserData)
33763{
33764 WDI_EventInfoType wdiEventData;
33765
33766 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33767 "%s: %d Enter" ,__func__, __LINE__);
33768 /*------------------------------------------------------------------------
33769 Sanity Check
33770 ------------------------------------------------------------------------*/
33771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33772 {
33773 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33774 "WDI API call before module is initialized - Fail request");
33775
33776 return WDI_STATUS_E_NOT_ALLOWED;
33777 }
33778
33779 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
33780 wdiEventData.pEventData = pwdiEncryptMsgParams;
33781 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
33782 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
33783 wdiEventData.pUserData = pUserData;
33784
33785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33786}
33787
33788/*
33789 * FUNCTION: WDI_ProcessEncryptMsgReq
33790 * Request to WDI to encrypt the given message.
33791 *
33792 * @param pWDICtx: pointer to the WLAN DAL context
33793 * pEventData: pointer to the event information structure
33794 *
33795 * @return Result of the function call
33796 */
33797
33798WDI_Status
33799WDI_ProcessEncryptMsgReq
33800(
33801 WDI_ControlBlockType* pWDICtx,
33802 WDI_EventInfoType* pEventData
33803)
33804{
33805 wpt_uint8* pSendBuffer = NULL;
33806 wpt_uint16 usDataOffset = 0;
33807 wpt_uint16 usSendSize = 0;
33808 WDI_EncryptMsgRspCb* wdiEncMsgCb;
33809 tSetEncryptedDataParams *pHalEncryptDataReq;
33810 wpt_pkt80211 *pkt = NULL;
33811
33812 /*-------------------------------------------------------------------------
33813 Sanity check
33814 -------------------------------------------------------------------------*/
33815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33816 ( NULL == pEventData->pCBfnc ) )
33817 {
33818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33819 "%s: Invalid parameters", __func__);
33820 WDI_ASSERT(0);
33821 return WDI_STATUS_E_FAILURE;
33822 }
33823
33824 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
33825
33826 /*-----------------------------------------------------------------------
33827 Get message buffer
33828 -----------------------------------------------------------------------*/
33829 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33830 pWDICtx, WDI_ENCRYPT_MSG_REQ,
33831 sizeof(tSetEncryptedDataReqMsg),
33832 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33833 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
33834 {
33835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33836 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
33837 pEventData);
33838 WDI_ASSERT(0);
33839 return WDI_STATUS_E_FAILURE;
33840 }
33841
33842 pWDICtx->wdiReqStatusCB = NULL;
33843 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33844 pkt = (wpt_pkt80211 *)pEventData->pEventData;
33845
33846 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
33847 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
33848
33849 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
33850
33851 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
33852 pkt->encParams.keyParams.key[0].keyId;
33853
33854 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
33855 &pkt->encParams.keyParams.key[0].key[0], 16);
33856
33857 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
33858
33859 pHalEncryptDataReq->data.length = pkt->data.length;
33860 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
33861
33862 /*-------------------------------------------------------------------------
33863 Send Get STA Request to HAL
33864 -------------------------------------------------------------------------*/
33865 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
33866 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
33867}
33868
33869/*
33870 * FUNCTION: WDI_ProcessEncryptMsgRsp
33871 * Receives the encrypted message from the firmware
33872 * @param pWDICtx: pointer to the WLAN DAL context
33873 * pEventData: pointer to the event information structure
33874 *
33875 * @return Result of the function call
33876 */
33877WDI_Status
33878WDI_ProcessEncryptMsgRsp
33879(
33880 WDI_ControlBlockType* pWDICtx,
33881 WDI_EventInfoType* pEventData
33882)
33883{
33884 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
33885 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
33886
33887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33888 "In %s",__func__);
33889
33890 /*-------------------------------------------------------------------------
33891 Sanity check
33892 -------------------------------------------------------------------------*/
33893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33894 ( NULL == pEventData->pEventData))
33895 {
33896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33897 "%s: Invalid parameters", __func__);
33898 WDI_ASSERT(0);
33899 return WDI_STATUS_E_FAILURE;
33900 }
33901
33902 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
33903
33904 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
33905
33906 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
33907 pEventData->pEventData,
33908 pWDICtx->pRspCBUserData);
33909 return WDI_STATUS_SUCCESS;
33910}