blob: e79996408ad9989f2ea556090baf340bc7418961 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05302 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -08003 *
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#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053095
Jeff Johnson295189b2012-06-20 16:38:30 -070096/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700105
106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530189 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Siddharth Bhal171788a2014-09-29 21:02:40 +0530191 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530192 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530203 ,FEATURE_NOT_SUPPORTED //52
204 ,MGMT_FRAME_LOGGING //53
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530205};
Jeff Johnson295189b2012-06-20 16:38:30 -0700206
207/*--------------------------------------------------------------------------
208 WLAN DAL State Machine
209 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700210WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700211{
212 /*WDI_INIT_ST*/
213 {{
214 WDI_MainStart, /*WDI_START_EVENT*/
215 NULL, /*WDI_STOP_EVENT*/
216 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
217 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
218 WDI_MainClose, /*WDI_CLOSE_EVENT*/
219 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
220 }},
221
222 /*WDI_STARTED_ST*/
223 {{
224 WDI_MainStartStarted, /*WDI_START_EVENT*/
225 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
226 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
227 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
228 NULL, /*WDI_CLOSE_EVENT*/
229 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
230 }},
231
232 /*WDI_STOPPED_ST*/
233 {{
234 WDI_MainStart, /*WDI_START_EVENT*/
235 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
236 NULL, /*WDI_REQUEST_EVENT*/
237 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
238 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700239 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700240 }},
241
242 /*WDI_BUSY_ST*/
243 {{
244 WDI_MainStartBusy, /*WDI_START_EVENT*/
245 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
246 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
247 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
248 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
249 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
250 }}
251};
252
Jeff Johnsone7245742012-09-05 17:12:55 -0700253/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700254 DAL Request Processing Array - the functions in this table will only be
255 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700256 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700258WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700259{
260 /*INIT*/
261 WDI_ProcessStartReq, /* WDI_START_REQ */
262 WDI_ProcessStopReq, /* WDI_STOP_REQ */
263 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
264
265 /*SCAN*/
266 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
267 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
268 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
269 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
270
271 /*ASSOCIATION*/
272 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
273 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
274 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
275 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
276 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
277
278 /* Security */
279 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
280 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
281 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
282 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
283
284 /* QoS and BA APIs */
285 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
286 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
287 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
288 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
289 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
290
291 /* Miscellaneous Control APIs */
292 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
293 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
294 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
295 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
296 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
297
298 /*BA APIs*/
299 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
300 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
301
302 /*Beacon processing APIs*/
303 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
304 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
305
306 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
307 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
308 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
309 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700311 /* PowerSave APIs */
312 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
313 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
314 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
315 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
316 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
317 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
318 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
319 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
320 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
321 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
322 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
323 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
324 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
325 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
326 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
327 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
328 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
329 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
330 /*NV Download APIs*/
331 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
332 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
333 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
334#ifdef WLAN_FEATURE_VOWIFI_11R
335 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
336#else
337 NULL,
338#endif /* WLAN_FEATURE_VOWIFI_11R */
339 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
340 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700341 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700342
343#ifdef FEATURE_OEM_DATA_SUPPORT
344 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
345#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700347#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700348 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700349
350 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700351
352#ifdef FEATURE_WLAN_SCAN_PNO
353 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
354 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
355 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
356#else
357 NULL,
358 NULL,
359 NULL,
360#endif /* FEATURE_WLAN_SCAN_PNO */
361
362 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700363
Jeff Johnson295189b2012-06-20 16:38:30 -0700364#ifdef WLAN_FEATURE_PACKET_FILTERING
365 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700366 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700367 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700371 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700373#else
374 NULL,
375 NULL,
376 NULL,
377 NULL,
378#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700379 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700380 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
381 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
382
383 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800384#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700385 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
386#else
387 NULL,
388#endif
389
390#ifdef WLAN_FEATURE_GTK_OFFLOAD
391 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
392 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
393#else
394 NULL,
395 NULL,
396#endif // WLAN_FEATURE_GTK_OFFLOAD
397
398 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
399 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700400#ifdef WLAN_FEATURE_11AC
401 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800402#else
403 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700404#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800405#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800406 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
407#else
schang86c22c42013-03-13 18:41:24 -0700408 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800409#endif
schang86c22c42013-03-13 18:41:24 -0700410 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700411#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700412 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700413#else
414 NULL,
415#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530416#ifdef FEATURE_WLAN_TDLS
417 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
418#else
419 NULL,
420#endif
Leo Chang9056f462013-08-01 19:21:11 -0700421#ifdef FEATURE_WLAN_LPHB
422 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
423#else
424 NULL,
425#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530426
427#ifdef FEATURE_WLAN_BATCH_SCAN
428 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
429#else
430 NULL,
431#endif /* FEATURE_WLAN_BATCH_SCAN */
432
Arif Hussaina5ebce02013-08-09 15:09:58 -0700433 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800434
435 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530436
437 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530438
439#ifdef WLAN_FEATURE_LINK_LAYER_STATS
440 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
441 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
442 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
443#else
444 NULL,
445 NULL,
446 NULL,
447#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530448#ifdef WLAN_FEATURE_EXTSCAN
449 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
450 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
451 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
452 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
453 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
454 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
455 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
456 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
457#else
458 NULL,
459 NULL,
460 NULL,
461 NULL,
462 NULL,
463 NULL,
464 NULL,
465 NULL,
466#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530467 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530468
469 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530470
471 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530472
473 WDI_ProcessMgmtLoggingInitReq, /* WDI_MGMT_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530474 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
schang86c22c42013-03-13 18:41:24 -0700475 /*-------------------------------------------------------------------------
476 Indications
477 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800479 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530480 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
481 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700482#ifdef WLAN_FEATURE_11W
483 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
484#else
485 NULL,
486#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700487 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
488 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530489#ifdef FEATURE_WLAN_BATCH_SCAN
490 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
491 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
492#else
493 NULL,
494 NULL,
495#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700496 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800497
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530498 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800499 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
500
501 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530502#ifdef FEATURE_WLAN_TDLS
503 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
504#else
505 NULL,
506#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508};
509
510
Jeff Johnsone7245742012-09-05 17:12:55 -0700511/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700512 DAL Request Processing Array - the functions in this table will only be
513 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700514 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700515 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700516WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700517{
518 /*INIT*/
519 WDI_ProcessStartRsp, /* WDI_START_RESP */
520 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
521 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
522
523 /*SCAN*/
524 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
525 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
526 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
527 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
528
529 /* ASSOCIATION*/
530 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
531 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
532 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
533 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
534 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
535
536 /* Security */
537 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
538 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
539 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
540 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
541
542 /* QoS and BA APIs */
543 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
544 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
545 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
546 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
547 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
548
549 /* Miscellaneous Control APIs */
550 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
551 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
552 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
553 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
554 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
555
556 /* BA APIs*/
557 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
558 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700559
Jeff Johnson295189b2012-06-20 16:38:30 -0700560 /* IBSS APIs*/
561 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
562 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
563
564 /*Soft AP APIs*/
565 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
566 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
567 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
568 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
569
570 /* PowerSave APIs */
571 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
572 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
573 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
574 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
575 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
576 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
577 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
578 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
579 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
580 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
581 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
582 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
583 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
584 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
585 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
586 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
587 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
588 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700589
Jeff Johnson295189b2012-06-20 16:38:30 -0700590
591 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
592
593 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
594 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
595#ifdef WLAN_FEATURE_VOWIFI_11R
596 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
597#else
598 NULL,
599#endif /* WLAN_FEATURE_VOWIFI_11R */
600 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
601 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700602#ifdef FEATURE_OEM_DATA_SUPPORT
603 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
604#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700605 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700606#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700607 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
608
Jeff Johnson295189b2012-06-20 16:38:30 -0700609 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700610
Jeff Johnson295189b2012-06-20 16:38:30 -0700611 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700612
Jeff Johnsone7245742012-09-05 17:12:55 -0700613 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
614
Jeff Johnson295189b2012-06-20 16:38:30 -0700615#ifdef FEATURE_WLAN_SCAN_PNO
616 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
617 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
618 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
619#else
620 NULL,
621 NULL,
622 NULL,
623#endif // FEATURE_WLAN_SCAN_PNO
624
625 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700626 /*---------------------------------------------------------------------
627 Indications
628 ---------------------------------------------------------------------*/
629#ifdef WLAN_FEATURE_PACKET_FILTERING
630 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700631 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700632 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700633 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700634 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700635 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700636 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700637 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700638#else
639 NULL,
640 NULL,
641 NULL,
642 NULL,
643#endif // WLAN_FEATURE_PACKET_FILTERING
644
645 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
646 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
647
648 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800649#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700650 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
651#else
652 NULL,
653#endif
654
655#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700656 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
657 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700658#else
659 NULL,
660 NULL,
661#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700662 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
663 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700664#ifdef WLAN_FEATURE_11AC
665 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700666#else
667 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700668#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800669#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800670 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
671#else
672 NULL,
673#endif
schang86c22c42013-03-13 18:41:24 -0700674 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700675#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700676 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700677#else
678 NULL,
679#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530680#ifdef FEATURE_WLAN_TDLS
681 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
682#else
683 NULL,
684#endif
Leo Chang9056f462013-08-01 19:21:11 -0700685#ifdef FEATURE_WLAN_LPHB
686 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
687#else
688 NULL,
689#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530690
691#ifdef FEATURE_WLAN_BATCH_SCAN
692 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
693#else
694 NULL,
695#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800696 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530697
c_hpothu92367912014-05-01 15:18:17 +0530698 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800699
c_hpothu92367912014-05-01 15:18:17 +0530700 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
701
702 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800703
Sunil Duttbd736ed2014-05-26 21:19:41 +0530704
705#ifdef WLAN_FEATURE_LINK_LAYER_STATS
706 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
707 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
708 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
709#else
710 NULL,
711 NULL,
712 NULL,
713#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530714#ifdef WLAN_FEATURE_EXTSCAN
715 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
716 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
717 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
718 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
719 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
720 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
721 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
722 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
723#else
724 NULL,
725 NULL,
726 NULL,
727 NULL,
728 NULL,
729 NULL,
730 NULL,
731 NULL,
732#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530733 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530734
735 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530736
737 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530738 WDI_ProcessMgmtFrameLoggingInitRsp, /* WDI_MGMT_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530739 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530740
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 /*---------------------------------------------------------------------
742 Indications
743 ---------------------------------------------------------------------*/
744 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
745 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
746 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
747 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
748 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
749 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
750
751 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
752
753 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
754
Jeff Johnson295189b2012-06-20 16:38:30 -0700755 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700756
757#ifdef FEATURE_WLAN_SCAN_PNO
758 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
759#else
760 NULL,
761#endif // FEATURE_WLAN_SCAN_PNO
762
763#ifdef WLAN_WAKEUP_EVENTS
764 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
765#else // WLAN_WAKEUP_EVENTS
766 NULL,
767#endif // WLAN_WAKEUP_EVENTS
768
769 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800770
Viral Modid86bde22012-12-10 13:09:21 -0800771 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530772#ifdef FEATURE_WLAN_TDLS
773 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
774#else
775 NULL,
776#endif
Leo Chang9056f462013-08-01 19:21:11 -0700777
778#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700779 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700780#else
781 NULL,
782#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700783
784 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700785
786 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530787
788#ifdef FEATURE_WLAN_BATCH_SCAN
789 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
790#else
791 NULL,
792#endif
793
Leo Chang0b0e45a2013-12-15 15:18:55 -0800794#ifdef FEATURE_WLAN_CH_AVOID
795 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
796#else
797 NULL,
798#endif /* FEATURE_WLAN_CH_AVOID */
799
Sunil Duttbd736ed2014-05-26 21:19:41 +0530800 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
801#ifdef WLAN_FEATURE_LINK_LAYER_STATS
802 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
803#else
804 NULL,
805#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530806#ifdef WLAN_FEATURE_EXTSCAN
807 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
808 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
809 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
810 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
811 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
812#else
813 NULL,
814 NULL,
815 NULL,
816 NULL,
817 NULL,
818#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530819#ifdef FEATURE_WLAN_TDLS
820 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
821#else
822 NULL,
823#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530824 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700825};
826
827
Jeff Johnsone7245742012-09-05 17:12:55 -0700828/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700829 WLAN DAL Global Control Block
830 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700831WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700832static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
833
Jeff Johnsone7245742012-09-05 17:12:55 -0700834const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700835
836/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700837WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700838void* WDI_GET_PAL_CTX( void )
839{
Jeff Johnsone7245742012-09-05 17:12:55 -0700840 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700841}/*WDI_GET_PAL_CTX*/
842
Jeff Johnsone7245742012-09-05 17:12:55 -0700843/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 Helper inline converters
845 ============================================================================*/
846/*Convert WDI driver type into HAL driver type*/
847WPT_STATIC WPT_INLINE WDI_Status
848WDI_HAL_2_WDI_STATUS
849(
850 eHalStatus halStatus
851);
852
853/*Convert WDI request type into HAL request type*/
854WPT_STATIC WPT_INLINE tHalHostMsgType
855WDI_2_HAL_REQ_TYPE
856(
857 WDI_RequestEnumType wdiReqType
858);
859
860/*Convert WDI response type into HAL response type*/
861WPT_STATIC WPT_INLINE WDI_ResponseEnumType
862HAL_2_WDI_RSP_TYPE
863(
864 tHalHostMsgType halMsg
865);
866
867/*Convert WDI driver type into HAL driver type*/
868WPT_STATIC WPT_INLINE tDriverType
869WDI_2_HAL_DRV_TYPE
870(
871 WDI_DriverType wdiDriverType
872);
873
874/*Convert WDI stop reason into HAL stop reason*/
875WPT_STATIC WPT_INLINE tHalStopType
876WDI_2_HAL_STOP_REASON
877(
878 WDI_StopType wdiStopType
879);
880
881/*Convert WDI scan mode type into HAL scan mode type*/
882WPT_STATIC WPT_INLINE eHalSysMode
883WDI_2_HAL_SCAN_MODE
884(
885 WDI_ScanMode wdiScanMode
886);
887
888/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700889WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700890WDI_2_HAL_SEC_CH_OFFSET
891(
892 WDI_HTSecondaryChannelOffset wdiSecChOffset
893);
894
895/*Convert WDI BSS type into HAL BSS type*/
896WPT_STATIC WPT_INLINE tSirBssType
897WDI_2_HAL_BSS_TYPE
898(
899 WDI_BssType wdiBSSType
900);
901
902/*Convert WDI NW type into HAL NW type*/
903WPT_STATIC WPT_INLINE tSirNwType
904WDI_2_HAL_NW_TYPE
905(
906 WDI_NwType wdiNWType
907);
908
909/*Convert WDI chanel bonding type into HAL cb type*/
910WPT_STATIC WPT_INLINE ePhyChanBondState
911WDI_2_HAL_CB_STATE
912(
913 WDI_PhyChanBondState wdiCbState
914);
915
916/*Convert WDI chanel bonding type into HAL cb type*/
917WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
918WDI_2_HAL_HT_OPER_MODE
919(
920 WDI_HTOperatingMode wdiHTOperMode
921);
922
923/*Convert WDI mimo PS type into HAL mimo PS type*/
924WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
925WDI_2_HAL_MIMO_PS
926(
927 WDI_HTMIMOPowerSaveState wdiHTOperMode
928);
929
930/*Convert WDI ENC type into HAL ENC type*/
931WPT_STATIC WPT_INLINE tAniEdType
932WDI_2_HAL_ENC_TYPE
933(
934 WDI_EncryptType wdiEncType
935);
936
937/*Convert WDI WEP type into HAL WEP type*/
938WPT_STATIC WPT_INLINE tAniWepType
939WDI_2_HAL_WEP_TYPE
940(
941 WDI_WepType wdiWEPType
942);
943
944/*Convert WDI Link State into HAL Link State*/
945WPT_STATIC WPT_INLINE tSirLinkState
946WDI_2_HAL_LINK_STATE
947(
948 WDI_LinkStateType wdiLinkState
949);
950
Jeff Johnsone7245742012-09-05 17:12:55 -0700951/*Translate a STA Context from WDI into HAL*/
952WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700953void
954WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700955(
Jeff Johnson295189b2012-06-20 16:38:30 -0700956 tConfigStaParams* phalConfigSta,
957 WDI_ConfigStaReqInfoType* pwdiConfigSta
958);
Jeff Johnsone7245742012-09-05 17:12:55 -0700959
960/*Translate a Rate set info from WDI into HAL*/
961WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700962WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700963(
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 tSirMacRateSet* pHalRateSet,
965 WDI_RateSet* pwdiRateSet
966);
967
968/*Translate an EDCA Parameter Record from WDI into HAL*/
969WPT_STATIC WPT_INLINE void
970WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700971(
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 tSirMacEdcaParamRecord* phalEdcaParam,
973 WDI_EdcaParamRecord* pWDIEdcaParam
974);
975
976/*Copy a management frame header from WDI fmt into HAL fmt*/
977WPT_STATIC WPT_INLINE void
978WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
979(
980 tSirMacMgmtHdr* pmacMgmtHdr,
981 WDI_MacMgmtHdr* pwdiMacMgmtHdr
982);
983
984/*Copy config bss parameters from WDI fmt into HAL fmt*/
985WPT_STATIC WPT_INLINE void
986WDI_CopyWDIConfigBSSToHALConfigBSS
987(
988 tConfigBssParams* phalConfigBSS,
989 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
990);
991
Jeff Johnsone7245742012-09-05 17:12:55 -0700992/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700993 pointed to by user data */
994WPT_STATIC WPT_INLINE void
995WDI_ExtractRequestCBFromEvent
996(
997 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700998 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700999 void** ppUserData
1000);
1001
1002wpt_uint8
1003WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001004(
Jeff Johnson295189b2012-06-20 16:38:30 -07001005 WDI_ControlBlockType* pWDICtx,
1006 WDI_BSSSessionType** ppSession
1007);
1008
1009void
1010WDI_AddBcastSTAtoSTATable
1011(
1012 WDI_ControlBlockType* pWDICtx,
1013 WDI_AddStaParams * staParams,
1014 wpt_uint16 usBcastStaIdx
1015);
1016
1017WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001018(
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 WDI_ControlBlockType* pWDICtx,
1020 WDI_EventInfoType* pEventData
1021);
1022
1023void
1024WDI_SetPowerStateCb
1025(
1026 wpt_status status,
1027 unsigned int dxePhyAddr,
1028 void *pContext
1029);
1030
Jeff Johnson295189b2012-06-20 16:38:30 -07001031/**
1032 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001033
1034 @param wdiReqMsgId: WDI Message request Id
1035
1036 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001037 @return Result of the function call
1038*/
1039static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1040{
1041 switch (wdiReqMsgId)
1042 {
1043 CASE_RETURN_STRING( WDI_START_REQ );
1044 CASE_RETURN_STRING( WDI_STOP_REQ );
1045 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1046 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1047 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1048 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1049 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1050 CASE_RETURN_STRING( WDI_JOIN_REQ );
1051 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1052 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1053 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1054 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1055 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1056 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1057 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1058 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1059 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1060 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1061 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1062 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1063 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1064 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001065 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001066 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1067 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1068 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1069 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1070 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1071 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1072 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1073 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1074 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1075 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1076 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1077 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001078 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001079 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301080#ifdef FEATURE_WLAN_TDLS
1081 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301082 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301083#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1085 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1086 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1087 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1088 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1089 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1090 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1091 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1092 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1093 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1094 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1095 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1096 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1097 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1098 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1099 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1100 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1101 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1102 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1103 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1104 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1105 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1106 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1107 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1108 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001109 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001110 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1111 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1112 #ifdef FEATURE_WLAN_SCAN_PNO
1113 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1114 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1115 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1116 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001117#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001118 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001119#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001120 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1121 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1122 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1123 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1124 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1125 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1126 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1127 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1128 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301129 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001130 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001131 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001132#ifdef WLAN_FEATURE_11W
1133 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1134#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301135#ifdef FEATURE_WLAN_BATCH_SCAN
1136 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1137 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1138 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1139#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301140 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1141 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001142 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301143#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1144 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1145 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1146 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1147#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301148#ifdef WLAN_FEATURE_EXTSCAN
1149 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1150 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1151 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1152 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1153 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1154 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1155 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1156 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1157#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301158 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301159 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301160 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301161 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301162 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001163 default:
1164 return "Unknown WDI MessageId";
1165 }
1166}
1167
1168
1169
1170/**
1171 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001172
1173 @param wdiRespMsgId: WDI Message response Id
1174
1175 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 @return Result of the function call
1177*/
1178static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1179{
1180 switch (wdiRespMsgId)
1181 {
1182 CASE_RETURN_STRING( WDI_START_RESP );
1183 CASE_RETURN_STRING( WDI_STOP_RESP );
1184 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1185 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1186 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1187 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1188 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1189 CASE_RETURN_STRING( WDI_JOIN_RESP );
1190 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1191 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1192 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1193 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1194 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1195 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1196 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1197 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1198 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1199 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1200 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1201 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1202 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1203 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1204 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1205 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1206 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1207 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1208 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1209 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1210 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1211 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1212 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1213 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1214 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1215 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1216 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301217#ifdef FEATURE_WLAN_TDLS
1218 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301219 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301220 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1221#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001222 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1223 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1224 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1225 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1226 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1227 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1228 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1229 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1230 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1231 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1232 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1233 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1234 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1235 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1236 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1237 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1238 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1239 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1240 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1241 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1242 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1243 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1244 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1245 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1246 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001247 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1249 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1250 #ifdef FEATURE_WLAN_SCAN_PNO
1251 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1252 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1253 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1254 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001255#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001256 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001257#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001258 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1259 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1260 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1261 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1262 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1263 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1264 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1265 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001266 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301267#ifdef FEATURE_WLAN_BATCH_SCAN
1268 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1269#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001270 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301271 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301272 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301273#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1274 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1275 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1276 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1277#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301278#ifdef WLAN_FEATURE_EXTSCAN
1279 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1280 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1281 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1282 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1283 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1284 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1285 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1286 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1287 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1288 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1289 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1290 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1291 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1292
1293#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301294 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301295 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301296 CASE_RETURN_STRING( WDI_MGMT_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301297 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 default:
1299 return "Unknown WDI MessageId";
1300 }
1301}
1302
1303/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301304 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1305 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301306 @param capabilityBitmap - Base address of a 4 element Bitmap array
1307 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301308 @see
1309 @returns None
1310 */
1311void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1312{
Abhishek Singh08b60122014-02-04 18:05:23 +05301313 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301314 char capStr[512];
1315 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301316 for (j = 0; j < 4; j++) {
1317 for (i = 0; i < 32; i++) {
1318 if ((*(capabilityBitmap + j) & (1 << i))) {
1319 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301320 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1321 pCapStr += strlen("MCC");
1322 break;
1323 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1324 pCapStr += strlen("P2P");
1325 break;
1326 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1327 pCapStr += strlen("DOT11AC");
1328 break;
1329 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1330 pCapStr += strlen("SLM_SESSIONIZATION");
1331 break;
1332 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1333 pCapStr += strlen("DOT11AC_OPMODE");
1334 break;
1335 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1336 pCapStr += strlen("SAP32STA");
1337 break;
1338 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1339 pCapStr += strlen("TDLS");
1340 break;
1341 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1342 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1343 break;
1344 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1345 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1346 break;
1347 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1348 pCapStr += strlen("BEACON_OFFLOAD");
1349 break;
1350 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1351 pCapStr += strlen("SCAN_OFFLOAD");
1352 break;
1353 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1354 pCapStr += strlen("ROAM_OFFLOAD");
1355 break;
1356 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1357 pCapStr += strlen("BCN_MISS_OFFLOAD");
1358 break;
1359 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1360 pCapStr += strlen("STA_POWERSAVE");
1361 break;
1362 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1363 pCapStr += strlen("AP_UAPSD");
1364 break;
1365 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1366 pCapStr += strlen("AP_DFS");
1367 break;
1368 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1369 pCapStr += strlen("BLOCKACK");
1370 break;
1371 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1372 pCapStr += strlen("PHY_ERR");
1373 break;
1374 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1375 pCapStr += strlen("BCN_FILTER");
1376 break;
1377 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1378 pCapStr += strlen("RTT");
1379 break;
1380 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1381 pCapStr += strlen("RATECTRL");
1382 break;
1383 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1384 pCapStr += strlen("WOW");
1385 break;
1386 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1387 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1388 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301389 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1390 pCapStr += strlen("FW_IN_TX_PATH");
1391 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301392 case HT40_OBSS_SCAN:
1393 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1394 "%s", "HT40_OBSS_SCAN");
1395 pCapStr += strlen("HT40_OBSS_SCAN");
1396 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301397 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1398 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1399 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1400 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1401 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301402 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1403 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1404 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301405 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1406 pCapStr += strlen("CH_SWITCH_V1");
1407 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301408#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1409 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1410 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1411 break;
1412#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301413#ifdef WLAN_FEATURE_EXTSCAN
1414 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1415 pCapStr += strlen("EXTENDED_SCAN");
1416 break;
1417#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301418 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1419 pCapStr += strlen("MU_MIMO");
1420 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301421
Mihir Shetec34258c2014-07-30 17:50:27 +05301422 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1423 pCapStr += strlen("DYNAMIC_WMM_PS");
1424 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301425 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1426 pCapStr += strlen("FW_STATS");
1427 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301428 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1429 pCapStr += strlen("MAC_SPOOFED_SCAN");
1430 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301431 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1432 pCapStr += strlen("WPS_PRBRSP_TMPL");
1433 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301434 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1435 pCapStr += strlen("BCN_IE_FLT_DELTA");
1436 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301437 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1438 pCapStr += strlen("MGMT_FRAME_LOGGING");
1439 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301440 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1441 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1442 break;
1443
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301444 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1445 pCapStr += strlen("DISA");
1446 break;
1447
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301448 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1449 pCapStr += strlen("TDLS_OFF_CHANNEL");
1450 break;
1451
Abhishek Singh08b60122014-02-04 18:05:23 +05301452 }
1453 *pCapStr++ = ',';
1454 *pCapStr++ = ' ';
1455 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301456 }
1457 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301458 pCapStr -= 2;
1459 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301460 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301462}
1463
1464/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001465 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001466
1467 @param halStatusId: HAL status Id
1468
1469 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 @return Result of the function call
1471*/
1472static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1473{
1474 switch (halStatusId)
1475 {
1476 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1477 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1478 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1479 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1480 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1481 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1482 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1483 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1484 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1485 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1486 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1487 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1488 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1489 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1490 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1491 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1492 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1493 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1494 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1495 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1496 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1497 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1498 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1499 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1500 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1501 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1502 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1503 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1504 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1505 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1506 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1507 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1508 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1509 default:
1510 return "Unknown HAL status";
1511 }
1512}
1513
Jeff Johnsone7245742012-09-05 17:12:55 -07001514/*========================================================================
1515
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001517
Jeff Johnson295189b2012-06-20 16:38:30 -07001518==========================================================================*/
1519
1520/**
1521 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001522
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 DAL will allocate all the resources it needs. It will open PAL, it will also
1524 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001525 DXE/SMD or any other drivers that they need.
1526
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301527 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 ppWDIGlobalCtx: output pointer of Global Context
1529 pWdiDevCapability: output pointer of device capability
1530
1531 @return Result of the function call
1532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001534WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001535(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301536 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001537 void** ppWDIGlobalCtx,
1538 WDI_DeviceCapabilityType* pWdiDevCapability,
1539 unsigned int driverType
1540)
1541{
1542 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001543 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001544 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001545 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1547
1548 /*---------------------------------------------------------------------
1549 Sanity check
1550 ---------------------------------------------------------------------*/
1551 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1552 {
1553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1554 "Invalid input parameters in WDI_Init");
1555
Jeff Johnsone7245742012-09-05 17:12:55 -07001556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001557 }
1558
1559 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001560 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001561 ---------------------------------------------------------------------*/
1562 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1563 {
1564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1565 "WDI module already initialized - return");
1566
Jeff Johnsone7245742012-09-05 17:12:55 -07001567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 }
1569
1570 /*Module is now initialized - this flag is to ensure the fact that multiple
1571 init will not happen on WDI
1572 !! - potential race does exist because read and set are not atomic,
1573 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001574 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001575
1576 /*Setup the control block */
1577 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301578 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001579
1580 /*Setup the STA Table*/
1581 wdiStatus = WDI_STATableInit(&gWDICb);
1582 if ( WDI_STATUS_SUCCESS != wdiStatus )
1583 {
1584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1585 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001586 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001587 goto fail_STATableInit;
1588 }
1589
1590 /*------------------------------------------------------------------------
1591 Open the PAL
1592 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301593 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001594 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1595 {
1596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1597 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001598 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 goto fail_wpalOpen;
1600 }
1601
1602 /*Initialize main synchro mutex - it will be used to ensure integrity of
1603 the main WDI Control Block*/
1604 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1605 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1606 {
1607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1608 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001609 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 goto fail_mutex;
1611 }
1612
1613 /*Initialize the response timer - it will be used to time all messages
1614 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001615 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1616 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001617 &gWDICb);
1618 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1619 {
1620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1621 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001622 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001623 goto fail_timer;
1624 }
1625
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001626 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1627 WDI_SsrTimerCB,
1628 &gWDICb);
1629 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1630 {
1631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1632 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001633 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001634 goto fail_timer2;
1635 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 /* Initialize the WDI Pending Request Queue*/
1637 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1638 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1639 {
1640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1641 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001642 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 goto fail_pend_queue;
1644 }
1645
1646 /*Init WDI Pending Assoc Id Queue */
1647 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1648 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1649 {
1650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1651 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001652 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 goto fail_assoc_queue;
1654 }
1655
1656 /*Initialize the BSS sessions pending Queue */
1657 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1658 {
1659 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1660 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1661 {
1662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1663 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001664 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001665 goto fail_bss_queue;
1666 }
1667 }
1668
1669 /*Indicate the control block is sufficiently initialized for callbacks*/
1670 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1671
1672 /*------------------------------------------------------------------------
1673 Initialize the Data Path Utility Module
1674 ------------------------------------------------------------------------*/
1675 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1676 if ( WDI_STATUS_SUCCESS != wdiStatus )
1677 {
1678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1679 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001680 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 goto fail_dp_util_init;
1682 }
1683
1684 /* Init Set power state event */
1685 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 {
1688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1689 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001690 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 goto fail_power_event;
1692 }
1693
1694 /* Init WCTS action event */
1695 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001696 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1699 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001700 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001701 goto fail_wcts_event;
1702 }
1703
1704 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001705 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 ------------------------------------------------------------------------*/
1707 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1708 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001709 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001710 wctsCBs.wctsRxMsgCBData = &gWDICb;
1711
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001714 WDI_CT_CHANNEL_SIZE,
1715 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001716
1717 if ( NULL == gWDICb.wctsHandle )
1718 {
1719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001720 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 goto fail_wcts_open;
1722 }
1723
1724 gWDICb.driverMode = (tDriverType)driverType;
1725 /* FTM mode not need to open Transport Driver */
1726 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 /*------------------------------------------------------------------------
1729 Open the Data Transport
1730 ------------------------------------------------------------------------*/
1731 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1732 {
1733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001734 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001735 goto fail_wdts_open;
1736 }
1737 }
1738
1739 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001740 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301741 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 /*Send the context as a ptr to the global WDI Control Block*/
1743 *ppWDIGlobalCtx = &gWDICb;
1744
1745 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1748 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1749 return WDI_STATUS_SUCCESS;
1750
1751 /* ERROR handlers
1752 Undo everything that completed successfully */
1753
1754 fail_wdts_open:
1755 {
1756 wpt_status eventStatus;
1757
1758 /* Closing WCTS in this scenario is tricky since it has to close
1759 the SMD channel and then we get notified asynchronously when
1760 the channel has been closed. So we take some of the logic from
1761 the "normal" close procedure in WDI_Close()
1762 */
1763
1764 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001765 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 {
1767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001768 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 }
1770
1771 WCTS_CloseTransport(gWDICb.wctsHandle);
1772
1773 /* Wait for WCTS to close the control transport. If we were able
1774 to reset the event flag, then we'll wait for the event,
1775 otherwise we'll wait for a maximum amount of time required for
1776 the channel to be closed */
1777 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001779 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001780 WDI_WCTS_ACTION_TIMEOUT);
1781 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1782 {
1783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001784 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 }
1786 }
1787 else
1788 {
1789 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1790 }
1791 }
1792 fail_wcts_open:
1793 wpalEventDelete(&gWDICb.wctsActionEvent);
1794 fail_wcts_event:
1795 wpalEventDelete(&gWDICb.setPowerStateEvent);
1796 fail_power_event:
1797 WDI_DP_UtilsExit(&gWDICb);
1798 fail_dp_util_init:
1799 gWDICb.magic = 0;
1800 fail_bss_queue:
1801 /* entries 0 thru i-1 were successfully initialized */
1802 while (0 < i)
1803 {
1804 i--;
1805 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1806 }
1807 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1808 fail_assoc_queue:
1809 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1810 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001811 wpalTimerDelete(&gWDICb.ssrTimer);
1812 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001813 wpalTimerDelete(&gWDICb.wptResponseTimer);
1814 fail_timer:
1815 wpalMutexDelete(&gWDICb.wptMutex);
1816 fail_mutex:
1817 wpalClose(gWDICb.pPALContext);
1818 fail_wpalOpen:
1819 WDI_STATableClose(&gWDICb);
1820 fail_STATableInit:
1821 gWDIInitialized = eWLAN_PAL_FALSE;
1822
1823 return WDI_STATUS_E_FAILURE;
1824
1825}/*WDI_Init*/;
1826
1827/**
1828 @brief WDI_Start will be called when the upper MAC is ready to
1829 commence operation with the WLAN Device. Upon the call
1830 of this API the WLAN DAL will pack and send a HAL Start
1831 message to the lower RIVA sub-system if the SMD channel
1832 has been fully opened and the RIVA subsystem is up.
1833
1834 If the RIVA sub-system is not yet up and running DAL
1835 will queue the request for Open and will wait for the
1836 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001837 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001838
1839 WDI_Init must have been called.
1840
Jeff Johnsone7245742012-09-05 17:12:55 -07001841 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001843
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 wdiStartRspCb: callback for passing back the response of
1845 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001846
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 callback
1849
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 @see WDI_Start
1851 @return Result of the function call
1852*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001854WDI_Start
1855(
1856 WDI_StartReqParamsType* pwdiStartParams,
1857 WDI_StartRspCb wdiStartRspCb,
1858 void* pUserData
1859)
1860{
1861 WDI_EventInfoType wdiEventData;
1862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1863
1864 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001865 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 ------------------------------------------------------------------------*/
1867 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1868 {
1869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1870 "WDI API call before module is initialized - Fail request");
1871
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 }
1874
1875 /*------------------------------------------------------------------------
1876 Fill in Event data and post to the Main FSM
1877 ------------------------------------------------------------------------*/
1878 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 wdiEventData.pEventData = pwdiStartParams;
1880 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1881 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 wdiEventData.pUserData = pUserData;
1883
1884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1885
1886}/*WDI_Start*/
1887
1888/**
1889 @brief WDI_Stop will be called when the upper MAC is ready to
1890 stop any operation with the WLAN Device. Upon the call
1891 of this API the WLAN DAL will pack and send a HAL Stop
1892 message to the lower RIVA sub-system if the DAL Core is
1893 in started state.
1894
1895 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001896
1897 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001898
1899 WDI_Start must have been called.
1900
Jeff Johnsone7245742012-09-05 17:12:55 -07001901 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001902 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001903
Jeff Johnson295189b2012-06-20 16:38:30 -07001904 wdiStopRspCb: callback for passing back the response of
1905 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001906
Jeff Johnson295189b2012-06-20 16:38:30 -07001907 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001908 callback
1909
Jeff Johnson295189b2012-06-20 16:38:30 -07001910 @see WDI_Start
1911 @return Result of the function call
1912*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001914WDI_Stop
1915(
1916 WDI_StopReqParamsType* pwdiStopParams,
1917 WDI_StopRspCb wdiStopRspCb,
1918 void* pUserData
1919)
1920{
1921 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001922 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1924
1925 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001926 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001927 ------------------------------------------------------------------------*/
1928 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1929 {
1930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1931 "WDI API call before module is initialized - Fail request");
1932
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 }
1935
Jeff Johnson43971f52012-07-17 12:26:56 -07001936 /*Access to the global state must be locked before cleaning */
1937 wpalMutexAcquire(&pWDICtx->wptMutex);
1938
1939 /*Clear all pending request*/
1940 WDI_ClearPendingRequests(pWDICtx);
1941
1942 /*We have completed cleaning unlock now*/
1943 wpalMutexRelease(&pWDICtx->wptMutex);
1944
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 /* Free the global variables */
1946 wpalMemoryFree(gpHostWlanFeatCaps);
1947 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001948 gpHostWlanFeatCaps = NULL;
1949 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001950
1951 /*------------------------------------------------------------------------
1952 Fill in Event data and post to the Main FSM
1953 ------------------------------------------------------------------------*/
1954 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001955 wdiEventData.pEventData = pwdiStopParams;
1956 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1957 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001958 wdiEventData.pUserData = pUserData;
1959
1960 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1961
1962}/*WDI_Stop*/
1963
1964
1965
1966/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001967 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001968 needs to interact with DAL. DAL will free its control
1969 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001970
1971 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001972
1973 WDI_Stop must have been called.
1974
1975 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 @see WDI_Stop
1978 @return Result of the function call
1979*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001980WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001981WDI_Close
1982(
1983 void
1984)
1985{
1986 wpt_uint8 i;
1987 WDI_EventInfoType wdiEventData;
1988 wpt_status wptStatus;
1989 wpt_status eventStatus;
1990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1991
1992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 ------------------------------------------------------------------------*/
1995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1996 {
1997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1998 "WDI API call before module is initialized - Fail request");
1999
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 }
2002
2003 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2004 (the control transport will be closed by the FSM and we'll want
2005 to wait until that completes)*/
2006 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002008 {
2009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002010 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002011 /* fall through and try to finish closing via the FSM */
2012 }
2013
2014 /*------------------------------------------------------------------------
2015 Fill in Event data and post to the Main FSM
2016 ------------------------------------------------------------------------*/
2017 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 wdiEventData.pEventData = NULL;
2019 wdiEventData.uEventDataSize = 0;
2020 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 wdiEventData.pUserData = NULL;
2022
2023 gWDIInitialized = eWLAN_PAL_FALSE;
2024
2025 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2026
2027 /*Wait for WCTS to close the control transport
2028 (but only if we were able to reset the event flag*/
2029 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002032 WDI_WCTS_ACTION_TIMEOUT);
2033 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2034 {
2035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002036 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002037 }
2038 }
2039
2040 /* Destroy the WCTS action event */
2041 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2042 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2043 {
2044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2045 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002047 }
2048
2049 /* Destroy the Set Power State event */
2050 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2051 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2052 {
2053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2054 "WDI Close failed to destroy an event");
2055
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 }
2058
2059 /*------------------------------------------------------------------------
2060 Closes the Data Path Utility Module
2061 ------------------------------------------------------------------------*/
2062 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2063 {
2064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2065 "WDI Init failed to close the DP Util Module");
2066
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002068 }
2069
2070 /*destroy the BSS sessions pending Queue */
2071 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2072 {
2073 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2074 }
2075
2076 /* destroy the WDI Pending Assoc Id Request Queue*/
2077 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2078
2079 /* destroy the WDI Pending Request Queue*/
2080 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002081
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 /*destroy the response timer */
2083 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2084
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002085 /*destroy the SSR timer */
2086 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2087
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 /*invalidate the main synchro mutex */
2089 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2090 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2091 {
2092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2093 "Failed to delete mutex %d", wptStatus);
2094 WDI_ASSERT(0);
2095 }
2096
2097 /*Clear control block. note that this will clear the "magic"
2098 which will inhibit all asynchronous callbacks*/
2099 WDI_CleanCB(&gWDICb);
2100
2101 return wptStatus;
2102
2103}/*WDI_Close*/
2104
2105/**
2106 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2107 This will do most of the WDI stop & close
2108 operations without doing any handshake with Riva
2109
2110 This will also make sure that the control transport
2111 will NOT be closed.
2112
2113 This request will not be queued.
2114
2115
2116 WDI_Start must have been called.
2117
2118 @param closeTransport: Close control channel if this is set
2119
2120 @return Result of the function call
2121*/
2122WDI_Status
2123WDI_Shutdown
2124(
2125 wpt_boolean closeTransport
2126)
2127{
2128 WDI_EventInfoType wdiEventData;
2129 wpt_status wptStatus;
2130 int i = 0;
2131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2132
2133 /*------------------------------------------------------------------------
2134 Sanity Check
2135 ------------------------------------------------------------------------*/
2136 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2137 {
2138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2139 "WDI API call before module is initialized - Fail request");
2140
2141 return WDI_STATUS_E_NOT_ALLOWED;
2142 }
2143
2144 /*------------------------------------------------------------------------
2145 Fill in Event data and post to the Main FSM
2146 ------------------------------------------------------------------------*/
2147 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2148 wdiEventData.pEventData = NULL;
2149 wdiEventData.uEventDataSize = 0;
2150
2151 /* Shutdown will not be queued, if the state is busy timer will be
2152 * stopped & this message will be processed.*/
2153 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2154 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2155 {
2156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002157 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 }
2159 /* Destroy the Set Power State event */
2160 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2161 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2162 {
2163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2164 "WDI Close failed to destroy an event");
2165
2166 WDI_ASSERT(0);
2167 }
2168 /*------------------------------------------------------------------------
2169 Closes the Data Path Utility Module
2170 ------------------------------------------------------------------------*/
2171 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2172 {
2173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2174 "WDI Init failed to close the DP Util Module");
2175
2176 WDI_ASSERT(0);
2177 }
2178 if ( closeTransport )
2179 {
2180 /* Close control transport, called from module unload */
2181 WCTS_CloseTransport(gWDICb.wctsHandle);
2182 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002183 else
2184 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002185 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002186 the pending messages in the transport queue */
2187 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2188 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002189 /*destroy the BSS sessions pending Queue */
2190 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2191 {
2192 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2193 }
2194
2195 /* destroy the WDI Pending Assoc Id Request Queue*/
2196 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2197 /* destroy the WDI Pending Request Queue*/
2198 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2199 /*destroy the response timer */
2200 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002201 /*destroy the SSR timer */
2202 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002203
2204 /*invalidate the main synchro mutex */
2205 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2206 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2207 {
2208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002209 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 WDI_ASSERT(0);
2211 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002212 /* Free the global variables */
2213 wpalMemoryFree(gpHostWlanFeatCaps);
2214 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002215 gpHostWlanFeatCaps = NULL;
2216 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 /*Clear control block. note that this will clear the "magic"
2218 which will inhibit all asynchronous callbacks*/
2219 WDI_CleanCB(&gWDICb);
2220 return wptStatus;
2221
2222}/*WDI_Shutdown*/
2223
2224
Jeff Johnsone7245742012-09-05 17:12:55 -07002225/*========================================================================
2226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002228
Jeff Johnson295189b2012-06-20 16:38:30 -07002229==========================================================================*/
2230
2231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002232 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002233 the WLAN Device to get ready for a scan procedure. Upon
2234 the call of this API the WLAN DAL will pack and send a
2235 HAL Init Scan request message to the lower RIVA
2236 sub-system if DAL is in state STARTED.
2237
2238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002240
2241 WDI_Start must have been called.
2242
2243 @param wdiInitScanParams: the init scan parameters as specified
2244 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002245
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 wdiInitScanRspCb: callback for passing back the response
2247 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002248
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 callback
2251
Jeff Johnson295189b2012-06-20 16:38:30 -07002252 @see WDI_Start
2253 @return Result of the function call
2254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002256WDI_InitScanReq
2257(
2258 WDI_InitScanReqParamsType* pwdiInitScanParams,
2259 WDI_InitScanRspCb wdiInitScanRspCb,
2260 void* pUserData
2261)
2262{
2263 WDI_EventInfoType wdiEventData;
2264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2265
2266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002268 ------------------------------------------------------------------------*/
2269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2270 {
2271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2272 "WDI API call before module is initialized - Fail request");
2273
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 }
2276
2277 /*------------------------------------------------------------------------
2278 Fill in Event data and post to the Main FSM
2279 ------------------------------------------------------------------------*/
2280 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 wdiEventData.pEventData = pwdiInitScanParams;
2282 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2283 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002284 wdiEventData.pUserData = pUserData;
2285
2286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2287
2288}/*WDI_InitScanReq*/
2289
2290/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 wishes to change the Scan channel on the WLAN Device.
2293 Upon the call of this API the WLAN DAL will pack and
2294 send a HAL Start Scan request message to the lower RIVA
2295 sub-system if DAL is in state STARTED.
2296
2297 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002299
2300 WDI_InitScanReq must have been called.
2301
Jeff Johnsone7245742012-09-05 17:12:55 -07002302 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002303 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 wdiStartScanRspCb: callback for passing back the
2306 response of the start scan operation received from the
2307 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002308
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 callback
2311
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 @see WDI_InitScanReq
2313 @return Result of the function call
2314*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002316WDI_StartScanReq
2317(
2318 WDI_StartScanReqParamsType* pwdiStartScanParams,
2319 WDI_StartScanRspCb wdiStartScanRspCb,
2320 void* pUserData
2321)
2322{
2323 WDI_EventInfoType wdiEventData;
2324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2325
2326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 ------------------------------------------------------------------------*/
2329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2330 {
2331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2332 "WDI API call before module is initialized - Fail request");
2333
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 }
2336
2337 /*------------------------------------------------------------------------
2338 Fill in Event data and post to the Main FSM
2339 ------------------------------------------------------------------------*/
2340 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 wdiEventData.pEventData = pwdiStartScanParams;
2342 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2343 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 wdiEventData.pUserData = pUserData;
2345
2346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2347
2348}/*WDI_StartScanReq*/
2349
2350
2351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002352 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 wants to end scanning for a particular channel that it
2354 had set before by calling Scan Start on the WLAN Device.
2355 Upon the call of this API the WLAN DAL will pack and
2356 send a HAL End Scan request message to the lower RIVA
2357 sub-system if DAL is in state STARTED.
2358
2359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002361
2362 WDI_StartScanReq must have been called.
2363
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 wdiEndScanRspCb: callback for passing back the response
2368 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002369
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 callback
2372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 @see WDI_StartScanReq
2374 @return Result of the function call
2375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002377WDI_EndScanReq
2378(
2379 WDI_EndScanReqParamsType* pwdiEndScanParams,
2380 WDI_EndScanRspCb wdiEndScanRspCb,
2381 void* pUserData
2382)
2383{
2384 WDI_EventInfoType wdiEventData;
2385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2386
2387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 ------------------------------------------------------------------------*/
2390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2391 {
2392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2393 "WDI API call before module is initialized - Fail request");
2394
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 }
2397
2398 /*------------------------------------------------------------------------
2399 Fill in Event data and post to the Main FSM
2400 ------------------------------------------------------------------------*/
2401 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 wdiEventData.pEventData = pwdiEndScanParams;
2403 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2404 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEventData.pUserData = pUserData;
2406
2407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2408
2409}/*WDI_EndScanReq*/
2410
2411
2412/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 completed the scan process on the WLAN Device. Upon the
2415 call of this API the WLAN DAL will pack and send a HAL
2416 Finish Scan Request request message to the lower RIVA
2417 sub-system if DAL is in state STARTED.
2418
2419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002421
2422 WDI_InitScanReq must have been called.
2423
Jeff Johnsone7245742012-09-05 17:12:55 -07002424 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002425 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002426
Jeff Johnson295189b2012-06-20 16:38:30 -07002427 wdiFinishScanRspCb: callback for passing back the
2428 response of the finish scan operation received from the
2429 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002430
Jeff Johnson295189b2012-06-20 16:38:30 -07002431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 callback
2433
Jeff Johnson295189b2012-06-20 16:38:30 -07002434 @see WDI_InitScanReq
2435 @return Result of the function call
2436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002438WDI_FinishScanReq
2439(
2440 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2441 WDI_FinishScanRspCb wdiFinishScanRspCb,
2442 void* pUserData
2443)
2444{
2445 WDI_EventInfoType wdiEventData;
2446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2447
2448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002450 ------------------------------------------------------------------------*/
2451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2452 {
2453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2454 "WDI API call before module is initialized - Fail request");
2455
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 }
2458
2459 /*------------------------------------------------------------------------
2460 Fill in Event data and post to the Main FSM
2461 ------------------------------------------------------------------------*/
2462 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 wdiEventData.pEventData = pwdiFinishScanParams;
2464 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2465 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 wdiEventData.pUserData = pUserData;
2467
2468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2469
2470}/*WDI_FinishScanReq*/
2471
Jeff Johnsone7245742012-09-05 17:12:55 -07002472/*========================================================================
2473
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002475
Jeff Johnson295189b2012-06-20 16:38:30 -07002476==========================================================================*/
2477
2478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002479 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002480 to start an association procedure to a BSS. Upon the
2481 call of this API the WLAN DAL will pack and send a HAL
2482 Join request message to the lower RIVA sub-system if
2483 DAL is in state STARTED.
2484
2485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002487
2488 WDI_Start must have been called.
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 wdiJoinRspCb: callback for passing back the response of
2494 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002495
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 callback
2498
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 @see WDI_Start
2500 @return Result of the function call
2501*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002502WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002503WDI_JoinReq
2504(
2505 WDI_JoinReqParamsType* pwdiJoinParams,
2506 WDI_JoinRspCb wdiJoinRspCb,
2507 void* pUserData
2508)
2509{
2510 WDI_EventInfoType wdiEventData;
2511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2512
2513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 ------------------------------------------------------------------------*/
2516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2517 {
2518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2519 "WDI API call before module is initialized - Fail request");
2520
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 }
2523
2524 /*------------------------------------------------------------------------
2525 Fill in Event data and post to the Main FSM
2526 ------------------------------------------------------------------------*/
2527 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 wdiEventData.pEventData = pwdiJoinParams;
2529 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2530 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiEventData.pUserData = pUserData;
2532
2533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2534
2535}/*WDI_JoinReq*/
2536
2537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002538 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 wishes to configure the newly acquired or in process of
2540 being acquired BSS to the HW . Upon the call of this API
2541 the WLAN DAL will pack and send a HAL Config BSS request
2542 message to the lower RIVA sub-system if DAL is in state
2543 STARTED.
2544
2545 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002547
2548 WDI_JoinReq must have been called.
2549
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002552
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 wdiConfigBSSRspCb: callback for passing back the
2554 response of the config BSS operation received from the
2555 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002556
Jeff Johnson295189b2012-06-20 16:38:30 -07002557 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002558 callback
2559
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 @see WDI_JoinReq
2561 @return Result of the function call
2562*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002563WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002564WDI_ConfigBSSReq
2565(
2566 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2567 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2568 void* pUserData
2569)
2570{
2571 WDI_EventInfoType wdiEventData;
2572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2573
2574 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002575 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 ------------------------------------------------------------------------*/
2577 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2578 {
2579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2580 "WDI API call before module is initialized - Fail request");
2581
Jeff Johnsone7245742012-09-05 17:12:55 -07002582 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002583 }
2584
2585 /*------------------------------------------------------------------------
2586 Fill in Event data and post to the Main FSM
2587 ------------------------------------------------------------------------*/
2588 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 wdiEventData.pEventData = pwdiConfigBSSParams;
2590 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2591 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 wdiEventData.pUserData = pUserData;
2593
2594 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2595
2596}/*WDI_ConfigBSSReq*/
2597
2598/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 disassociating from the BSS and wishes to notify HW.
2601 Upon the call of this API the WLAN DAL will pack and
2602 send a HAL Del BSS request message to the lower RIVA
2603 sub-system if DAL is in state STARTED.
2604
2605 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002607
2608 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2609
Jeff Johnsone7245742012-09-05 17:12:55 -07002610 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002611 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 wdiDelBSSRspCb: callback for passing back the response
2614 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002615
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 callback
2618
2619 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 @return Result of the function call
2621*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002622WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002623WDI_DelBSSReq
2624(
2625 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2626 WDI_DelBSSRspCb wdiDelBSSRspCb,
2627 void* pUserData
2628)
2629{
2630 WDI_EventInfoType wdiEventData;
2631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2632
2633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 ------------------------------------------------------------------------*/
2636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2637 {
2638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2639 "WDI API call before module is initialized - Fail request");
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 }
2643
2644 /*------------------------------------------------------------------------
2645 Fill in Event data and post to the Main FSM
2646 ------------------------------------------------------------------------*/
2647 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 wdiEventData.pEventData = pwdiDelBSSParams;
2649 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2650 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiEventData.pUserData = pUserData;
2652
2653 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2654
2655}/*WDI_DelBSSReq*/
2656
2657/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 associated to a BSS and wishes to configure HW for
2660 associated state. Upon the call of this API the WLAN DAL
2661 will pack and send a HAL Post Assoc request message to
2662 the lower RIVA sub-system if DAL is in state STARTED.
2663
2664 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002666
2667 WDI_JoinReq must have been called.
2668
2669 @param wdiPostAssocReqParams: the assoc parameters as specified
2670 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002671
Jeff Johnson295189b2012-06-20 16:38:30 -07002672 wdiPostAssocRspCb: callback for passing back the
2673 response of the post assoc operation received from the
2674 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002675
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 callback
2678
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 @see WDI_JoinReq
2680 @return Result of the function call
2681*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002682WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002683WDI_PostAssocReq
2684(
2685 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2686 WDI_PostAssocRspCb wdiPostAssocRspCb,
2687 void* pUserData
2688)
2689{
2690 WDI_EventInfoType wdiEventData;
2691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2692
2693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002695 ------------------------------------------------------------------------*/
2696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2697 {
2698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2699 "WDI API call before module is initialized - Fail request");
2700
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 }
2703
2704 /*------------------------------------------------------------------------
2705 Fill in Event data and post to the Main FSM
2706 ------------------------------------------------------------------------*/
2707 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 wdiEventData.pEventData = pwdiPostAssocReqParams;
2709 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2710 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 wdiEventData.pUserData = pUserData;
2712
2713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2714
2715}/*WDI_PostAssocReq*/
2716
2717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002719 association with another STA has ended and the station
2720 must be deleted from HW. Upon the call of this API the
2721 WLAN DAL will pack and send a HAL Del STA request
2722 message to the lower RIVA sub-system if DAL is in state
2723 STARTED.
2724
2725 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002726 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002727
2728 WDI_PostAssocReq must have been called.
2729
Jeff Johnsone7245742012-09-05 17:12:55 -07002730 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002731 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002732
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 wdiDelSTARspCb: callback for passing back the response
2734 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002735
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 callback
2738
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 @see WDI_PostAssocReq
2740 @return Result of the function call
2741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002743WDI_DelSTAReq
2744(
2745 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2746 WDI_DelSTARspCb wdiDelSTARspCb,
2747 void* pUserData
2748)
2749{
2750 WDI_EventInfoType wdiEventData;
2751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2752
2753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 ------------------------------------------------------------------------*/
2756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2757 {
2758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2759 "WDI API call before module is initialized - Fail request");
2760
Jeff Johnsone7245742012-09-05 17:12:55 -07002761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 }
2763
2764 /*------------------------------------------------------------------------
2765 Fill in Event data and post to the Main FSM
2766 ------------------------------------------------------------------------*/
2767 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 wdiEventData.pEventData = pwdiDelSTAParams;
2769 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2770 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 wdiEventData.pUserData = pUserData;
2772
2773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2774
2775}/*WDI_DelSTAReq*/
2776
Jeff Johnsone7245742012-09-05 17:12:55 -07002777/*========================================================================
2778
Jeff Johnson295189b2012-06-20 16:38:30 -07002779 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002780
Jeff Johnson295189b2012-06-20 16:38:30 -07002781==========================================================================*/
2782
2783/**
2784 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2785 install a BSS encryption key on the HW. Upon the call of this
2786 API the WLAN DAL will pack and send a Set BSS Key request
2787 message to the lower RIVA sub-system if DAL is in state
2788 STARTED.
2789
2790 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002792
2793 WDI_PostAssocReq must have been called.
2794
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002797
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 wdiSetBSSKeyRspCb: callback for passing back the
2799 response of the set BSS Key operation received from the
2800 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002801
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002803 callback
2804
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 @see WDI_PostAssocReq
2806 @return Result of the function call
2807*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002808WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002809WDI_SetBSSKeyReq
2810(
2811 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2812 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2813 void* pUserData
2814)
2815{
2816 WDI_EventInfoType wdiEventData;
2817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2818
2819 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002820 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002821 ------------------------------------------------------------------------*/
2822 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2823 {
2824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2825 "WDI API call before module is initialized - Fail request");
2826
Jeff Johnsone7245742012-09-05 17:12:55 -07002827 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002828 }
2829
2830 /*------------------------------------------------------------------------
2831 Fill in Event data and post to the Main FSM
2832 ------------------------------------------------------------------------*/
2833 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2835 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2836 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 wdiEventData.pUserData = pUserData;
2838
2839 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2840
2841}/*WDI_SetBSSKeyReq*/
2842
2843/**
2844 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2845 uninstall a BSS key from HW. Upon the call of this API the
2846 WLAN DAL will pack and send a HAL Remove BSS Key request
2847 message to the lower RIVA sub-system if DAL is in state
2848 STARTED.
2849
2850 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002852
2853 WDI_SetBSSKeyReq must have been called.
2854
Jeff Johnsone7245742012-09-05 17:12:55 -07002855 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002856 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002857
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 wdiRemoveBSSKeyRspCb: callback for passing back the
2859 response of the remove BSS key operation received from
2860 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002861
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 callback
2864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 @see WDI_SetBSSKeyReq
2866 @return Result of the function call
2867*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002869WDI_RemoveBSSKeyReq
2870(
2871 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2872 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2873 void* pUserData
2874)
2875{
2876 WDI_EventInfoType wdiEventData;
2877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2878
2879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002880 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 ------------------------------------------------------------------------*/
2882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2883 {
2884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2885 "WDI API call before module is initialized - Fail request");
2886
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 }
2889
2890 /*------------------------------------------------------------------------
2891 Fill in Event data and post to the Main FSM
2892 ------------------------------------------------------------------------*/
2893 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2895 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2896 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 wdiEventData.pUserData = pUserData;
2898
2899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2900
2901}/*WDI_RemoveBSSKeyReq*/
2902
2903
2904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 ready to install a STA(ast) encryption key in HW. Upon
2907 the call of this API the WLAN DAL will pack and send a
2908 HAL Set STA Key request message to the lower RIVA
2909 sub-system if DAL is in state STARTED.
2910
2911 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002913
2914 WDI_PostAssocReq must have been called.
2915
Jeff Johnsone7245742012-09-05 17:12:55 -07002916 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002917 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002918
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 wdiSetSTAKeyRspCb: callback for passing back the
2920 response of the set STA key operation received from the
2921 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002922
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002924 callback
2925
Jeff Johnson295189b2012-06-20 16:38:30 -07002926 @see WDI_PostAssocReq
2927 @return Result of the function call
2928*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002929WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002930WDI_SetSTAKeyReq
2931(
2932 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2933 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2934 void* pUserData
2935)
2936{
2937 WDI_EventInfoType wdiEventData;
2938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2939
2940 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 ------------------------------------------------------------------------*/
2943 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2944 {
2945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2946 "WDI API call before module is initialized - Fail request");
2947
Jeff Johnsone7245742012-09-05 17:12:55 -07002948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 }
2950
2951 /*------------------------------------------------------------------------
2952 Fill in Event data and post to the Main FSM
2953 ------------------------------------------------------------------------*/
2954 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2956 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2957 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 wdiEventData.pUserData = pUserData;
2959
2960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2961
2962}/*WDI_SetSTAKeyReq*/
2963
2964
2965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 wants to uninstall a previously set STA key in HW. Upon
2968 the call of this API the WLAN DAL will pack and send a
2969 HAL Remove STA Key request message to the lower RIVA
2970 sub-system if DAL is in state STARTED.
2971
2972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002974
2975 WDI_SetSTAKeyReq must have been called.
2976
Jeff Johnsone7245742012-09-05 17:12:55 -07002977 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002978 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002979
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 wdiRemoveSTAKeyRspCb: callback for passing back the
2981 response of the remove STA key operation received from
2982 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002983
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002985 callback
2986
Jeff Johnson295189b2012-06-20 16:38:30 -07002987 @see WDI_SetSTAKeyReq
2988 @return Result of the function call
2989*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002991WDI_RemoveSTAKeyReq
2992(
2993 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2994 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2995 void* pUserData
2996)
2997{
2998 WDI_EventInfoType wdiEventData;
2999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3000
3001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 ------------------------------------------------------------------------*/
3004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3005 {
3006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3007 "WDI API call before module is initialized - Fail request");
3008
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 }
3011
3012 /*------------------------------------------------------------------------
3013 Fill in Event data and post to the Main FSM
3014 ------------------------------------------------------------------------*/
3015 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3017 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3018 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 wdiEventData.pUserData = pUserData;
3020
3021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3022
3023}/*WDI_RemoveSTAKeyReq*/
3024
3025
3026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 wants to install a STA Bcast encryption key on the HW.
3029 Upon the call of this API the WLAN DAL will pack and
3030 send a HAL Start request message to the lower RIVA
3031 sub-system if DAL is in state STARTED.
3032
3033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003035
3036 WDI_PostAssocReq must have been called.
3037
Jeff Johnsone7245742012-09-05 17:12:55 -07003038 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003039 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003040
Jeff Johnson295189b2012-06-20 16:38:30 -07003041 wdiSetSTABcastKeyRspCb: callback for passing back the
3042 response of the set BSS Key operation received from the
3043 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003044
Jeff Johnson295189b2012-06-20 16:38:30 -07003045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003046 callback
3047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 @see WDI_PostAssocReq
3049 @return Result of the function call
3050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003052WDI_SetSTABcastKeyReq
3053(
3054 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3055 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3056 void* pUserData
3057)
3058
3059{
3060 WDI_EventInfoType wdiEventData;
3061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3062
3063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 ------------------------------------------------------------------------*/
3066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3067 {
3068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3069 "WDI API call before module is initialized - Fail request");
3070
Jeff Johnsone7245742012-09-05 17:12:55 -07003071 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 }
3073
3074 /*------------------------------------------------------------------------
3075 Fill in Event data and post to the Main FSM
3076 ------------------------------------------------------------------------*/
3077 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3079 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3080 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003081 wdiEventData.pUserData = pUserData;
3082
3083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3084
3085}/*WDI_SetSTABcastKeyReq*/
3086
3087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003088 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003089 MAC wants to uninstall a STA Bcast key from HW. Upon the
3090 call of this API the WLAN DAL will pack and send a HAL
3091 Remove STA Bcast Key request message to the lower RIVA
3092 sub-system if DAL is in state STARTED.
3093
3094 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003095 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003096
3097 WDI_SetSTABcastKeyReq must have been called.
3098
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003100 parameters as specified by the Device
3101 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3104 response of the remove STA Bcast key operation received
3105 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003106
Jeff Johnson295189b2012-06-20 16:38:30 -07003107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 callback
3109
Jeff Johnson295189b2012-06-20 16:38:30 -07003110 @see WDI_SetSTABcastKeyReq
3111 @return Result of the function call
3112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003114WDI_RemoveSTABcastKeyReq
3115(
3116 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3117 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3118 void* pUserData
3119)
3120{
3121 WDI_EventInfoType wdiEventData;
3122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3123
3124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 ------------------------------------------------------------------------*/
3127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3128 {
3129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3130 "WDI API call before module is initialized - Fail request");
3131
Jeff Johnsone7245742012-09-05 17:12:55 -07003132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 }
3134
3135 /*------------------------------------------------------------------------
3136 Fill in Event data and post to the Main FSM
3137 ------------------------------------------------------------------------*/
3138 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3140 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3141 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 wdiEventData.pUserData = pUserData;
3143
3144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3145
3146}/*WDI_RemoveSTABcastKeyReq*/
3147
3148/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 MAC wants to set Max Tx Power to HW. Upon the
3151 call of this API the WLAN DAL will pack and send a HAL
3152 Remove STA Bcast Key request message to the lower RIVA
3153 sub-system if DAL is in state STARTED.
3154
3155 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003157
3158 WDI_SetSTABcastKeyReq must have been called.
3159
Jeff Johnsone7245742012-09-05 17:12:55 -07003160 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 parameters as specified by the Device
3162 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003163
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3165 response of the remove STA Bcast key operation received
3166 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003169 callback
3170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 @see WDI_SetMaxTxPowerReq
3172 @return Result of the function call
3173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003175WDI_SetMaxTxPowerReq
3176(
3177 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3178 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3179 void* pUserData
3180)
3181{
3182 WDI_EventInfoType wdiEventData;
3183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3184
3185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 ------------------------------------------------------------------------*/
3188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3189 {
3190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3191 "WDI API call before module is initialized - Fail request");
3192
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 }
3195
3196 /*------------------------------------------------------------------------
3197 Fill in Event data and post to the Main FSM
3198 ------------------------------------------------------------------------*/
3199 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003200 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3201 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3202 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 wdiEventData.pUserData = pUserData;
3204
3205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3206}
3207
schang86c22c42013-03-13 18:41:24 -07003208/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003209 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3210 MAC wants to set Max Tx Power to HW for specific band.
3211
3212 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3213
3214 wdiReqStatusCb: callback for passing back the
3215 response msg from the device
3216
3217 pUserData: user data will be passed back with the
3218 callback
3219
3220 @see WDI_SetMaxTxPowerPerBandReq
3221 @return Result of the function call
3222*/
3223WDI_Status
3224WDI_SetMaxTxPowerPerBandReq
3225(
3226 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3227 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3228 void* pUserData
3229)
3230{
3231 WDI_EventInfoType wdiEventData;
3232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3233
3234 /*------------------------------------------------------------------------
3235 Sanity Check
3236 ------------------------------------------------------------------------*/
3237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3238 {
3239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3240 "WDI API call before module is initialized - Fail request");
3241
3242 return WDI_STATUS_E_NOT_ALLOWED;
3243 }
3244
3245 /*------------------------------------------------------------------------
3246 Fill in Event data and post to the Main FSM
3247 ------------------------------------------------------------------------*/
3248 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3249 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3250 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3251 wdiEventData.pCBfnc = wdiReqStatusCb;
3252 wdiEventData.pUserData = pUserData;
3253
3254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3255}
3256
3257/**
schang86c22c42013-03-13 18:41:24 -07003258 @brief WDI_SetTxPowerReq will be called when the upper
3259 MAC wants to set Tx Power to HW.
3260 In state BUSY this request will be queued. Request won't
3261 be allowed in any other state.
3262
3263
3264 @param pwdiSetTxPowerParams: set TS Power parameters
3265 BSSID and target TX Power with dbm included
3266
3267 wdiReqStatusCb: callback for passing back the response
3268
3269 pUserData: user data will be passed back with the
3270 callback
3271
3272 @return Result of the function call
3273*/
3274WDI_Status
3275WDI_SetTxPowerReq
3276(
3277 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3278 WDA_SetTxPowerRspCb wdiReqStatusCb,
3279 void* pUserData
3280)
3281{
3282 WDI_EventInfoType wdiEventData;
3283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3284
3285 /*------------------------------------------------------------------------
3286 Sanity Check
3287 ------------------------------------------------------------------------*/
3288 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3289 {
3290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3291 "WDI API call before module is initialized - Fail request");
3292
3293 return WDI_STATUS_E_NOT_ALLOWED;
3294 }
3295
3296 /*------------------------------------------------------------------------
3297 Fill in Event data and post to the Main FSM
3298 ------------------------------------------------------------------------*/
3299 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3300 wdiEventData.pEventData = pwdiSetTxPowerParams;
3301 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3302 wdiEventData.pCBfnc = wdiReqStatusCb;
3303 wdiEventData.pUserData = pUserData;
3304
3305 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3306}
3307
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003308#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003309WDI_Status
3310WDI_TSMStatsReq
3311(
3312 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3313 WDI_TsmRspCb wdiReqStatusCb,
3314 void* pUserData
3315)
3316{
3317 WDI_EventInfoType wdiEventData;
3318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003319 /*------------------------------------------------------------------------
3320 Sanity Check
3321 ------------------------------------------------------------------------*/
3322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3323 {
3324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3325 "WDI API call before module is initialized - Fail request");
3326
3327 return WDI_STATUS_E_NOT_ALLOWED;
3328 }
3329
3330 /*------------------------------------------------------------------------
3331 Fill in Event data and post to the Main FSM
3332 ------------------------------------------------------------------------*/
3333 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3334 wdiEventData.pEventData = pwdiTsmReqParams;
3335 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3336 wdiEventData.pCBfnc = wdiReqStatusCb;
3337 wdiEventData.pUserData = pUserData;
3338
3339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3340
3341}
3342#endif
3343
3344/*========================================================================
3345
3346 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348==========================================================================*/
3349
3350/**
3351 @brief WDI_AddTSReq will be called when the upper MAC to inform
3352 the device of a successful add TSpec negotiation. HW
3353 needs to receive the TSpec Info from the UMAC in order
3354 to configure properly the QoS data traffic. Upon the
3355 call of this API the WLAN DAL will pack and send a HAL
3356 Add TS request message to the lower RIVA sub-system if
3357 DAL is in state STARTED.
3358
3359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003361
3362 WDI_PostAssocReq must have been called.
3363
3364 @param wdiAddTsReqParams: the add TS parameters as specified by
3365 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003366
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 wdiAddTsRspCb: callback for passing back the response of
3368 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003369
Jeff Johnson295189b2012-06-20 16:38:30 -07003370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003371 callback
3372
Jeff Johnson295189b2012-06-20 16:38:30 -07003373 @see WDI_PostAssocReq
3374 @return Result of the function call
3375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003377WDI_AddTSReq
3378(
3379 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3380 WDI_AddTsRspCb wdiAddTsRspCb,
3381 void* pUserData
3382)
3383{
3384 WDI_EventInfoType wdiEventData;
3385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3386
3387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 ------------------------------------------------------------------------*/
3390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3391 {
3392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3393 "WDI API call before module is initialized - Fail request");
3394
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 }
3397
3398 /*------------------------------------------------------------------------
3399 Fill in Event data and post to the Main FSM
3400 ------------------------------------------------------------------------*/
3401 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003402 wdiEventData.pEventData = pwdiAddTsReqParams;
3403 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3404 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 wdiEventData.pUserData = pUserData;
3406
3407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3408
3409}/*WDI_AddTSReq*/
3410
3411
3412
3413/**
3414 @brief WDI_DelTSReq will be called when the upper MAC has ended
3415 admission on a specific AC. This is to inform HW that
3416 QoS traffic parameters must be rest. Upon the call of
3417 this API the WLAN DAL will pack and send a HAL Del TS
3418 request message to the lower RIVA sub-system if DAL is
3419 in state STARTED.
3420
3421 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003423
3424 WDI_AddTSReq must have been called.
3425
3426 @param wdiDelTsReqParams: the del TS parameters as specified by
3427 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003428
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 wdiDelTsRspCb: callback for passing back the response of
3430 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003431
Jeff Johnson295189b2012-06-20 16:38:30 -07003432 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 callback
3434
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 @see WDI_AddTSReq
3436 @return Result of the function call
3437*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003438WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003439WDI_DelTSReq
3440(
3441 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3442 WDI_DelTsRspCb wdiDelTsRspCb,
3443 void* pUserData
3444)
3445{
3446 WDI_EventInfoType wdiEventData;
3447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3448
3449 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 ------------------------------------------------------------------------*/
3452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3453 {
3454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3455 "WDI API call before module is initialized - Fail request");
3456
Jeff Johnsone7245742012-09-05 17:12:55 -07003457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003458 }
3459
3460 /*------------------------------------------------------------------------
3461 Fill in Event data and post to the Main FSM
3462 ------------------------------------------------------------------------*/
3463 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 wdiEventData.pEventData = pwdiDelTsReqParams;
3465 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3466 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 wdiEventData.pUserData = pUserData;
3468
3469 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3470
3471}/*WDI_DelTSReq*/
3472
3473
3474
3475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 wishes to update the EDCA parameters used by HW for QoS
3478 data traffic. Upon the call of this API the WLAN DAL
3479 will pack and send a HAL Update EDCA Params request
3480 message to the lower RIVA sub-system if DAL is in state
3481 STARTED.
3482
3483 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003484 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003485
3486 WDI_PostAssocReq must have been called.
3487
Jeff Johnsone7245742012-09-05 17:12:55 -07003488 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003490
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 wdiUpdateEDCAParamsRspCb: callback for passing back the
3492 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003493
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003495 callback
3496
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 @see WDI_PostAssocReq
3498 @return Result of the function call
3499*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003500WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003501WDI_UpdateEDCAParams
3502(
3503 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3504 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3505 void* pUserData
3506)
3507{
3508 WDI_EventInfoType wdiEventData;
3509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3510
3511 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003512 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 ------------------------------------------------------------------------*/
3514 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3515 {
3516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3517 "WDI API call before module is initialized - Fail request");
3518
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003520 }
3521
3522 /*------------------------------------------------------------------------
3523 Fill in Event data and post to the Main FSM
3524 ------------------------------------------------------------------------*/
3525 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003526 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3527 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3528 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003529 wdiEventData.pUserData = pUserData;
3530
3531 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3532
3533}/*WDI_UpdateEDCAParams*/
3534
3535
3536/**
3537 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3538 successfully a BA session and needs to notify the HW for
3539 the appropriate settings to take place. Upon the call of
3540 this API the WLAN DAL will pack and send a HAL Add BA
3541 request message to the lower RIVA sub-system if DAL is
3542 in state STARTED.
3543
3544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003546
3547 WDI_PostAssocReq must have been called.
3548
3549 @param wdiAddBAReqParams: the add BA parameters as specified by
3550 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 wdiAddBARspCb: callback for passing back the response of
3553 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003554
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003556 callback
3557
Jeff Johnson295189b2012-06-20 16:38:30 -07003558 @see WDI_PostAssocReq
3559 @return Result of the function call
3560*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003561WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003562WDI_AddBASessionReq
3563(
3564 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3565 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3566 void* pUserData
3567)
3568{
3569 WDI_EventInfoType wdiEventData;
3570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3571
3572 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003574 ------------------------------------------------------------------------*/
3575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3576 {
3577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3578 "WDI API call before module is initialized - Fail request");
3579
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 }
3582
3583 /*------------------------------------------------------------------------
3584 Fill in Event data and post to the Main FSM
3585 ------------------------------------------------------------------------*/
3586 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3588 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3589 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003590 wdiEventData.pUserData = pUserData;
3591
3592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3593
3594}/*WDI_AddBASessionReq*/
3595
3596/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 inform HW that it has deleted a previously created BA
3599 session. Upon the call of this API the WLAN DAL will
3600 pack and send a HAL Del BA request message to the lower
3601 RIVA sub-system if DAL is in state STARTED.
3602
3603 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003605
3606 WDI_AddBAReq must have been called.
3607
3608 @param wdiDelBAReqParams: the del BA parameters as specified by
3609 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003610
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 wdiDelBARspCb: callback for passing back the response of
3612 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003613
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003615 callback
3616
Jeff Johnson295189b2012-06-20 16:38:30 -07003617 @see WDI_AddBAReq
3618 @return Result of the function call
3619*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003620WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003621WDI_DelBAReq
3622(
3623 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3624 WDI_DelBARspCb wdiDelBARspCb,
3625 void* pUserData
3626)
3627{
3628 WDI_EventInfoType wdiEventData;
3629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3630
3631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003632 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003633 ------------------------------------------------------------------------*/
3634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3635 {
3636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3637 "WDI API call before module is initialized - Fail request");
3638
Jeff Johnsone7245742012-09-05 17:12:55 -07003639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 }
3641
3642 /*------------------------------------------------------------------------
3643 Fill in Event data and post to the Main FSM
3644 ------------------------------------------------------------------------*/
3645 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 wdiEventData.pEventData = pwdiDelBAReqParams;
3647 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3648 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003649 wdiEventData.pUserData = pUserData;
3650
3651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3652
3653}/*WDI_DelBAReq*/
3654
Jeff Johnsone7245742012-09-05 17:12:55 -07003655/*========================================================================
3656
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003658
Jeff Johnson295189b2012-06-20 16:38:30 -07003659==========================================================================*/
3660
3661/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003662 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 wants to set the power save related configurations of
3664 the WLAN Device. Upon the call of this API the WLAN DAL
3665 will pack and send a HAL Update CFG request message to
3666 the lower RIVA sub-system if DAL is in state STARTED.
3667
3668 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003670
3671 WDI_Start must have been called.
3672
Jeff Johnsone7245742012-09-05 17:12:55 -07003673 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003674 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003675
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 wdiSetPwrSaveCfgCb: callback for passing back the
3677 response of the set power save cfg operation received
3678 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003679
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003681 callback
3682
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 @return Result of the function call
3685*/
3686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003687WDI_SetPwrSaveCfgReq
3688(
3689 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3690 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3691 void* pUserData
3692)
3693{
3694 WDI_EventInfoType wdiEventData;
3695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3696
3697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003698 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 ------------------------------------------------------------------------*/
3700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3701 {
3702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3703 "WDI API call before module is initialized - Fail request");
3704
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 }
3707
3708 /*------------------------------------------------------------------------
3709 Fill in Event data and post to the Main FSM
3710 ------------------------------------------------------------------------*/
3711 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 wdiEventData.pEventData = pwdiPowerSaveCfg;
3713 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3714 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 wdiEventData.pUserData = pUserData;
3716
3717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3718
3719}/*WDI_SetPwrSaveCfgReq*/
3720
3721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 request the device to get into IMPS power state. Upon
3724 the call of this API the WLAN DAL will send a HAL Enter
3725 IMPS request message to the lower RIVA sub-system if DAL
3726 is in state STARTED.
3727
3728 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003730
Jeff Johnsone7245742012-09-05 17:12:55 -07003731
3732 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 response of the Enter IMPS operation received from the
3734 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003735
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 callback
3738
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 @see WDI_Start
3740 @return Result of the function call
3741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003743WDI_EnterImpsReq
3744(
Mihir Shetea4306052014-03-25 00:02:54 +05303745 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3747 void* pUserData
3748)
3749{
3750 WDI_EventInfoType wdiEventData;
3751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3752
3753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 ------------------------------------------------------------------------*/
3756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3757 {
3758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3759 "WDI API call before module is initialized - Fail request");
3760
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 }
3763
3764 /*------------------------------------------------------------------------
3765 Fill in Event data and post to the Main FSM
3766 ------------------------------------------------------------------------*/
3767 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303768 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3769 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003770 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 wdiEventData.pUserData = pUserData;
3772
3773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3774
3775}/*WDI_EnterImpsReq*/
3776
3777/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003779 request the device to get out of IMPS power state. Upon
3780 the call of this API the WLAN DAL will send a HAL Exit
3781 IMPS request message to the lower RIVA sub-system if DAL
3782 is in state STARTED.
3783
3784 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787
Jeff Johnsone7245742012-09-05 17:12:55 -07003788
3789 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003791
Jeff Johnson295189b2012-06-20 16:38:30 -07003792 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 callback
3794
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 @see WDI_Start
3796 @return Result of the function call
3797*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003798WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003799WDI_ExitImpsReq
3800(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303801 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003802 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3803 void* pUserData
3804)
3805{
3806 WDI_EventInfoType wdiEventData;
3807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3808
3809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003811 ------------------------------------------------------------------------*/
3812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3813 {
3814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3815 "WDI API call before module is initialized - Fail request");
3816
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 }
3819
3820 /*------------------------------------------------------------------------
3821 Fill in Event data and post to the Main FSM
3822 ------------------------------------------------------------------------*/
3823 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303824 wdiEventData.pEventData = pwdiExitImpsReqParams;
3825 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 wdiEventData.pUserData = pUserData;
3828
3829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3830
3831}/*WDI_ExitImpsReq*/
3832
3833/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003834 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 request the device to get into BMPS power state. Upon
3836 the call of this API the WLAN DAL will pack and send a
3837 HAL Enter BMPS request message to the lower RIVA
3838 sub-system if DAL is in state STARTED.
3839
3840 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003841 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003842
3843 WDI_PostAssocReq must have been called.
3844
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003847
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 wdiEnterBmpsRspCb: callback for passing back the
3849 response of the Enter BMPS operation received from the
3850 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003851
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003853 callback
3854
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 @see WDI_PostAssocReq
3856 @return Result of the function call
3857*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003858WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003859WDI_EnterBmpsReq
3860(
3861 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3862 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3863 void* pUserData
3864)
3865{
3866 WDI_EventInfoType wdiEventData;
3867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3868
3869 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 ------------------------------------------------------------------------*/
3872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3873 {
3874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3875 "WDI API call before module is initialized - Fail request");
3876
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 }
3879
3880 /*------------------------------------------------------------------------
3881 Fill in Event data and post to the Main FSM
3882 ------------------------------------------------------------------------*/
3883 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3885 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3886 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 wdiEventData.pUserData = pUserData;
3888
3889 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3890
3891}/*WDI_EnterBmpsReq*/
3892
3893/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003894 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 request the device to get out of BMPS power state. Upon
3896 the call of this API the WLAN DAL will pack and send a
3897 HAL Exit BMPS request message to the lower RIVA
3898 sub-system if DAL is in state STARTED.
3899
3900 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003901 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003902
3903 WDI_PostAssocReq must have been called.
3904
Jeff Johnsone7245742012-09-05 17:12:55 -07003905 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003907
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 wdiExitBmpsRspCb: callback for passing back the response
3909 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003910
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003912 callback
3913
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 @see WDI_PostAssocReq
3915 @return Result of the function call
3916*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003917WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003918WDI_ExitBmpsReq
3919(
3920 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3921 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3922 void* pUserData
3923)
3924{
3925 WDI_EventInfoType wdiEventData;
3926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3927
3928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003930 ------------------------------------------------------------------------*/
3931 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3932 {
3933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3934 "WDI API call before module is initialized - Fail request");
3935
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 }
3938
3939 /*------------------------------------------------------------------------
3940 Fill in Event data and post to the Main FSM
3941 ------------------------------------------------------------------------*/
3942 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3944 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3945 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiEventData.pUserData = pUserData;
3947
3948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3949
3950}/*WDI_ExitBmpsReq*/
3951
3952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003953 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 request the device to get into UAPSD power state. Upon
3955 the call of this API the WLAN DAL will pack and send a
3956 HAL Enter UAPSD request message to the lower RIVA
3957 sub-system if DAL is in state STARTED.
3958
3959 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003960 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003961
3962 WDI_PostAssocReq must have been called.
3963 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003964
3965 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003967
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 wdiEnterUapsdRspCb: callback for passing back the
3969 response of the Enter UAPSD operation received from the
3970 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003971
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003973 callback
3974
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3976 @return Result of the function call
3977*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003979WDI_EnterUapsdReq
3980(
3981 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3982 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3983 void* pUserData
3984)
3985{
3986 WDI_EventInfoType wdiEventData;
3987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3988
3989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 ------------------------------------------------------------------------*/
3992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3993 {
3994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3995 "WDI API call before module is initialized - Fail request");
3996
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 }
3999
4000 /*------------------------------------------------------------------------
4001 Fill in Event data and post to the Main FSM
4002 ------------------------------------------------------------------------*/
4003 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4005 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4006 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 wdiEventData.pUserData = pUserData;
4008
4009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4010
4011}/*WDI_EnterUapsdReq*/
4012
4013/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 request the device to get out of UAPSD power state. Upon
4016 the call of this API the WLAN DAL will send a HAL Exit
4017 UAPSD request message to the lower RIVA sub-system if
4018 DAL is in state STARTED.
4019
4020 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004021 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004022
4023 WDI_PostAssocReq must have been called.
4024
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 response of the Exit UAPSD operation received from the
4027 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004028
Jeff Johnson295189b2012-06-20 16:38:30 -07004029 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 callback
4031
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 @see WDI_PostAssocReq
4033 @return Result of the function call
4034*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004035WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004036WDI_ExitUapsdReq
4037(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004038 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4040 void* pUserData
4041)
4042{
4043 WDI_EventInfoType wdiEventData;
4044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4045
4046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 ------------------------------------------------------------------------*/
4049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4050 {
4051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4052 "WDI API call before module is initialized - Fail request");
4053
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 }
4056
4057 /*------------------------------------------------------------------------
4058 Fill in Event data and post to the Main FSM
4059 ------------------------------------------------------------------------*/
4060 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004061 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4062 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 wdiEventData.pUserData = pUserData;
4065
4066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4067
4068}/*WDI_ExitUapsdReq*/
4069
4070/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 MAC wants to set the UAPSD related configurations
4073 of an associated STA (while acting as an AP) to the WLAN
4074 Device. Upon the call of this API the WLAN DAL will pack
4075 and send a HAL Update UAPSD params request message to
4076 the lower RIVA sub-system if DAL is in state STARTED.
4077
4078 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004080
4081 WDI_ConfigBSSReq must have been called.
4082
Jeff Johnsone7245742012-09-05 17:12:55 -07004083 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004084 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004085
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 wdiUpdateUapsdParamsCb: callback for passing back the
4087 response of the update UAPSD params operation received
4088 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004089
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004091 callback
4092
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 @see WDI_ConfigBSSReq
4094 @return Result of the function call
4095*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004096WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004097WDI_UpdateUapsdParamsReq
4098(
4099 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4100 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4101 void* pUserData
4102)
4103{
4104 WDI_EventInfoType wdiEventData;
4105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4106
4107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 ------------------------------------------------------------------------*/
4110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4111 {
4112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4113 "WDI API call before module is initialized - Fail request");
4114
Jeff Johnsone7245742012-09-05 17:12:55 -07004115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 }
4117
4118 /*------------------------------------------------------------------------
4119 Fill in Event data and post to the Main FSM
4120 ------------------------------------------------------------------------*/
4121 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004123 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004124 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 wdiEventData.pUserData = pUserData;
4126
4127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4128
4129}/*WDI_UpdateUapsdParamsReq*/
4130
4131/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 MAC wants to set the UAPSD related configurations before
4134 requesting for enter UAPSD power state to the WLAN
4135 Device. Upon the call of this API the WLAN DAL will pack
4136 and send a HAL Set UAPSD params request message to
4137 the lower RIVA sub-system if DAL is in state STARTED.
4138
4139 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004141
4142 WDI_PostAssocReq must have been called.
4143
4144 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4145 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004146
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 wdiSetUapsdAcParamsCb: callback for passing back the
4148 response of the set UAPSD params operation received from
4149 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004150
Jeff Johnson295189b2012-06-20 16:38:30 -07004151 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 callback
4153
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 @see WDI_PostAssocReq
4155 @return Result of the function call
4156*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004157WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004158WDI_SetUapsdAcParamsReq
4159(
4160 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4161 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4162 void* pUserData
4163)
4164{
4165 WDI_EventInfoType wdiEventData;
4166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4167
4168 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004170 ------------------------------------------------------------------------*/
4171 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4172 {
4173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4174 "WDI API call before module is initialized - Fail request");
4175
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 }
4178
4179 /*------------------------------------------------------------------------
4180 Fill in Event data and post to the Main FSM
4181 ------------------------------------------------------------------------*/
4182 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 wdiEventData.pEventData = pwdiUapsdInfo;
4184 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4185 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 wdiEventData.pUserData = pUserData;
4187
4188 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4189
4190}/*WDI_SetUapsdAcParamsReq*/
4191
4192/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304193 @brief WDI_GetFrameLogReq will be called when the upper
4194 MAC wants to initialize frame logging. Upon the call of
4195 this API the WLAN DAL will pack and send a HAL
4196 Frame logging init request message to
4197 the lower RIVA sub-system.
4198
4199 In state BUSY this request will be queued. Request won't
4200 be allowed in any other state.
4201
4202
4203 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4204 as specified by the Device Interface
4205
4206 wdiGetFrameLogRspCb: callback for passing back the
4207 response of the frame logging init operation received
4208 from the device
4209
4210 pUserData: user data will be passed back with the
4211 callback
4212
4213 @return Result of the function call
4214*/
4215WDI_Status
4216WDI_GetFrameLogReq
4217(
4218 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4219 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4220 void* pUserData
4221)
4222{
4223 WDI_EventInfoType wdiEventData;
4224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4225
4226 /*------------------------------------------------------------------------
4227 Sanity Check
4228 ------------------------------------------------------------------------*/
4229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4230 {
4231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4232 "WDI API call before module is initialized - Fail request");
4233
4234 return WDI_STATUS_E_NOT_ALLOWED;
4235 }
4236
4237 /*------------------------------------------------------------------------
4238 Fill in Event data and post to the Main FSM
4239 ------------------------------------------------------------------------*/
4240 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4241 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4242 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4243 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4244 wdiEventData.pUserData = pUserData;
4245
4246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4247}
4248/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304249 @brief WDI_MgmtLoggingInitReq will be called when the upper
4250 MAC wants to initialize frame logging. Upon the call of
4251 this API the WLAN DAL will pack and send a HAL
4252 Frame logging init request message to
4253 the lower RIVA sub-system.
4254
4255 In state BUSY this request will be queued. Request won't
4256 be allowed in any other state.
4257
4258
4259 @param pwdiMgmtLoggingInitReqParams: the Frame Logging params
4260 as specified by the Device Interface
4261
4262 wdiMgmtLoggingInitReqCb: callback for passing back the
4263 response of the frame logging init operation received
4264 from the device
4265
4266 pUserData: user data will be passed back with the
4267 callback
4268
4269 @return Result of the function call
4270*/
4271WDI_Status
4272WDI_MgmtLoggingInitReq
4273(
4274 WDI_MgmtLoggingInitReqInfoType *pwdiMgmtLoggingInitReqInfo,
4275 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb,
4276 void* pUserData
4277)
4278{
4279 WDI_EventInfoType wdiEventData;
4280
4281 /*------------------------------------------------------------------------
4282 Sanity Check
4283 ------------------------------------------------------------------------*/
4284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4285 {
4286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4287 "WDI API call before module is initialized - Fail request");
4288
4289 return WDI_STATUS_E_NOT_ALLOWED;
4290 }
4291
4292 /*------------------------------------------------------------------------
4293 Fill in Event data and post to the Main FSM
4294 ------------------------------------------------------------------------*/
4295 wdiEventData.wdiRequest = WDI_MGMT_LOGGING_INIT_REQ;
4296 wdiEventData.pEventData = pwdiMgmtLoggingInitReqInfo;
4297 wdiEventData.uEventDataSize = sizeof(*pwdiMgmtLoggingInitReqInfo);
4298 wdiEventData.pCBfnc = wdiMgmtLoggingInitRspCb;
4299 wdiEventData.pUserData = pUserData;
4300
4301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4302}
4303
4304/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004306 MAC wants to set/reset the RXP filters for received pkts
4307 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4308 and send a HAL configure RXP filter request message to
4309 the lower RIVA sub-system.
4310
4311 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004313
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
4315 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 filter as specified by the Device
4317 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 wdiConfigureRxpFilterCb: callback for passing back the
4320 response of the configure RXP filter operation received
4321 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004322
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004324 callback
4325
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 @return Result of the function call
4327*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004328WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004329WDI_ConfigureRxpFilterReq
4330(
4331 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4332 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4333 void* pUserData
4334)
4335{
4336 WDI_EventInfoType wdiEventData;
4337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4338
4339 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004340 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004341 ------------------------------------------------------------------------*/
4342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4343 {
4344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4345 "WDI API call before module is initialized - Fail request");
4346
Jeff Johnsone7245742012-09-05 17:12:55 -07004347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004348 }
4349
4350 /*------------------------------------------------------------------------
4351 Fill in Event data and post to the Main FSM
4352 ------------------------------------------------------------------------*/
4353 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4355 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4356 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 wdiEventData.pUserData = pUserData;
4358
4359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4360}/*WDI_ConfigureRxpFilterReq*/
4361
4362/**
4363 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4364 wants to set the beacon filters while in power save.
4365 Upon the call of this API the WLAN DAL will pack and
4366 send a Beacon filter request message to the
4367 lower RIVA sub-system.
4368
4369 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004370 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004371
Jeff Johnsone7245742012-09-05 17:12:55 -07004372
4373 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 filter as specified by the Device
4375 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004376
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 wdiBeaconFilterCb: callback for passing back the
4378 response of the set beacon filter operation received
4379 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004380
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 callback
4383
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 @return Result of the function call
4385*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004386WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004387WDI_SetBeaconFilterReq
4388(
4389 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4390 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4391 void* pUserData
4392)
4393{
4394 WDI_EventInfoType wdiEventData;
4395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4396
4397 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 ------------------------------------------------------------------------*/
4400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4401 {
4402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4403 "WDI API call before module is initialized - Fail request");
4404
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 }
4407
4408 /*------------------------------------------------------------------------
4409 Fill in Event data and post to the Main FSM
4410 ------------------------------------------------------------------------*/
4411 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004413 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004414 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 wdiEventData.pUserData = pUserData;
4416
4417 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4418}/*WDI_SetBeaconFilterReq*/
4419
4420/**
4421 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4422 wants to remove the beacon filter for particular IE
4423 while in power save. Upon the call of this API the WLAN
4424 DAL will pack and send a remove Beacon filter request
4425 message to the lower RIVA sub-system.
4426
4427 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004428 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004429
Jeff Johnsone7245742012-09-05 17:12:55 -07004430
4431 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 filter as specified by the Device
4433 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004434
Jeff Johnson295189b2012-06-20 16:38:30 -07004435 wdiBeaconFilterCb: callback for passing back the
4436 response of the remove beacon filter operation received
4437 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004438
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004440 callback
4441
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 @return Result of the function call
4443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004445WDI_RemBeaconFilterReq
4446(
4447 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4448 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4449 void* pUserData
4450)
4451{
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004471 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 wdiEventData.pUserData = pUserData;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476}/*WDI_RemBeaconFilterReq*/
4477
4478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 MAC wants to set the RSSI thresholds related
4481 configurations while in power save. Upon the call of
4482 this API the WLAN DAL will pack and send a HAL Set RSSI
4483 thresholds request message to the lower RIVA
4484 sub-system if DAL is in state STARTED.
4485
4486 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004488
4489 WDI_PostAssocReq must have been called.
4490
4491 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4492 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 wdiSetUapsdAcParamsCb: callback for passing back the
4495 response of the set UAPSD params operation received from
4496 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 callback
4500
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 @see WDI_PostAssocReq
4502 @return Result of the function call
4503*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004504WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004505WDI_SetRSSIThresholdsReq
4506(
4507 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4508 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4509 void* pUserData
4510)
4511{
4512 WDI_EventInfoType wdiEventData;
4513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4514
4515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 ------------------------------------------------------------------------*/
4518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4519 {
4520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4521 "WDI API call before module is initialized - Fail request");
4522
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 }
4525
4526 /*------------------------------------------------------------------------
4527 Fill in Event data and post to the Main FSM
4528 ------------------------------------------------------------------------*/
4529 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004531 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004532 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 wdiEventData.pUserData = pUserData;
4534
4535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4536}/* WDI_SetRSSIThresholdsReq*/
4537
4538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wants to set the filter to minimize unnecessary host
4541 wakeup due to broadcast traffic while in power save.
4542 Upon the call of this API the WLAN DAL will pack and
4543 send a HAL host offload request message to the
4544 lower RIVA sub-system if DAL is in state STARTED.
4545
4546 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004547 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004548
4549 WDI_PostAssocReq must have been called.
4550
Jeff Johnsone7245742012-09-05 17:12:55 -07004551 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004553
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 wdiHostOffloadCb: callback for passing back the response
4555 of the host offload operation received from the
4556 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004557
Jeff Johnson295189b2012-06-20 16:38:30 -07004558 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 callback
4560
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 @see WDI_PostAssocReq
4562 @return Result of the function call
4563*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004565WDI_HostOffloadReq
4566(
4567 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4568 WDI_HostOffloadCb wdiHostOffloadCb,
4569 void* pUserData
4570)
4571{
4572 WDI_EventInfoType wdiEventData;
4573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4574
4575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004577 ------------------------------------------------------------------------*/
4578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4579 {
4580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4581 "WDI API call before module is initialized - Fail request");
4582
Jeff Johnsone7245742012-09-05 17:12:55 -07004583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004584 }
4585
4586 /*------------------------------------------------------------------------
4587 Fill in Event data and post to the Main FSM
4588 ------------------------------------------------------------------------*/
4589 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004590 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004591 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004593 wdiEventData.pUserData = pUserData;
4594
4595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4596}/*WDI_HostOffloadReq*/
4597
4598/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004599 @brief WDI_KeepAliveReq will be called when the upper MAC
4600 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004601 and minimize unnecessary host wakeups due to while in power save.
4602 Upon the call of this API the WLAN DAL will pack and
4603 send a HAL Keep Alive request message to the
4604 lower RIVA sub-system if DAL is in state STARTED.
4605
4606 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004608
4609 WDI_PostAssocReq must have been called.
4610
Jeff Johnsone7245742012-09-05 17:12:55 -07004611 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004613
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 wdiKeepAliveCb: callback for passing back the response
4615 of the Keep Alive operation received from the
4616 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004617
Jeff Johnson295189b2012-06-20 16:38:30 -07004618 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 callback
4620
Jeff Johnson295189b2012-06-20 16:38:30 -07004621 @see WDI_PostAssocReq
4622 @return Result of the function call
4623*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004624WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004625WDI_KeepAliveReq
4626(
4627 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4628 WDI_KeepAliveCb wdiKeepAliveCb,
4629 void* pUserData
4630)
4631{
4632 WDI_EventInfoType wdiEventData;
4633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4634
4635 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004637 ------------------------------------------------------------------------*/
4638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4639 {
4640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4641 "WDI_KeepAliveReq: WDI API call before module "
4642 "is initialized - Fail request");
4643
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 }
4646
4647 /*------------------------------------------------------------------------
4648 Fill in Event data and post to the Main FSM
4649 ------------------------------------------------------------------------*/
4650 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 wdiEventData.pEventData = pwdiKeepAliveParams;
4652 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4653 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 wdiEventData.pUserData = pUserData;
4655
4656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4657}/*WDI_KeepAliveReq*/
4658
4659/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 wants to set the Wowl Bcast ptrn to minimize unnecessary
4662 host wakeup due to broadcast traffic while in power
4663 save. Upon the call of this API the WLAN DAL will pack
4664 and send a HAL Wowl Bcast ptrn request message to the
4665 lower RIVA sub-system if DAL is in state STARTED.
4666
4667 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004669
4670 WDI_PostAssocReq must have been called.
4671
Jeff Johnsone7245742012-09-05 17:12:55 -07004672 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 wdiWowlAddBcPtrnCb: callback for passing back the
4676 response of the add Wowl bcast ptrn operation received
4677 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004678
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 callback
4681
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 @see WDI_PostAssocReq
4683 @return Result of the function call
4684*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004686WDI_WowlAddBcPtrnReq
4687(
4688 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4689 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4690 void* pUserData
4691)
4692{
4693 WDI_EventInfoType wdiEventData;
4694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4695
4696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 ------------------------------------------------------------------------*/
4699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4700 {
4701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4702 "WDI API call before module is initialized - Fail request");
4703
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 }
4706
4707 /*------------------------------------------------------------------------
4708 Fill in Event data and post to the Main FSM
4709 ------------------------------------------------------------------------*/
4710 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004712 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004713 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004714 wdiEventData.pUserData = pUserData;
4715
4716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4717}/*WDI_WowlAddBcPtrnReq*/
4718
4719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 wants to clear the Wowl Bcast ptrn. Upon the call of
4722 this API the WLAN DAL will pack and send a HAL delete
4723 Wowl Bcast ptrn request message to the lower RIVA
4724 sub-system if DAL is in state STARTED.
4725
4726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004728
4729 WDI_WowlAddBcPtrnReq must have been called.
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004733
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiWowlDelBcPtrnCb: callback for passing back the
4735 response of the del Wowl bcast ptrn operation received
4736 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004737
Jeff Johnson295189b2012-06-20 16:38:30 -07004738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 callback
4740
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 @see WDI_WowlAddBcPtrnReq
4742 @return Result of the function call
4743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004745WDI_WowlDelBcPtrnReq
4746(
4747 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4748 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4749 void* pUserData
4750)
4751{
4752 WDI_EventInfoType wdiEventData;
4753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4754
4755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 ------------------------------------------------------------------------*/
4758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4759 {
4760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4761 "WDI API call before module is initialized - Fail request");
4762
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 }
4765
4766 /*------------------------------------------------------------------------
4767 Fill in Event data and post to the Main FSM
4768 ------------------------------------------------------------------------*/
4769 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004771 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004772 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 wdiEventData.pUserData = pUserData;
4774
4775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4776}/*WDI_WowlDelBcPtrnReq*/
4777
4778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004779 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004780 wants to enter the Wowl state to minimize unnecessary
4781 host wakeup while in power save. Upon the call of this
4782 API the WLAN DAL will pack and send a HAL Wowl enter
4783 request message to the lower RIVA sub-system if DAL is
4784 in state STARTED.
4785
4786 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004787 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004788
4789 WDI_PostAssocReq must have been called.
4790
Jeff Johnsone7245742012-09-05 17:12:55 -07004791 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004792 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004793
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiWowlEnterReqCb: callback for passing back the
4795 response of the enter Wowl operation received from the
4796 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004797
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 callback
4800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 @see WDI_PostAssocReq
4802 @return Result of the function call
4803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004805WDI_WowlEnterReq
4806(
4807 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4808 WDI_WowlEnterReqCb wdiWowlEnterCb,
4809 void* pUserData
4810)
4811{
4812 WDI_EventInfoType wdiEventData;
4813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4814
4815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004817 ------------------------------------------------------------------------*/
4818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4819 {
4820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4821 "WDI API call before module is initialized - Fail request");
4822
Jeff Johnsone7245742012-09-05 17:12:55 -07004823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 }
4825
4826 /*------------------------------------------------------------------------
4827 Fill in Event data and post to the Main FSM
4828 ------------------------------------------------------------------------*/
4829 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004830 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004831 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004833 wdiEventData.pUserData = pUserData;
4834
4835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4836}/*WDI_WowlEnterReq*/
4837
4838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 wants to exit the Wowl state. Upon the call of this API
4841 the WLAN DAL will pack and send a HAL Wowl exit request
4842 message to the lower RIVA sub-system if DAL is in state
4843 STARTED.
4844
4845 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004847
4848 WDI_WowlEnterReq must have been called.
4849
Jeff Johnsone7245742012-09-05 17:12:55 -07004850 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004851 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004852
Jeff Johnson295189b2012-06-20 16:38:30 -07004853 wdiWowlExitReqCb: callback for passing back the response
4854 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 callback
4858
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 @see WDI_WowlEnterReq
4860 @return Result of the function call
4861*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004862WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004863WDI_WowlExitReq
4864(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004865 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 WDI_WowlExitReqCb wdiWowlExitCb,
4867 void* pUserData
4868)
4869{
4870 WDI_EventInfoType wdiEventData;
4871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4872
4873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004874 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004875 ------------------------------------------------------------------------*/
4876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4877 {
4878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4879 "WDI API call before module is initialized - Fail request");
4880
Jeff Johnsone7245742012-09-05 17:12:55 -07004881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 }
4883
4884 /*------------------------------------------------------------------------
4885 Fill in Event data and post to the Main FSM
4886 ------------------------------------------------------------------------*/
4887 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004888 wdiEventData.pEventData = pwdiWowlExitParams;
4889 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004890 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 wdiEventData.pUserData = pUserData;
4892
4893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4894}/*WDI_WowlExitReq*/
4895
4896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 the upper MAC wants to dynamically adjusts the listen
4899 interval based on the WLAN/MSM activity. Upon the call
4900 of this API the WLAN DAL will pack and send a HAL
4901 configure Apps Cpu Wakeup State request message to the
4902 lower RIVA sub-system.
4903
4904 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004905 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004906
Jeff Johnsone7245742012-09-05 17:12:55 -07004907
4908 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004909 Apps Cpu Wakeup State as specified by the
4910 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004911
Jeff Johnson295189b2012-06-20 16:38:30 -07004912 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4913 back the response of the configure Apps Cpu Wakeup State
4914 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004915
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 callback
4918
Jeff Johnson295189b2012-06-20 16:38:30 -07004919 @return Result of the function call
4920*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004922WDI_ConfigureAppsCpuWakeupStateReq
4923(
4924 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4925 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4926 void* pUserData
4927)
4928{
4929 WDI_EventInfoType wdiEventData;
4930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4931
4932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 ------------------------------------------------------------------------*/
4935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4936 {
4937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4938 "WDI API call before module is initialized - Fail request");
4939
Jeff Johnsone7245742012-09-05 17:12:55 -07004940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 }
4942
4943 /*------------------------------------------------------------------------
4944 Fill in Event data and post to the Main FSM
4945 ------------------------------------------------------------------------*/
4946 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4948 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4949 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 wdiEventData.pUserData = pUserData;
4951
4952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4953}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 to to perform a flush operation on a given AC. Upon the
4957 call of this API the WLAN DAL will pack and send a HAL
4958 Flush AC request message to the lower RIVA sub-system if
4959 DAL is in state STARTED.
4960
4961 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004963
4964 WDI_AddBAReq must have been called.
4965
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004967 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004968
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 wdiFlushAcRspCb: callback for passing back the response
4970 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 callback
4974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 @see WDI_AddBAReq
4976 @return Result of the function call
4977*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004979WDI_FlushAcReq
4980(
4981 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4982 WDI_FlushAcRspCb wdiFlushAcRspCb,
4983 void* pUserData
4984)
4985{
4986 WDI_EventInfoType wdiEventData;
4987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4988
4989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004991 ------------------------------------------------------------------------*/
4992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4993 {
4994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4995 "WDI API call before module is initialized - Fail request");
4996
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 }
4999
5000 /*------------------------------------------------------------------------
5001 Fill in Event data and post to the Main FSM
5002 ------------------------------------------------------------------------*/
5003 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 wdiEventData.pEventData = pwdiFlushAcReqParams;
5005 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5006 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005007 wdiEventData.pUserData = pUserData;
5008
5009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5010
5011}/*WDI_FlushAcReq*/
5012
5013/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 wants to notify the lower mac on a BT AMP event. This is
5016 to inform BTC-SLM that some BT AMP event occurred. Upon
5017 the call of this API the WLAN DAL will pack and send a
5018 HAL BT AMP event request message to the lower RIVA
5019 sub-system if DAL is in state STARTED.
5020
5021 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005022 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005023
Jeff Johnsone7245742012-09-05 17:12:55 -07005024
5025 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 wdiBtAmpEventRspCb: callback for passing back the
5029 response of the BT AMP event operation received from the
5030 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005031
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005033 callback
5034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 @return Result of the function call
5036*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005037WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005038WDI_BtAmpEventReq
5039(
5040 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5041 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5042 void* pUserData
5043)
5044{
5045 WDI_EventInfoType wdiEventData;
5046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5047
5048 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005050 ------------------------------------------------------------------------*/
5051 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5052 {
5053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5054 "WDI API call before module is initialized - Fail request");
5055
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 }
5058
5059 /*------------------------------------------------------------------------
5060 Fill in Event data and post to the Main FSM
5061 ------------------------------------------------------------------------*/
5062 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005063 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5064 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5065 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 wdiEventData.pUserData = pUserData;
5067
5068 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5069
5070}/*WDI_BtAmpEventReq*/
5071
Jeff Johnsone7245742012-09-05 17:12:55 -07005072#ifdef FEATURE_OEM_DATA_SUPPORT
5073/**
5074 @brief WDI_Start Oem Data Req will be called when the upper MAC
5075 wants to notify the lower mac on a oem data Req event.Upon
5076 the call of this API the WLAN DAL will pack and send a
5077 HAL OEM Data Req event request message to the lower RIVA
5078 sub-system if DAL is in state STARTED.
5079
5080 In state BUSY this request will be queued. Request won't
5081 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005082
5083
Jeff Johnsone7245742012-09-05 17:12:55 -07005084
5085 @param pwdiOemDataReqParams: the Oem Data Req as
5086 specified by the Device Interface
5087
5088 wdiStartOemDataRspCb: callback for passing back the
5089 response of the Oem Data Req received from the
5090 device
5091
5092 pUserData: user data will be passed back with the
5093 callback
5094
5095 @return Result of the function call
5096*/
5097WDI_Status
5098WDI_StartOemDataReq
5099(
5100 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5101 WDI_oemDataRspCb wdiOemDataRspCb,
5102 void* pUserData
5103)
5104{
5105 WDI_EventInfoType wdiEventData;
5106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5107
5108 /*------------------------------------------------------------------------
5109 Sanity Check
5110 ------------------------------------------------------------------------*/
5111 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5112 {
5113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5114 "WDI API call before module is initialized - Fail request");
5115
5116 return WDI_STATUS_E_NOT_ALLOWED;
5117 }
5118
5119 /*------------------------------------------------------------------------
5120 Fill in Event data and post to the Main FSM
5121 ------------------------------------------------------------------------*/
5122 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5123 wdiEventData.pEventData = pwdiOemDataReqParams;
5124 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5125 wdiEventData.pCBfnc = wdiOemDataRspCb;
5126 wdiEventData.pUserData = pUserData;
5127
5128 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5129
5130
5131}
5132
5133#endif
5134
5135
5136/*========================================================================
5137
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005139
Jeff Johnson295189b2012-06-20 16:38:30 -07005140==========================================================================*/
5141/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005142 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 the WLAN HW to change the current channel of operation.
5144 Upon the call of this API the WLAN DAL will pack and
5145 send a HAL Start request message to the lower RIVA
5146 sub-system if DAL is in state STARTED.
5147
5148 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005150
5151 WDI_Start must have been called.
5152
Jeff Johnsone7245742012-09-05 17:12:55 -07005153 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005154 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005155
Jeff Johnson295189b2012-06-20 16:38:30 -07005156 wdiSwitchChRspCb: callback for passing back the response
5157 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005158
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005160 callback
5161
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 @see WDI_Start
5163 @return Result of the function call
5164*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005165WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005166WDI_SwitchChReq
5167(
5168 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5169 WDI_SwitchChRspCb wdiSwitchChRspCb,
5170 void* pUserData
5171)
5172{
5173 WDI_EventInfoType wdiEventData;
5174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5175
5176 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005178 ------------------------------------------------------------------------*/
5179 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5180 {
5181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5182 "WDI API call before module is initialized - Fail request");
5183
Jeff Johnsone7245742012-09-05 17:12:55 -07005184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 }
5186
5187 /*------------------------------------------------------------------------
5188 Fill in Event data and post to the Main FSM
5189 ------------------------------------------------------------------------*/
5190 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005191 wdiEventData.pEventData = pwdiSwitchChReqParams;
5192 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5193 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 wdiEventData.pUserData = pUserData;
5195
5196 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5197
5198}/*WDI_SwitchChReq*/
5199
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005200/**
5201 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5202 the WLAN HW to change the current channel of operation.
5203 Upon the call of this API the WLAN DAL will pack and
5204 send a HAL Start request message to the lower RIVA
5205 sub-system if DAL is in state STARTED.
5206 This request message also includes source of channel switch,
5207 like CSA,
5208
5209 In state BUSY this request will be queued. Request won't
5210 be allowed in any other state.
5211
5212 WDI_Start must have been called.
5213
5214 @param wdiSwitchChReqParams: the switch ch parameters as
5215 specified by the Device Interface
5216
5217 wdiSwitchChRspCb: callback for passing back the response
5218 of the switch ch operation received from the device
5219
5220 pUserData: user data will be passed back with the
5221 callback
5222
5223 @see WDI_Start
5224 @return Result of the function call
5225*/
5226WDI_Status
5227WDI_SwitchChReq_V1
5228(
5229 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5230 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5231 void* pUserData
5232)
5233{
5234 WDI_EventInfoType wdiEventData;
5235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5237 "WDI API call WDI_SwitchChReq_V1");
5238 /*------------------------------------------------------------------------
5239 Sanity Check
5240 ------------------------------------------------------------------------*/
5241 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5242 {
5243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5244 "WDI API call before module is initialized - Fail request");
5245
5246 return WDI_STATUS_E_NOT_ALLOWED;
5247 }
5248
5249 /*------------------------------------------------------------------------
5250 Fill in Event data and post to the Main FSM
5251 ------------------------------------------------------------------------*/
5252 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5253 wdiEventData.pEventData = pwdiSwitchChReqParams;
5254 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5255 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5256 wdiEventData.pUserData = pUserData;
5257
5258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5259
5260}/*WDI_SwitchChReq_V1*/
5261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262
5263/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 wishes to add or update a STA in HW. Upon the call of
5266 this API the WLAN DAL will pack and send a HAL Start
5267 message request message to the lower RIVA sub-system if
5268 DAL is in state STARTED.
5269
5270 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005272
5273 WDI_Start must have been called.
5274
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005277
Jeff Johnson295189b2012-06-20 16:38:30 -07005278 wdiConfigSTARspCb: callback for passing back the
5279 response of the config STA operation received from the
5280 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 callback
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 @see WDI_Start
5286 @return Result of the function call
5287*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005289WDI_ConfigSTAReq
5290(
5291 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5292 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5293 void* pUserData
5294)
5295{
5296 WDI_EventInfoType wdiEventData;
5297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5298
5299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 ------------------------------------------------------------------------*/
5302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5303 {
5304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5305 "WDI API call before module is initialized - Fail request");
5306
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 }
5309
5310 /*------------------------------------------------------------------------
5311 Fill in Event data and post to the Main FSM
5312 ------------------------------------------------------------------------*/
5313 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5315 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5316 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiEventData.pUserData = pUserData;
5318
5319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5320
5321}/*WDI_ConfigSTAReq*/
5322
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005323 /**
5324 @brief WDI_UpdateChannelReq will be called when the upper MAC
5325 wants to update the channel list on change in country code.
5326
5327 In state BUSY this request will be queued. Request won't
5328 be allowed in any other state.
5329
5330 WDI_UpdateChannelReq must have been called.
5331
5332 @param wdiUpdateChannelReqParams: the updated channel parameters
5333 as specified by the Device Interface
5334
5335 wdiUpdateChannelRspCb: callback for passing back the
5336 response of the update channel operation received from
5337 the device
5338
5339 pUserData: user data will be passed back with the
5340 callback
5341
5342 @return Result of the function call
5343*/
5344WDI_Status
5345WDI_UpdateChannelReq
5346(
5347 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5348 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5349 void* pUserData
5350)
5351{
5352 WDI_EventInfoType wdiEventData = {{0}};
5353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5354
5355 /*------------------------------------------------------------------------
5356 Sanity Check
5357 ------------------------------------------------------------------------*/
5358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5359 {
5360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5361 "WDI API call before module is initialized - Fail request");
5362
5363 return WDI_STATUS_E_NOT_ALLOWED;
5364 }
5365
5366 /*------------------------------------------------------------------------
5367 Fill in Event data and post to the Main FSM
5368 ------------------------------------------------------------------------*/
5369 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5370 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5371 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5372 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5373 wdiEventData.pUserData = pUserData;
5374
5375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5376
5377}/*WDI_UpdateChannelReq*/
5378
Jeff Johnson295189b2012-06-20 16:38:30 -07005379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 wants to change the state of an ongoing link. Upon the
5382 call of this API the WLAN DAL will pack and send a HAL
5383 Start message request message to the lower RIVA
5384 sub-system if DAL is in state STARTED.
5385
5386 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005387 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005388
5389 WDI_JoinStartReq must have been called.
5390
Jeff Johnsone7245742012-09-05 17:12:55 -07005391 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005393
Jeff Johnson295189b2012-06-20 16:38:30 -07005394 wdiSetLinkStateRspCb: callback for passing back the
5395 response of the set link state operation received from
5396 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 callback
5400
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 @see WDI_JoinStartReq
5402 @return Result of the function call
5403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005405WDI_SetLinkStateReq
5406(
5407 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5408 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5409 void* pUserData
5410)
5411{
5412 WDI_EventInfoType wdiEventData;
5413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5414
5415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 ------------------------------------------------------------------------*/
5418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5419 {
5420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5421 "WDI API call before module is initialized - Fail request");
5422
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 }
5425
5426 /*------------------------------------------------------------------------
5427 Fill in Event data and post to the Main FSM
5428 ------------------------------------------------------------------------*/
5429 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5431 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5432 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wdiEventData.pUserData = pUserData;
5434
5435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5436
5437}/*WDI_SetLinkStateReq*/
5438
5439
5440/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005441 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005442 to get statistics (MIB counters) from the device. Upon
5443 the call of this API the WLAN DAL will pack and send a
5444 HAL Start request message to the lower RIVA sub-system
5445 if DAL is in state STARTED.
5446
5447 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005449
5450 WDI_Start must have been called.
5451
Jeff Johnsone7245742012-09-05 17:12:55 -07005452 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005453 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005454
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 wdiGetStatsRspCb: callback for passing back the response
5456 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 callback
5460
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 @see WDI_Start
5462 @return Result of the function call
5463*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005464WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005465WDI_GetStatsReq
5466(
5467 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5468 WDI_GetStatsRspCb wdiGetStatsRspCb,
5469 void* pUserData
5470)
5471{
5472 WDI_EventInfoType wdiEventData;
5473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5474
5475 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 ------------------------------------------------------------------------*/
5478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5479 {
5480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5481 "WDI API call before module is initialized - Fail request");
5482
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 }
5485
5486 /*------------------------------------------------------------------------
5487 Fill in Event data and post to the Main FSM
5488 ------------------------------------------------------------------------*/
5489 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005490 wdiEventData.pEventData = pwdiGetStatsReqParams;
5491 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5492 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005493 wdiEventData.pUserData = pUserData;
5494
5495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5496
5497}/*WDI_GetStatsReq*/
5498
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005499#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005500/**
5501 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5502 to get roam rssi from the device. Upon
5503 the call of this API the WLAN DAL will pack and send a
5504 HAL Start request message to the lower RIVA sub-system
5505 if DAL is in state STARTED.
5506
5507 In state BUSY this request will be queued. Request won't
5508 be allowed in any other state.
5509
5510 WDI_Start must have been called.
5511
5512 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5513 specified by the Device Interface
5514
5515 wdiGetRoamRssiRspCb: callback for passing back the response
5516 of the get stats operation received from the device
5517
5518 pUserData: user data will be passed back with the
5519 callback
5520
5521 @see WDI_Start
5522 @return Result of the function call
5523*/
5524WDI_Status
5525WDI_GetRoamRssiReq
5526(
5527 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5528 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5529 void* pUserData
5530)
5531{
5532 WDI_EventInfoType wdiEventData;
5533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5534
5535 /*------------------------------------------------------------------------
5536 Sanity Check
5537 ------------------------------------------------------------------------*/
5538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5539 {
5540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5541 "WDI API call before module is initialized - Fail request");
5542
5543 return WDI_STATUS_E_NOT_ALLOWED;
5544 }
5545 /*------------------------------------------------------------------------
5546 Fill in Event data and post to the Main FSM
5547 ------------------------------------------------------------------------*/
5548 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5549 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5550 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5551 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5552 wdiEventData.pUserData = pUserData;
5553
5554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5555
5556}/*WDI_GetRoamRssiReq*/
5557#endif
5558
Jeff Johnson295189b2012-06-20 16:38:30 -07005559
5560/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 it wishes to change the configuration of the WLAN
5563 Device. Upon the call of this API the WLAN DAL will pack
5564 and send a HAL Update CFG request message to the lower
5565 RIVA sub-system if DAL is in state STARTED.
5566
5567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005569
5570 WDI_Start must have been called.
5571
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005574
Jeff Johnson295189b2012-06-20 16:38:30 -07005575 wdiUpdateCfgsRspCb: callback for passing back the
5576 response of the update cfg operation received from the
5577 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005578
Jeff Johnson295189b2012-06-20 16:38:30 -07005579 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005580 callback
5581
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 @see WDI_Start
5583 @return Result of the function call
5584*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005585WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005586WDI_UpdateCfgReq
5587(
5588 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5589 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5590 void* pUserData
5591)
5592{
5593 WDI_EventInfoType wdiEventData;
5594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5595
5596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 ------------------------------------------------------------------------*/
5599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5600 {
5601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5602 "WDI API call before module is initialized - Fail request");
5603
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 }
5606
5607 /*------------------------------------------------------------------------
5608 Fill in Event data and post to the Main FSM
5609 ------------------------------------------------------------------------*/
5610 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005611 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5612 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5613 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 wdiEventData.pUserData = pUserData;
5615
5616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5617
5618}/*WDI_UpdateCfgReq*/
5619
5620
5621
5622/**
5623 @brief WDI_AddBAReq will be called when the upper MAC has setup
5624 successfully a BA session and needs to notify the HW for
5625 the appropriate settings to take place. Upon the call of
5626 this API the WLAN DAL will pack and send a HAL Add BA
5627 request message to the lower RIVA sub-system if DAL is
5628 in state STARTED.
5629
5630 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005631 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005632
5633 WDI_PostAssocReq must have been called.
5634
5635 @param wdiAddBAReqParams: the add BA parameters as specified by
5636 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005637
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 wdiAddBARspCb: callback for passing back the response of
5639 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005640
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 callback
5643
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 @see WDI_PostAssocReq
5645 @return Result of the function call
5646*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005647WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005648WDI_AddBAReq
5649(
5650 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5651 WDI_AddBARspCb wdiAddBARspCb,
5652 void* pUserData
5653)
5654{
5655 WDI_EventInfoType wdiEventData;
5656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5657
5658 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005659 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 ------------------------------------------------------------------------*/
5661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5662 {
5663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5664 "WDI API call before module is initialized - Fail request");
5665
Jeff Johnsone7245742012-09-05 17:12:55 -07005666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 }
5668
5669 /*------------------------------------------------------------------------
5670 Fill in Event data and post to the Main FSM
5671 ------------------------------------------------------------------------*/
5672 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005673 wdiEventData.pEventData = pwdiAddBAReqParams;
5674 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5675 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005676 wdiEventData.pUserData = pUserData;
5677
5678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5679
5680}/*WDI_AddBAReq*/
5681
5682
5683/**
5684 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5685 successfully a BA session and needs to notify the HW for
5686 the appropriate settings to take place. Upon the call of
5687 this API the WLAN DAL will pack and send a HAL Add BA
5688 request message to the lower RIVA sub-system if DAL is
5689 in state STARTED.
5690
5691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005693
5694 WDI_PostAssocReq must have been called.
5695
5696 @param wdiAddBAReqParams: the add BA parameters as specified by
5697 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 wdiAddBARspCb: callback for passing back the response of
5700 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005701
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 callback
5704
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 @see WDI_PostAssocReq
5706 @return Result of the function call
5707*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005708WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005709WDI_TriggerBAReq
5710(
5711 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5712 WDI_TriggerBARspCb wdiTriggerBARspCb,
5713 void* pUserData
5714)
5715{
5716 WDI_EventInfoType wdiEventData;
5717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5718
5719 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005720 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 ------------------------------------------------------------------------*/
5722 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5723 {
5724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5725 "WDI API call before module is initialized - Fail request");
5726
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 }
5729
5730 /*------------------------------------------------------------------------
5731 Fill in Event data and post to the Main FSM
5732 ------------------------------------------------------------------------*/
5733 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005734 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5735 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5736 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 wdiEventData.pUserData = pUserData;
5738
5739 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5740
5741}/*WDI_AddBAReq*/
5742
5743/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 wishes to update any of the Beacon parameters used by HW.
5746 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5747 message to the lower RIVA sub-system if DAL is in state
5748 STARTED.
5749
5750 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005752
5753 WDI_PostAssocReq must have been called.
5754
Jeff Johnsone7245742012-09-05 17:12:55 -07005755 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005757
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 wdiUpdateBeaconParamsRspCb: callback for passing back the
5759 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005760
Jeff Johnson295189b2012-06-20 16:38:30 -07005761 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005762 callback
5763
Jeff Johnson295189b2012-06-20 16:38:30 -07005764 @see WDI_PostAssocReq
5765 @return Result of the function call
5766*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005767WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005768WDI_UpdateBeaconParamsReq
5769(
5770 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5771 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5772 void* pUserData
5773)
5774{
5775 WDI_EventInfoType wdiEventData;
5776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5777
5778 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005780 ------------------------------------------------------------------------*/
5781 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5782 {
5783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5784 "WDI API call before module is initialized - Fail request");
5785
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 }
5788
5789 /*------------------------------------------------------------------------
5790 Fill in Event data and post to the Main FSM
5791 ------------------------------------------------------------------------*/
5792 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005793 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5794 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5795 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 wdiEventData.pUserData = pUserData;
5797
5798 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5799
5800}/*WDI_UpdateBeaconParamsReq*/
5801
5802/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005804 wishes to update the Beacon template used by HW.
5805 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5806 message to the lower RIVA sub-system if DAL is in state
5807 STARTED.
5808
5809 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005811
5812 WDI_PostAssocReq must have been called.
5813
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005816
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 wdiSendBeaconParamsRspCb: callback for passing back the
5818 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005819
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 callback
5822
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 @see WDI_PostAssocReq
5824 @return Result of the function call
5825*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005826WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005827WDI_SendBeaconParamsReq
5828(
5829 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5830 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5831 void* pUserData
5832)
5833{
5834 WDI_EventInfoType wdiEventData;
5835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5836
5837 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005838 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 ------------------------------------------------------------------------*/
5840 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5841 {
5842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5843 "WDI API call before module is initialized - Fail request");
5844
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005846 }
5847
5848 /*------------------------------------------------------------------------
5849 Fill in Event data and post to the Main FSM
5850 ------------------------------------------------------------------------*/
5851 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005852 wdiEventData.pEventData = pwdiSendBeaconParams;
5853 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5854 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 wdiEventData.pUserData = pUserData;
5856
5857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5858
5859}/*WDI_SendBeaconParamsReq*/
5860
5861/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005863 upper MAC wants to update the probe response template to
5864 be transmitted as Soft AP
5865 Upon the call of this API the WLAN DAL will
5866 pack and send the probe rsp template message to the
5867 lower RIVA sub-system if DAL is in state STARTED.
5868
5869 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005870 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005871
5872
Jeff Johnsone7245742012-09-05 17:12:55 -07005873 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005874 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005875
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 wdiSendBeaconParamsRspCb: callback for passing back the
5877 response of the Send Beacon Params operation received
5878 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005879
Jeff Johnson295189b2012-06-20 16:38:30 -07005880 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 callback
5882
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 @see WDI_AddBAReq
5884 @return Result of the function call
5885*/
5886
Jeff Johnsone7245742012-09-05 17:12:55 -07005887WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005888WDI_UpdateProbeRspTemplateReq
5889(
5890 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5891 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5892 void* pUserData
5893)
5894{
5895 WDI_EventInfoType wdiEventData;
5896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5897
5898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005899 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 ------------------------------------------------------------------------*/
5901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5902 {
5903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5904 "WDI API call before module is initialized - Fail request");
5905
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 }
5908
5909 /*------------------------------------------------------------------------
5910 Fill in Event data and post to the Main FSM
5911 ------------------------------------------------------------------------*/
5912 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005913 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5914 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5915 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 wdiEventData.pUserData = pUserData;
5917
5918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5919
5920}/*WDI_UpdateProbeRspTemplateReq*/
5921
5922/**
5923 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5924 to the NV memory.
5925
5926
5927 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5928 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005929
Jeff Johnson295189b2012-06-20 16:38:30 -07005930 wdiNvDownloadRspCb: callback for passing back the response of
5931 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005932
Jeff Johnson295189b2012-06-20 16:38:30 -07005933 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 callback
5935
Jeff Johnson295189b2012-06-20 16:38:30 -07005936 @see WDI_PostAssocReq
5937 @return Result of the function call
5938*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005939WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005940WDI_NvDownloadReq
5941(
5942 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5943 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5944 void* pUserData
5945)
5946{
5947 WDI_EventInfoType wdiEventData;
5948
5949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 ------------------------------------------------------------------------*/
5952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5953 {
5954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5955 "WDI API call before module is initialized - Fail request");
5956
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005958 }
5959
5960 /*------------------------------------------------------------------------
5961 Fill in Event data and post to the Main FSM
5962 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5964 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5965 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5966 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 wdiEventData.pUserData = pUserData;
5968
5969 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5970
5971}/*WDI_NVDownloadReq*/
5972
Jeff Johnson295189b2012-06-20 16:38:30 -07005973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005974 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005975 upper MAC wants to send Notice of Absence
5976 Upon the call of this API the WLAN DAL will
5977 pack and send the probe rsp template message to the
5978 lower RIVA sub-system if DAL is in state STARTED.
5979
5980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005982
5983
Jeff Johnsone7245742012-09-05 17:12:55 -07005984 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005986
Jeff Johnson295189b2012-06-20 16:38:30 -07005987 wdiSendBeaconParamsRspCb: callback for passing back the
5988 response of the Send Beacon Params operation received
5989 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005990
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 callback
5993
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 @see WDI_AddBAReq
5995 @return Result of the function call
5996*/
5997WDI_Status
5998WDI_SetP2PGONOAReq
5999(
6000 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6001 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6002 void* pUserData
6003)
6004{
6005 WDI_EventInfoType wdiEventData;
6006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6007
6008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 ------------------------------------------------------------------------*/
6011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6012 {
6013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6014 "WDI API call before module is initialized - Fail request");
6015
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 }
6018
6019 /*------------------------------------------------------------------------
6020 Fill in Event data and post to the Main FSM
6021 ------------------------------------------------------------------------*/
6022 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6024 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6025 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006026 wdiEventData.pUserData = pUserData;
6027
6028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6029
6030}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006031
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306032#ifdef FEATURE_WLAN_TDLS
6033/**
6034 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6035 upper MAC wants to send TDLS Link Establish Request Parameters
6036 Upon the call of this API the WLAN DAL will
6037 pack and send the TDLS Link Establish Request message to the
6038 lower RIVA sub-system if DAL is in state STARTED.
6039
6040 In state BUSY this request will be queued. Request won't
6041 be allowed in any other state.
6042
6043
6044 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6045 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6046
6047 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6048 response of the TDLS Link Establish request received
6049 from the device
6050
6051 pUserData: user data will be passed back with the
6052 callback
6053
6054 @see
6055 @return Result of the function call
6056*/
6057WDI_Status
6058WDI_SetTDLSLinkEstablishReq
6059(
6060 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6061 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6062 void* pUserData
6063)
6064{
6065 WDI_EventInfoType wdiEventData;
6066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6067
6068 /*------------------------------------------------------------------------
6069 Sanity Check
6070 ------------------------------------------------------------------------*/
6071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6072 {
6073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6074 "WDI API call before module is initialized - Fail request");
6075
6076 return WDI_STATUS_E_NOT_ALLOWED;
6077 }
6078
6079 /*------------------------------------------------------------------------
6080 Fill in Event data and post to the Main FSM
6081 ------------------------------------------------------------------------*/
6082 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6083 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6084 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6085 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6086 wdiEventData.pUserData = pUserData;
6087
6088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6089
6090}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306091
6092//tdlsoffchan
6093/**
6094 @brief WDI_SetTDLSChanSwitchReq will be called when the
6095 upper MAC wants to send TDLS Chan Switch Request Parameters
6096 Upon the call of this API the WLAN DAL will
6097 pack and send the TDLS Link Establish Request message to the
6098 lower RIVA sub-system if DAL is in state STARTED.
6099
6100 In state BUSY this request will be queued. Request won't
6101 be allowed in any other state.
6102
6103
6104 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6105 for Link Establishment (Used for TDLS Off Channel ...)
6106
6107 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6108 response of the TDLS Chan Switch request received
6109 from the device
6110
6111 pUserData: user data will be passed back with the
6112 callback
6113
6114 @see
6115 @return Result of the function call
6116*/
6117WDI_Status
6118WDI_SetTDLSChanSwitchReq
6119(
6120 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6121 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6122 void* pUserData
6123)
6124{
6125 WDI_EventInfoType wdiEventData;
6126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6127
6128 /*------------------------------------------------------------------------
6129 Sanity Check
6130 ------------------------------------------------------------------------*/
6131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6132 {
6133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6134 "WDI API call before module is initialized - Fail request");
6135
6136 return WDI_STATUS_E_NOT_ALLOWED;
6137 }
6138
6139 /*------------------------------------------------------------------------
6140 Fill in Event data and post to the Main FSM
6141 ------------------------------------------------------------------------*/
6142 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6143 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6144 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6145 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6146 wdiEventData.pUserData = pUserData;
6147
6148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6149
6150}/*WDI_SetTDLSChanSwitchReq*/
6151
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306152#endif
6153
Jeff Johnson295189b2012-06-20 16:38:30 -07006154/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006155 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 UMAC wanted to add STA self while opening any new session
6157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006159
6160
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006163
Jeff Johnson295189b2012-06-20 16:38:30 -07006164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 callback
6166
6167 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006168 @return Result of the function call
6169*/
6170WDI_Status
6171WDI_AddSTASelfReq
6172(
6173 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6174 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6175 void* pUserData
6176)
6177{
6178 WDI_EventInfoType wdiEventData;
6179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6180
6181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 ------------------------------------------------------------------------*/
6184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6185 {
6186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6187 "WDI API call before module is initialized - Fail request");
6188
Jeff Johnsone7245742012-09-05 17:12:55 -07006189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 }
6191
6192 /*------------------------------------------------------------------------
6193 Fill in Event data and post to the Main FSM
6194 ------------------------------------------------------------------------*/
6195 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6197 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6198 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006199 wdiEventData.pUserData = pUserData;
6200
6201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6202
6203}/*WDI_AddSTASelfReq*/
6204
6205
Jeff Johnsone7245742012-09-05 17:12:55 -07006206#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006207/**
6208 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6209 the device of a successful add TSpec negotiation. HW
6210 needs to receive the TSpec Info from the UMAC in order
6211 to configure properly the QoS data traffic. Upon the
6212 call of this API the WLAN DAL will pack and send a HAL
6213 Add TS request message to the lower RIVA sub-system if
6214 DAL is in state STARTED.
6215
6216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006218
6219 WDI_PostAssocReq must have been called.
6220
6221 @param wdiAddTsReqParams: the add TS parameters as specified by
6222 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006223
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 wdiAddTsRspCb: callback for passing back the response of
6225 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006226
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006228 callback
6229
Jeff Johnson295189b2012-06-20 16:38:30 -07006230 @see WDI_PostAssocReq
6231 @return Result of the function call
6232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006234WDI_AggrAddTSReq
6235(
6236 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6237 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6238 void* pUserData
6239)
6240{
6241 WDI_EventInfoType wdiEventData;
6242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6243
6244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 ------------------------------------------------------------------------*/
6247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6248 {
6249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6250 "WDI API call before module is initialized - Fail request");
6251
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 }
6254
6255 /*------------------------------------------------------------------------
6256 Fill in Event data and post to the Main FSM
6257 ------------------------------------------------------------------------*/
6258 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006259 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6260 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6261 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 wdiEventData.pUserData = pUserData;
6263
6264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6265
6266}/*WDI_AggrAddTSReq*/
6267
6268#endif /* WLAN_FEATURE_VOWIFI_11R */
6269
Jeff Johnson295189b2012-06-20 16:38:30 -07006270/**
6271 @brief WDI_FTMCommandReq
6272 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006273
6274 @param ftmCommandReq: FTM Command Body
6275 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006277
Jeff Johnson295189b2012-06-20 16:38:30 -07006278 @see
6279 @return Result of the function call
6280*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006281WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006282WDI_FTMCommandReq
6283(
6284 WDI_FTMCommandReqType *ftmCommandReq,
6285 WDI_FTMCommandRspCb ftmCommandRspCb,
6286 void *pUserData
6287)
6288{
6289 WDI_EventInfoType wdiEventData;
6290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6291
6292 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 ------------------------------------------------------------------------*/
6295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6296 {
6297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6298 "WDI API call before module is initialized - Fail request");
6299
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 }
6302
6303 /*------------------------------------------------------------------------
6304 Fill in Event data and post to the Main FSM
6305 ------------------------------------------------------------------------*/
6306 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6307 wdiEventData.pEventData = (void *)ftmCommandReq;
6308 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6309 wdiEventData.pCBfnc = ftmCommandRspCb;
6310 wdiEventData.pUserData = pUserData;
6311
6312 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6313}
Jeff Johnson295189b2012-06-20 16:38:30 -07006314/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006315 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006316
6317 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006319
6320
6321 @param pwdiResumeReqParams: as specified by
6322 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006323
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 wdiResumeReqRspCb: callback for passing back the response of
6325 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006326
Jeff Johnson295189b2012-06-20 16:38:30 -07006327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 callback
6329
6330 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006331 @return Result of the function call
6332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006334WDI_HostResumeReq
6335(
6336 WDI_ResumeParamsType* pwdiResumeReqParams,
6337 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6338 void* pUserData
6339)
6340{
6341 WDI_EventInfoType wdiEventData;
6342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6343
6344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 ------------------------------------------------------------------------*/
6347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6348 {
6349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6350 "WDI API call before module is initialized - Fail request");
6351
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 }
6354
6355 /*------------------------------------------------------------------------
6356 Fill in Event data and post to the Main FSM
6357 ------------------------------------------------------------------------*/
6358 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006359 wdiEventData.pEventData = pwdiResumeReqParams;
6360 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6361 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 wdiEventData.pUserData = pUserData;
6363
6364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6365
6366}/*WDI_HostResumeReq*/
6367
6368/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006369 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006370
6371 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006372 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006373
6374
6375 @param pwdiDelStaSelfReqParams: as specified by
6376 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006377
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 wdiDelStaSelfRspCb: callback for passing back the response of
6379 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006380
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006382 callback
6383
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 @see WDI_PostAssocReq
6385 @return Result of the function call
6386*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006387WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006388WDI_DelSTASelfReq
6389(
6390 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6391 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6392 void* pUserData
6393)
6394{
6395 WDI_EventInfoType wdiEventData;
6396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6397
6398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 ------------------------------------------------------------------------*/
6401 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6402 {
6403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6404 "WDI API call before module is initialized - Fail request");
6405
Jeff Johnsone7245742012-09-05 17:12:55 -07006406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 }
6408
6409 /*------------------------------------------------------------------------
6410 Fill in Event data and post to the Main FSM
6411 ------------------------------------------------------------------------*/
6412 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006413 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6414 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6415 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 wdiEventData.pUserData = pUserData;
6417
6418 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6419
6420}/*WDI_AggrAddTSReq*/
6421
6422/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6424 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 Upon the call of this API the WLAN DAL will pack
6426 and send a HAL Set Tx Per Tracking request message to the
6427 lower RIVA sub-system if DAL is in state STARTED.
6428
6429 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006431
Jeff Johnsone7245742012-09-05 17:12:55 -07006432 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006434
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 pwdiSetTxPerTrackingRspCb: callback for passing back the
6436 response of the set Tx PER Tracking configurations operation received
6437 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006438
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 callback
6441
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 @return Result of the function call
6443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006445WDI_SetTxPerTrackingReq
6446(
6447 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6448 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6449 void* pUserData
6450)
6451{
6452 WDI_EventInfoType wdiEventData;
6453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6454
6455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 ------------------------------------------------------------------------*/
6458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6459 {
6460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6461 "WDI API call before module is initialized - Fail request");
6462
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 }
6465
6466 /*------------------------------------------------------------------------
6467 Fill in Event data and post to the Main FSM
6468 ------------------------------------------------------------------------*/
6469 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006472 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006473 wdiEventData.pUserData = pUserData;
6474
6475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6476
6477}/*WDI_SetTxPerTrackingReq*/
6478
6479/**
6480 @brief WDI_SetTmLevelReq
6481 If HW Thermal condition changed, driver should react based on new
6482 HW thermal condition.
6483
6484 @param pwdiSetTmLevelReq: New thermal condition information
6485
6486 pwdiSetTmLevelRspCb: callback
6487
6488 usrData: user data will be passed back with the
6489 callback
6490
6491 @return Result of the function call
6492*/
6493WDI_Status
6494WDI_SetTmLevelReq
6495(
6496 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6497 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6498 void *usrData
6499)
6500{
6501 WDI_EventInfoType wdiEventData;
6502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6503
6504 /*------------------------------------------------------------------------
6505 Sanity Check
6506 ------------------------------------------------------------------------*/
6507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6508 {
6509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6510 "WDI API call before module is initialized - Fail request");
6511
6512 return WDI_STATUS_E_NOT_ALLOWED;
6513 }
6514
6515 /*------------------------------------------------------------------------
6516 Fill in Event data and post to the Main FSM
6517 ------------------------------------------------------------------------*/
6518 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6519 wdiEventData.pEventData = pwdiSetTmLevelReq;
6520 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6521 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6522 wdiEventData.pUserData = usrData;
6523
6524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6525}
6526
6527/**
6528 @brief WDI_HostSuspendInd
6529
6530 Suspend Indication from the upper layer will be sent
6531 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006532
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006534
6535 @see
6536
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 @return Status of the request
6538*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006540WDI_HostSuspendInd
6541(
6542 WDI_SuspendParamsType* pwdiSuspendIndParams
6543)
6544{
6545
6546 WDI_EventInfoType wdiEventData;
6547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6548
6549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 ------------------------------------------------------------------------*/
6552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6553 {
6554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6555 "WDI API call before module is initialized - Fail request");
6556
Jeff Johnsone7245742012-09-05 17:12:55 -07006557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006558 }
6559
6560 /*------------------------------------------------------------------------
6561 Fill in Event data and post to the Main FSM
6562 ------------------------------------------------------------------------*/
6563 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 wdiEventData.pEventData = pwdiSuspendIndParams;
6565 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6566 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006567 wdiEventData.pUserData = NULL;
6568
6569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6570
6571}/*WDI_HostSuspendInd*/
6572
6573/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006574 @brief WDI_TrafficStatsInd
6575 Traffic Stats from the upper layer will be sent
6576 down to HAL
6577
6578 @param WDI_TrafficStatsIndType
6579
6580 @see
6581
6582 @return Status of the request
6583*/
6584WDI_Status
6585WDI_TrafficStatsInd
6586(
6587 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6588)
6589{
6590
6591 WDI_EventInfoType wdiEventData;
6592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6593
6594 /*------------------------------------------------------------------------
6595 Sanity Check
6596 ------------------------------------------------------------------------*/
6597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6598 {
6599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6600 "WDI API call before module is initialized - Fail request");
6601
6602 return WDI_STATUS_E_NOT_ALLOWED;
6603 }
6604
6605 /*------------------------------------------------------------------------
6606 Fill in Event data and post to the Main FSM
6607 ------------------------------------------------------------------------*/
6608 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6609 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6610 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6611 wdiEventData.pCBfnc = NULL;
6612 wdiEventData.pUserData = NULL;
6613
6614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6615
6616}/*WDI_TrafficStatsInd*/
6617
Chet Lanctot186b5732013-03-18 10:26:30 -07006618#ifdef WLAN_FEATURE_11W
6619/**
6620 @brief WDI_ExcludeUnencryptedInd
6621 Register with HAL to receive/drop unencrypted frames
6622
6623 @param WDI_ExcludeUnencryptIndType
6624
6625 @see
6626
6627 @return Status of the request
6628*/
6629WDI_Status
6630WDI_ExcludeUnencryptedInd
6631(
6632 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6633)
6634{
6635
6636 WDI_EventInfoType wdiEventData;
6637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6638
6639 /*------------------------------------------------------------------------
6640 Sanity Check
6641 ------------------------------------------------------------------------*/
6642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6643 {
6644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6645 "WDI API call before module is initialized - Fail request");
6646
6647 return WDI_STATUS_E_NOT_ALLOWED;
6648 }
6649
6650 /*------------------------------------------------------------------------
6651 Fill in Event data and post to the Main FSM
6652 ------------------------------------------------------------------------*/
6653 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6654 wdiEventData.pEventData = pWdiExcUnencParams;
6655 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6656 wdiEventData.pCBfnc = NULL;
6657 wdiEventData.pUserData = NULL;
6658
6659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6660
6661}/*WDI_TrafficStatsInd*/
6662#endif
6663
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006664/**
Yue Mab9c86f42013-08-14 15:59:08 -07006665 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6666
6667 @param addPeriodicTxPtrnParams: Add Pattern parameters
6668
6669 @see
6670
6671 @return Status of the request
6672*/
6673WDI_Status
6674WDI_AddPeriodicTxPtrnInd
6675(
6676 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6677)
6678{
6679 WDI_EventInfoType wdiEventData;
6680
6681 /*-------------------------------------------------------------------------
6682 Sanity Check
6683 ------------------------------------------------------------------------*/
6684 if (eWLAN_PAL_FALSE == gWDIInitialized)
6685 {
6686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6687 "WDI API call before module is initialized - Fail request!");
6688
6689 return WDI_STATUS_E_NOT_ALLOWED;
6690 }
6691
6692 /*-------------------------------------------------------------------------
6693 Fill in Event data and post to the Main FSM
6694 ------------------------------------------------------------------------*/
6695 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6696 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6697 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6698 wdiEventData.pCBfnc = NULL;
6699 wdiEventData.pUserData = NULL;
6700
6701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6702}
6703
6704/**
6705 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6706
6707 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6708
6709 @see
6710
6711 @return Status of the request
6712*/
6713WDI_Status
6714WDI_DelPeriodicTxPtrnInd
6715(
6716 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6717)
6718{
6719 WDI_EventInfoType wdiEventData;
6720
6721 /*-------------------------------------------------------------------------
6722 Sanity Check
6723 ------------------------------------------------------------------------*/
6724 if (eWLAN_PAL_FALSE == gWDIInitialized)
6725 {
6726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6727 "WDI API call before module is initialized - Fail request!");
6728
6729 return WDI_STATUS_E_NOT_ALLOWED;
6730 }
6731
6732 /*-------------------------------------------------------------------------
6733 Fill in Event data and post to the Main FSM
6734 ------------------------------------------------------------------------*/
6735 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6736 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6737 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6738 wdiEventData.pCBfnc = NULL;
6739 wdiEventData.pUserData = NULL;
6740
6741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6742}
6743
6744/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 @brief WDI_HALDumpCmdReq
6746 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
6748 @param halDumpCmdReqParams: Hal Dump Command Body
6749 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006751
Jeff Johnson295189b2012-06-20 16:38:30 -07006752 @see
6753 @return Result of the function call
6754*/
6755WDI_Status WDI_HALDumpCmdReq
6756(
6757 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6758 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6759 void *pUserData
6760)
6761{
6762 WDI_EventInfoType wdiEventData;
6763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6764
6765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006767 ------------------------------------------------------------------------*/
6768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6769 {
6770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6771 "WDI API call before module is initialized - Fail request");
6772
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 }
6775
6776 /*------------------------------------------------------------------------
6777 Fill in Event data and post to the Main FSM
6778 ------------------------------------------------------------------------*/
6779 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6780 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6781 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6782 wdiEventData.pCBfnc = halDumpCmdRspCb;
6783 wdiEventData.pUserData = pUserData;
6784
6785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6786}
6787
Jeff Johnsone7245742012-09-05 17:12:55 -07006788/*============================================================================
6789
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
Jeff Johnson295189b2012-06-20 16:38:30 -07006792 ============================================================================*/
6793
6794/**
6795 @brief Main FSM Start function for all states except BUSY
6796
Jeff Johnsone7245742012-09-05 17:12:55 -07006797
6798 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006799 wdiEV: event posted to the main DAL FSM
6800 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 structure
6802
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 @see
6804 @return Result of the function call
6805*/
6806WDI_Status
6807WDI_PostMainEvent
6808(
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 WDI_ControlBlockType* pWDICtx,
6810 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006812)
6813{
Jeff Johnsone7245742012-09-05 17:12:55 -07006814 WDI_Status wdiStatus;
6815 WDI_MainFuncType pfnWDIMainEvHdlr;
6816 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6818
6819 /*-------------------------------------------------------------------------
6820 Sanity check
6821 -------------------------------------------------------------------------*/
6822 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6823 ( wdiEV >= WDI_MAX_EVENT ))
6824 {
6825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6826 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6827 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 }
6830
6831 /*Access to the global state must be locked */
6832 wpalMutexAcquire(&pWDICtx->wptMutex);
6833
6834 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006835 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006836
6837 wdiOldState = pWDICtx->uGlobalState;
6838
6839 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006840 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6841 response comes from CCPU for the request sent by host:
6842 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 -07006843 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 -07006844 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 CCPU:
6846 don't change the state */
6847 if ( WDI_RESPONSE_EVENT != wdiEV)
6848 {
6849 /*Transition to BUSY State - the request is now being processed by the FSM,
6850 if the request fails we shall transition back to the old state, if not
6851 the request will manage its own state transition*/
6852 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6853 }
6854 /* If the state function associated with the EV is NULL it means that this
6855 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 {
6858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006860 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 }
6863 else
6864 {
6865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006866 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 }
6870
6871 /* If a request handles itself well it will end up in a success or in a
6872 pending
6873 Success - means that the request was processed and the proper state
6874 transition already occurred or will occur when the resp is received
6875 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006876
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 Pending - means the request could not be processed at this moment in time
6878 because the FSM was already busy so no state transition or dequeueing
6879 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006880
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 Success for synchronous case means that the transition may occur and
6882 processing of pending requests may continue - so it should go through
6883 and restores the state and continue processing queued requests*/
6884 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6885 ( WDI_STATUS_PENDING != wdiStatus ))
6886 {
6887 if ( WDI_RESPONSE_EVENT != wdiEV)
6888 {
6889 /*The request has failed or could not be processed - transition back to
6890 the old state - check to see if anything was queued and try to execute
6891 The dequeue logic should post a message to a thread and return - no
6892 actual processing can occur */
6893 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6894 }
6895 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006896
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 }
6898
6899 /* we have completed processing the event */
6900 wpalMutexRelease(&pWDICtx->wptMutex);
6901
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006903
6904}/*WDI_PostMainEvent*/
6905
6906
6907/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006908 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006909--------------------------------------------------------------------------*/
6910/**
6911 @brief Main FSM Start function for all states except BUSY
6912
Jeff Johnsone7245742012-09-05 17:12:55 -07006913
6914 @param pWDICtx: pointer to the WLAN DAL context
6915 pEventData: pointer to the event information structure
6916
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 @see
6918 @return Result of the function call
6919*/
6920WDI_Status
6921WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006922(
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 WDI_ControlBlockType* pWDICtx,
6924 WDI_EventInfoType* pEventData
6925)
6926{
6927
6928 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 ----------------------------------------------------------------------*/
6931 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6932 {
6933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006934 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 pWDICtx, pEventData);
6936 return WDI_STATUS_E_FAILURE;
6937 }
6938
6939 wpalMutexAcquire(&pWDICtx->wptMutex);
6940
6941 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 ----------------------------------------------------------------------*/
6944 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6945 {
6946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6947 "Control Transport not yet Open - queueing the request");
6948
6949 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006951
6952 wpalMutexRelease(&pWDICtx->wptMutex);
6953 return WDI_STATUS_PENDING;
6954 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006955
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 wpalMutexRelease(&pWDICtx->wptMutex);
6957
6958 /*Return Success*/
6959 return WDI_ProcessRequest( pWDICtx, pEventData );
6960
6961}/*WDI_MainStart*/
6962
6963/**
6964 @brief Main FSM Response function for state INIT
6965
Jeff Johnsone7245742012-09-05 17:12:55 -07006966
6967 @param pWDICtx: pointer to the WLAN DAL context
6968 pEventData: pointer to the event information structure
6969
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 @see
6971 @return Result of the function call
6972*/
6973WDI_Status
6974WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006975(
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 WDI_ControlBlockType* pWDICtx,
6977 WDI_EventInfoType* pEventData
6978)
6979{
6980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006984
6985 /*Return Success*/
6986 return WDI_STATUS_E_NOT_ALLOWED;
6987}/* WDI_MainRspInit */
6988
6989/**
6990 @brief Main FSM Close function for all states except BUSY
6991
Jeff Johnsone7245742012-09-05 17:12:55 -07006992
6993 @param pWDICtx: pointer to the WLAN DAL context
6994 pEventData: pointer to the event information structure
6995
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 @see
6997 @return Result of the function call
6998*/
6999WDI_Status
7000WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007001(
Jeff Johnson295189b2012-06-20 16:38:30 -07007002 WDI_ControlBlockType* pWDICtx,
7003 WDI_EventInfoType* pEventData
7004)
7005{
7006
7007 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 ----------------------------------------------------------------------*/
7010 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7011 {
7012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007013 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 pWDICtx, pEventData);
7015 return WDI_STATUS_E_FAILURE;
7016 }
7017
7018 /*Return Success*/
7019 return WDI_ProcessRequest( pWDICtx, pEventData );
7020
7021}/*WDI_MainClose*/
7022/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007024--------------------------------------------------------------------------*/
7025/**
7026 @brief Main FSM Start function for state STARTED
7027
Jeff Johnsone7245742012-09-05 17:12:55 -07007028
7029 @param pWDICtx: pointer to the WLAN DAL context
7030 pEventData: pointer to the event information structure
7031
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 @see
7033 @return Result of the function call
7034*/
7035WDI_Status
7036WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007037(
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 WDI_ControlBlockType* pWDICtx,
7039 WDI_EventInfoType* pEventData
7040)
7041{
7042 WDI_StartRspCb wdiStartRspCb = NULL;
7043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7044
7045 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 ----------------------------------------------------------------------*/
7048 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7049 {
7050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007051 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 pWDICtx, pEventData);
7053 return WDI_STATUS_E_FAILURE;
7054 }
7055
7056 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 ----------------------------------------------------------------------*/
7059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007061
7062 wpalMutexAcquire(&pWDICtx->wptMutex);
7063
7064 /*Transition back to started because the post function transitioned us to
7065 busy*/
7066 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7067
7068 /*Check to see if any request is pending*/
7069 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007070
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 wpalMutexRelease(&pWDICtx->wptMutex);
7072
7073 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7075
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 /*Notify UMAC*/
7077 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
7078
7079 /*Return Success*/
7080 return WDI_STATUS_SUCCESS;
7081
7082}/*WDI_MainStartStarted*/
7083
7084/**
7085 @brief Main FSM Stop function for state STARTED
7086
Jeff Johnsone7245742012-09-05 17:12:55 -07007087
7088 @param pWDICtx: pointer to the WLAN DAL context
7089 pEventData: pointer to the event information structure
7090
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 @see
7092 @return Result of the function call
7093*/
7094WDI_Status
7095WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007096(
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 WDI_ControlBlockType* pWDICtx,
7098 WDI_EventInfoType* pEventData
7099)
7100{
7101 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 ----------------------------------------------------------------------*/
7104 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7105 {
7106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007107 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 pWDICtx, pEventData);
7109 return WDI_STATUS_E_FAILURE;
7110 }
7111
7112 /*State at this point is BUSY - because we enter this state before posting
7113 an event to the FSM in order to prevent potential race conditions*/
7114
7115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7116 "Processing stop request in FSM");
7117
7118 /*Return Success*/
7119 return WDI_ProcessRequest( pWDICtx, pEventData );
7120
7121}/*WDI_MainStopStarted*/
7122/**
7123 @brief Main FSM Request function for state started
7124
Jeff Johnsone7245742012-09-05 17:12:55 -07007125
7126 @param pWDICtx: pointer to the WLAN DAL context
7127 pEventData: pointer to the event information structure
7128
Jeff Johnson295189b2012-06-20 16:38:30 -07007129 @see
7130 @return Result of the function call
7131*/
7132WDI_Status
7133WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007134(
Jeff Johnson295189b2012-06-20 16:38:30 -07007135 WDI_ControlBlockType* pWDICtx,
7136 WDI_EventInfoType* pEventData
7137)
7138{
7139
7140 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 ----------------------------------------------------------------------*/
7143 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7144 {
7145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007146 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 pWDICtx, pEventData);
7148 return WDI_STATUS_E_FAILURE;
7149 }
7150
7151 /*State at this point is BUSY - because we enter this state before posting
7152 an event to the FSM in order to prevent potential race conditions*/
7153
7154 /*Return Success*/
7155 return WDI_ProcessRequest( pWDICtx, pEventData );
7156
7157}/*WDI_MainReqStarted*/
7158
7159/**
7160 @brief Main FSM Response function for all states except INIT
7161
Jeff Johnsone7245742012-09-05 17:12:55 -07007162
7163 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007165
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 @see
7167 @return Result of the function call
7168*/
7169WDI_Status
7170WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007171(
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 WDI_ControlBlockType* pWDICtx,
7173 WDI_EventInfoType* pEventData
7174)
7175{
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 wpt_boolean expectedResponse;
7178
7179 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 ----------------------------------------------------------------------*/
7182 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7183 {
7184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007185 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 pWDICtx, pEventData);
7187 return WDI_STATUS_E_FAILURE;
7188 }
7189
7190 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7191 {
7192 /* we received an expected response */
7193 expectedResponse = eWLAN_PAL_TRUE;
7194
7195 /*We expect that we will transition to started after this processing*/
7196 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7197
7198 /* we are no longer expecting a response */
7199 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7200 }
7201 else
7202 {
7203 /* we received an indication or unexpected response */
7204 expectedResponse = eWLAN_PAL_FALSE;
7205 /* for indications no need to update state from what it is right
7206 now, unless it explicitly does it in the indication handler (say
7207 for device failure ind) */
7208 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7209 }
7210
7211 /*Process the response and indication */
7212 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7213
7214 /*Lock the CB as we are about to do a state transition*/
7215 wpalMutexAcquire(&pWDICtx->wptMutex);
7216
7217 /*Transition to the expected state after the response processing
7218 - this should always be started state with the following exceptions:
7219 1. processing of a failed start response
7220 2. device failure detected while processing response
7221 3. stop response received*/
7222 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007223
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 /*Dequeue request that may have been queued while we were waiting for the
7225 response */
7226 if ( expectedResponse )
7227 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 }
7230
7231 wpalMutexRelease(&pWDICtx->wptMutex);
7232
7233 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007235
7236}/*WDI_MainRsp*/
7237
7238/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007240--------------------------------------------------------------------------*/
7241/**
7242 @brief Main FSM Stop function for state STOPPED
7243
Jeff Johnsone7245742012-09-05 17:12:55 -07007244
7245 @param pWDICtx: pointer to the WLAN DAL context
7246 pEventData: pointer to the event information structure
7247
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 @see
7249 @return Result of the function call
7250*/
7251WDI_Status
7252WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007253(
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 WDI_ControlBlockType* pWDICtx,
7255 WDI_EventInfoType* pEventData
7256)
7257{
7258 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 ----------------------------------------------------------------------*/
7261 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7262 {
7263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007264 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007265 pWDICtx, pEventData);
7266 return WDI_STATUS_E_FAILURE;
7267 }
7268
7269 /*We should normally not get a STOP request if we are already stopped
7270 since we should normally be stopped by the UMAC. However in some
7271 error situations we put ourselves in the stopped state without the
7272 UMAC knowing, so when we get a STOP request in this state we still
7273 process it since we need to clean up the underlying state */
7274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7275 "Processing stop request while stopped in FSM");
7276
7277 /*Return Success*/
7278 return WDI_ProcessRequest( pWDICtx, pEventData );
7279
7280}/*WDI_MainStopStopped*/
7281
7282/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007284--------------------------------------------------------------------------*/
7285/**
7286 @brief Main FSM Start function for state BUSY
7287
Jeff Johnsone7245742012-09-05 17:12:55 -07007288
7289 @param pWDICtx: pointer to the WLAN DAL context
7290 pEventData: pointer to the event information structure
7291
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 @see
7293 @return Result of the function call
7294*/
7295WDI_Status
7296WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007297(
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 WDI_ControlBlockType* pWDICtx,
7299 WDI_EventInfoType* pEventData
7300)
7301{
7302 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 ----------------------------------------------------------------------*/
7305 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7306 {
7307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007308 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 pWDICtx, pEventData);
7310 return WDI_STATUS_E_FAILURE;
7311 }
7312
7313 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 ----------------------------------------------------------------------*/
7316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7317 "WDI Busy state - queue start request");
7318
7319 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007321
7322 /*Return Success*/
7323 return WDI_STATUS_PENDING;
7324}/*WDI_MainStartBusy*/
7325
7326/**
7327 @brief Main FSM Stop function for state BUSY
7328
Jeff Johnsone7245742012-09-05 17:12:55 -07007329
7330 @param pWDICtx: pointer to the WLAN DAL context
7331 pEventData: pointer to the event information structure
7332
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 @see
7334 @return Result of the function call
7335*/
7336WDI_Status
7337WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007338(
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 WDI_ControlBlockType* pWDICtx,
7340 WDI_EventInfoType* pEventData
7341)
7342{
7343 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 ----------------------------------------------------------------------*/
7346 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7347 {
7348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007349 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 pWDICtx, pEventData);
7351 return WDI_STATUS_E_FAILURE;
7352 }
7353
7354 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 ----------------------------------------------------------------------*/
7357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7358 "WDI Busy state - queue stop request");
7359
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007362
Jeff Johnson295189b2012-06-20 16:38:30 -07007363}/*WDI_MainStopBusy*/
7364
7365/**
7366 @brief Main FSM Request function for state BUSY
7367
Jeff Johnsone7245742012-09-05 17:12:55 -07007368
7369 @param pWDICtx: pointer to the WLAN DAL context
7370 pEventData: pointer to the event information structure
7371
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 @see
7373 @return Result of the function call
7374*/
7375WDI_Status
7376WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007377(
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 WDI_ControlBlockType* pWDICtx,
7379 WDI_EventInfoType* pEventData
7380)
7381{
7382 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007384 ----------------------------------------------------------------------*/
7385 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7386 {
7387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007388 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 pWDICtx, pEventData);
7390 return WDI_STATUS_E_FAILURE;
7391 }
7392
7393 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007394 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 ----------------------------------------------------------------------*/
7396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7397 "WDI Busy state - queue request %d because waiting for response %d",
7398 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7399
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007402
Jeff Johnson295189b2012-06-20 16:38:30 -07007403}/*WDI_MainReqBusy*/
7404/**
7405 @brief Main FSM Close function for state BUSY
7406
Jeff Johnsone7245742012-09-05 17:12:55 -07007407
7408 @param pWDICtx: pointer to the WLAN DAL context
7409 pEventData: pointer to the event information structure
7410
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 @see
7412 @return Result of the function call
7413*/
7414WDI_Status
7415WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007416(
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_ControlBlockType* pWDICtx,
7418 WDI_EventInfoType* pEventData
7419)
7420{
7421 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007422 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 ----------------------------------------------------------------------*/
7424 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7425 {
7426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007427 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pWDICtx, pEventData);
7429 return WDI_STATUS_E_FAILURE;
7430 }
7431
7432 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 ----------------------------------------------------------------------*/
7435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7436 "WDI Busy state - queue close request");
7437
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007440
Jeff Johnson295189b2012-06-20 16:38:30 -07007441}/*WDI_MainCloseBusy*/
7442
7443/**
7444 @brief Main FSM Shutdown function for INIT & STARTED states
7445
7446
7447 @param pWDICtx: pointer to the WLAN DAL context
7448 pEventData: pointer to the event information structure
7449
7450 @see
7451 @return Result of the function call
7452*/
7453WDI_Status
7454WDI_MainShutdown
7455(
7456 WDI_ControlBlockType* pWDICtx,
7457 WDI_EventInfoType* pEventData
7458)
7459{
7460 /*--------------------------------------------------------------------
7461 Sanity Check
7462 ----------------------------------------------------------------------*/
7463 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7464 {
7465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007466 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 pWDICtx, pEventData);
7468 return WDI_STATUS_E_FAILURE;
7469 }
7470
7471 /*State at this point is BUSY - because we enter this state before posting
7472 an event to the FSM in order to prevent potential race conditions*/
7473
7474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7475 "Processing shutdown request in FSM");
7476
7477 /*Return Success*/
7478 return WDI_ProcessRequest( pWDICtx, pEventData );
7479
7480}/*WDI_MainShutdown*/
7481
7482/**
7483 @brief Main FSM Shutdown function for BUSY state
7484
7485
7486 @param pWDICtx: pointer to the WLAN DAL context
7487 pEventData: pointer to the event information structure
7488
7489 @see
7490 @return Result of the function call
7491*/
7492WDI_Status
7493WDI_MainShutdownBusy
7494(
7495 WDI_ControlBlockType* pWDICtx,
7496 WDI_EventInfoType* pEventData
7497)
7498{
7499 /*--------------------------------------------------------------------
7500 Sanity Check
7501 ----------------------------------------------------------------------*/
7502 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7503 {
7504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007505 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 pWDICtx, pEventData);
7507 return WDI_STATUS_E_FAILURE;
7508 }
7509
7510 /* If you are waiting for a HAL response at this stage, you are not
7511 * going to get it. Riva is already shutdown/crashed.
7512 */
7513 wpalTimerStop(&gWDICb.wptResponseTimer);
7514
7515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7516 "Processing shutdown request in FSM: Busy state ");
7517
7518 return WDI_ProcessRequest( pWDICtx, pEventData );
7519
7520}/*WDI_MainShutdownBusy*/
7521
7522
Jeff Johnsone7245742012-09-05 17:12:55 -07007523/*=======================================================================
7524
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007526
Jeff Johnson295189b2012-06-20 16:38:30 -07007527*=======================================================================*/
7528
7529/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007531========================================================================*/
7532/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007535
7536 @param pWDICtx: pointer to the WLAN DAL context
7537 pEventData: pointer to the event information structure
7538
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 @see
7540 @return Result of the function call
7541*/
7542WDI_Status
7543WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007544(
Jeff Johnson295189b2012-06-20 16:38:30 -07007545 WDI_ControlBlockType* pWDICtx,
7546 WDI_EventInfoType* pEventData
7547)
7548{
7549 WDI_StartReqParamsType* pwdiStartParams = NULL;
7550 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 wpt_uint16 usDataOffset = 0;
7553 wpt_uint16 usSendSize = 0;
7554
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 tHalMacStartReqMsg halStartReq;
7556 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7558
7559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 -------------------------------------------------------------------------*/
7562 if (( NULL == pEventData ) ||
7563 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7564 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7565 {
7566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 }
7571
7572 /*-----------------------------------------------------------------------
7573 Get message buffer
7574 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 pwdiStartParams->usConfigBufferLen;
7577
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 usLen,
7580 &pSendBuffer, &usDataOffset, &usSendSize))||
7581 ( usSendSize < (usDataOffset + usLen )))
7582 {
7583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007584 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 pEventData, pwdiStartParams, wdiStartRspCb);
7586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007588 }
7589
7590 /*-----------------------------------------------------------------------
7591 Fill in the message
7592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 halStartReq.startReqParams.driverType =
7594 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007595
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 halStartReq.startReqParams.uConfigBufferLen =
7597 pwdiStartParams->usConfigBufferLen;
7598 wpalMemoryCopy( pSendBuffer+usDataOffset,
7599 &halStartReq.startReqParams,
7600 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007601
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 usDataOffset += sizeof(halStartReq.startReqParams);
7603 wpalMemoryCopy( pSendBuffer+usDataOffset,
7604 pwdiStartParams->pConfigBuffer,
7605 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007606
7607 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007609
7610 /*Save Low Level Ind CB and associated user data - it will be used further
7611 on when an indication is coming from the lower MAC*/
7612 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007614
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7621
Jeff Johnsone7245742012-09-05 17:12:55 -07007622
Jeff Johnson295189b2012-06-20 16:38:30 -07007623}/*WDI_ProcessStartReq*/
7624
7625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007628
7629 @param pWDICtx: pointer to the WLAN DAL context
7630 pEventData: pointer to the event information structure
7631
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 @see
7633 @return Result of the function call
7634*/
7635WDI_Status
7636WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007637(
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 WDI_ControlBlockType* pWDICtx,
7639 WDI_EventInfoType* pEventData
7640)
7641{
7642 WDI_StopReqParamsType* pwdiStopParams = NULL;
7643 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 wpt_uint16 usDataOffset = 0;
7646 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007647 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007648 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7650
7651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 -------------------------------------------------------------------------*/
7654 if (( NULL == pEventData ) ||
7655 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7656 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7657 {
7658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007661 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 }
7663
7664 /*-----------------------------------------------------------------------
7665 Get message buffer
7666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 sizeof(halStopReq.stopReqParams),
7669 &pSendBuffer, &usDataOffset, &usSendSize))||
7670 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7671 {
7672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007673 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 pEventData, pwdiStopParams, wdiStopRspCb);
7675 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007676 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 }
7678
7679 /*-----------------------------------------------------------------------
7680 Fill in the message
7681 -----------------------------------------------------------------------*/
7682 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7683 pwdiStopParams->wdiStopReason);
7684
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 wpalMemoryCopy( pSendBuffer+usDataOffset,
7686 &halStopReq.stopReqParams,
7687 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007688
7689 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007690 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007691
7692 /*! TO DO: stop the data services */
7693 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7694 {
7695 /*Stop the STA Table !UT- check this logic again
7696 It is safer to do it here than on the response - because a stop is imminent*/
7697 WDI_STATableStop(pWDICtx);
7698
7699 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007700 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7701 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 {
7703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7704 "WDI Init failed to reset power state event");
7705
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007707 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 }
7709 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007710 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7711 if( eWLAN_PAL_STATUS_SUCCESS != status )
7712 {
7713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007714 "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 -08007715 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007716 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007717 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007721 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7722 WDI_SET_POWER_STATE_TIMEOUT);
7723 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 {
7725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7726 "WDI Init failed to wait on an event");
7727
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007729 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 }
7731 }
7732
7733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7738
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007739fail:
7740 // Release the message buffer so we don't leak
7741 wpalMemoryFree(pSendBuffer);
7742
7743failRequest:
7744 //WDA should have failure check to avoid the memory leak
7745 return WDI_STATUS_E_FAILURE;
7746
Jeff Johnson295189b2012-06-20 16:38:30 -07007747}/*WDI_ProcessStopReq*/
7748
7749/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007752
7753 @param pWDICtx: pointer to the WLAN DAL context
7754 pEventData: pointer to the event information structure
7755
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 @see
7757 @return Result of the function call
7758*/
7759WDI_Status
7760WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007761(
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 WDI_ControlBlockType* pWDICtx,
7763 WDI_EventInfoType* pEventData
7764)
7765{
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7768
7769 /*Lock control block for cleanup*/
7770 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007771
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 /*Clear all pending request*/
7773 WDI_ClearPendingRequests(pWDICtx);
7774
7775 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007777
7778 /* Close Data transport*/
7779 /* FTM mode does not open Data Path */
7780 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7781 {
7782 WDTS_Close(pWDICtx);
7783 }
7784
7785 /*Close the STA Table !UT- check this logic again*/
7786 WDI_STATableClose(pWDICtx);
7787
7788 /*close the PAL */
7789 wptStatus = wpalClose(pWDICtx->pPALContext);
7790 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7791 {
7792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7793 "Failed to wpal Close %d", wptStatus);
7794 WDI_ASSERT(0);
7795 }
7796
7797 /*Transition back to init state*/
7798 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7799
7800 wpalMutexRelease(&pWDICtx->wptMutex);
7801
7802 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007804
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007806}/*WDI_ProcessCloseReq*/
7807
7808
7809/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007811===========================================================================*/
7812
7813/**
7814 @brief Process Init Scan Request function (called when Main FSM
7815 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007816
7817 @param pWDICtx: pointer to the WLAN DAL context
7818 pEventData: pointer to the event information structure
7819
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 @see
7821 @return Result of the function call
7822*/
7823WDI_Status
7824WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007825(
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 WDI_ControlBlockType* pWDICtx,
7827 WDI_EventInfoType* pEventData
7828)
7829{
7830 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7831 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 wpt_uint16 usDataOffset = 0;
7834 wpt_uint16 usSendSize = 0;
7835 wpt_uint8 i = 0;
7836
7837 tHalInitScanReqMsg halInitScanReqMsg;
7838
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 * It shold be removed once host and riva changes are in sync*/
7841 tHalInitScanConReqMsg halInitScanConReqMsg;
7842
7843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7844
7845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 -------------------------------------------------------------------------*/
7848 if (( NULL == pEventData ) ||
7849 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7850 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7851 {
7852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 }
7857
7858#if 0
7859 wpalMutexAcquire(&pWDICtx->wptMutex);
7860 /*-----------------------------------------------------------------------
7861 Check to see if SCAN is already in progress - if so reject the req
7862 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 -----------------------------------------------------------------------*/
7865 if ( pWDICtx->bScanInProgress )
7866 {
7867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7868 "Scan is already in progress - subsequent scan is not allowed"
7869 " until the first scan completes");
7870
7871 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 }
7874
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7876 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007877
7878 wpalMutexRelease(&pWDICtx->wptMutex);
7879#endif
Viral Modid86bde22012-12-10 13:09:21 -08007880 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 * It shold be removed once host and riva changes are in sync*/
7884 /*-----------------------------------------------------------------------
7885 Get message buffer
7886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 sizeof(halInitScanConReqMsg.initScanParams),
7889 &pSendBuffer, &usDataOffset, &usSendSize))||
7890 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7891 {
7892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007893 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 }
7898
7899
7900 /*-----------------------------------------------------------------------
7901 Fill in the message
7902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007903 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7905
7906 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7907 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7908
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7915
7916 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7917 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7918
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7920 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007923 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7924
7925 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7926 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7929 }
7930
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 wpalMemoryCopy( pSendBuffer+usDataOffset,
7932 &halInitScanConReqMsg.initScanParams,
7933 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 }
7935 else
7936 {
7937 /*-----------------------------------------------------------------------
7938 Get message buffer
7939 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 sizeof(halInitScanReqMsg.initScanParams),
7942 &pSendBuffer, &usDataOffset, &usSendSize))||
7943 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7944 {
7945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007946 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 }
7951
7952
7953 /*-----------------------------------------------------------------------
7954 Fill in the message
7955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7958
7959 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7960 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7961
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7968
7969 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7970 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7971
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7974
7975 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7976 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7979 }
7980
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 wpalMemoryCopy( pSendBuffer+usDataOffset,
7982 &halInitScanReqMsg.initScanParams,
7983 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 }
7985
7986 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988
7989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007990 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7994
7995}/*WDI_ProcessInitScanReq*/
7996
7997/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008000
8001 @param pWDICtx: pointer to the WLAN DAL context
8002 pEventData: pointer to the event information structure
8003
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 @see
8005 @return Result of the function call
8006*/
8007WDI_Status
8008WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008009(
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 WDI_ControlBlockType* pWDICtx,
8011 WDI_EventInfoType* pEventData
8012)
8013{
8014 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8015 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 wpt_uint16 usDataOffset = 0;
8018 wpt_uint16 usSendSize = 0;
8019
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8022
8023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 -------------------------------------------------------------------------*/
8026 if (( NULL == pEventData ) ||
8027 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8028 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8029 {
8030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 }
8035
8036#if 0
8037 wpalMutexAcquire(&pWDICtx->wptMutex);
8038 /*-----------------------------------------------------------------------
8039 Check to see if SCAN is already in progress - start scan is only
8040 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8045 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8046 {
8047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8048 "Scan start not allowed in this state %d %d",
8049 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008050
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 }
8054
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008056
8057 wpalMutexRelease(&pWDICtx->wptMutex);
8058#endif
8059
8060 /*-----------------------------------------------------------------------
8061 Get message buffer
8062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 sizeof(halStartScanReqMsg.startScanParams),
8065 &pSendBuffer, &usDataOffset, &usSendSize))||
8066 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8067 {
8068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008069 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 }
8074
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 wpalMemoryCopy( pSendBuffer+usDataOffset,
8078 &halStartScanReqMsg.startScanParams,
8079 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008080
8081 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008083
8084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8089}/*WDI_ProcessStartScanReq*/
8090
8091
8092/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008095
8096 @param pWDICtx: pointer to the WLAN DAL context
8097 pEventData: pointer to the event information structure
8098
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 @see
8100 @return Result of the function call
8101*/
8102WDI_Status
8103WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008104(
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 WDI_ControlBlockType* pWDICtx,
8106 WDI_EventInfoType* pEventData
8107)
8108{
8109 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8110 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 wpt_uint16 usDataOffset = 0;
8113 wpt_uint16 usSendSize = 0;
8114
Jeff Johnsone7245742012-09-05 17:12:55 -07008115 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8117
8118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 -------------------------------------------------------------------------*/
8121 if (( NULL == pEventData ) ||
8122 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8123 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8124 {
8125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 }
8130
Jeff Johnsone7245742012-09-05 17:12:55 -07008131 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8132 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 * forwarded to HAL and result in hang*/
8134#if 0
8135 wpalMutexAcquire(&pWDICtx->wptMutex);
8136 /*-----------------------------------------------------------------------
8137 Check to see if SCAN is already in progress - end scan is only
8138 allowed when a scan is ongoing and the state of the scan procedure
8139 is started
8140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8143 {
8144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8145 "End start not allowed in this state %d %d",
8146 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008147
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008153
8154 wpalMutexRelease(&pWDICtx->wptMutex);
8155#endif
8156
8157 /*-----------------------------------------------------------------------
8158 Get message buffer
8159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 sizeof(halEndScanReqMsg.endScanParams),
8162 &pSendBuffer, &usDataOffset, &usSendSize))||
8163 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8164 {
8165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008166 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 }
8171
8172 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8173
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 wpalMemoryCopy( pSendBuffer+usDataOffset,
8175 &halEndScanReqMsg.endScanParams,
8176 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008177
8178 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008180
8181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8186}/*WDI_ProcessEndScanReq*/
8187
8188
8189/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008190 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008192
8193 @param pWDICtx: pointer to the WLAN DAL context
8194 pEventData: pointer to the event information structure
8195
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 @see
8197 @return Result of the function call
8198*/
8199WDI_Status
8200WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008201(
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 WDI_ControlBlockType* pWDICtx,
8203 WDI_EventInfoType* pEventData
8204)
8205{
8206 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8207 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 wpt_uint16 usDataOffset = 0;
8210 wpt_uint16 usSendSize = 0;
8211 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008212 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8215
8216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 -------------------------------------------------------------------------*/
8219 if (( NULL == pEventData ) ||
8220 ( NULL == pEventData->pEventData) ||
8221 ( NULL == pEventData->pCBfnc))
8222 {
8223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 }
8228
8229 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8230 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8232 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 * forwarded to HAL and result in hang*/
8234#if 0
8235 wpalMutexAcquire(&pWDICtx->wptMutex);
8236 /*-----------------------------------------------------------------------
8237 Check to see if SCAN is already in progress
8238 Finish scan gets invoked any scan states. ie. abort scan
8239 It should be allowed in any states.
8240 -----------------------------------------------------------------------*/
8241 if ( !pWDICtx->bScanInProgress )
8242 {
8243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8244 "Finish start not allowed in this state %d",
8245 pWDICtx->bScanInProgress );
8246
8247 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 }
8250
8251 /*-----------------------------------------------------------------------
8252 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8256 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 wpalMutexRelease(&pWDICtx->wptMutex);
8258#endif
8259
8260 if ( pWDICtx->bInBmps )
8261 {
8262 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008263 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8264 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8265 {
8266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008267 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008268 WDI_ASSERT(0);
8269 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 }
8271
8272 /*-----------------------------------------------------------------------
8273 Get message buffer
8274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 sizeof(halFinishScanReqMsg.finishScanParams),
8277 &pSendBuffer, &usDataOffset, &usSendSize))||
8278 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8279 {
8280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008281 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 }
8286
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8289
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8292
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8295
8296 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8297 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8305
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8308
8309 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8313 }
8314
8315 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8316 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8317
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 wpalMemoryCopy( pSendBuffer+usDataOffset,
8319 &halFinishScanReqMsg.finishScanParams,
8320 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
8322 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
8325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8330}/*WDI_ProcessFinishScanReq*/
8331
8332
8333/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008335==========================================================================*/
8336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 @brief Process BSS Join for a given Session
8338
8339 @param pWDICtx: pointer to the WLAN DAL context
8340 pEventData: pointer to the event information structure
8341
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 @see
8343 @return Result of the function call
8344*/
8345WDI_Status
8346WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008347(
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 WDI_ControlBlockType* pWDICtx,
8349 WDI_JoinReqParamsType* pwdiJoinParams,
8350 WDI_JoinRspCb wdiJoinRspCb,
8351 void* pUserData
8352)
8353{
8354 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 wpt_uint16 usDataOffset = 0;
8357 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8362
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008363 wpalMutexAcquire(&pWDICtx->wptMutex);
8364
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 /*------------------------------------------------------------------------
8366 Check to see if we have any session with this BSSID already stored, we
8367 should not
8368 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8370 pwdiJoinParams->wdiReqInfo.macBSSID,
8371 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008372
8373 if ( NULL != pBSSSes )
8374 {
8375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008376 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8377 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008378
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008379 /*reset the bAssociationInProgress otherwise the next
8380 *join request will be queued*/
8381 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8382 wpalMutexRelease(&pWDICtx->wptMutex);
8383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 }
8385
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008388 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 if ( NULL == pBSSSes )
8391 {
8392
8393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8394 "DAL has no free sessions - cannot run another join");
8395
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008396 /*reset the bAssociationInProgress otherwise the next
8397 *join request will be queued*/
8398 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 }
8402
8403 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8405 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 WDI_MAC_ADDR_LEN);
8407
8408 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008411
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 wpalMutexRelease(&pWDICtx->wptMutex);
8413
8414 /*-----------------------------------------------------------------------
8415 Get message buffer
8416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 sizeof(halJoinReqMsg.joinReqParams),
8419 &pSendBuffer, &usDataOffset, &usSendSize))||
8420 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8421 {
8422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008423 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 pUserData, pwdiJoinParams, wdiJoinRspCb);
8425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
8428
8429 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008431
8432 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 pwdiJoinParams->wdiReqInfo.macSTASelf,
8434 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008435
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8438
8439 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8440
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008441#ifdef WLAN_FEATURE_VOWIFI
8442 halJoinReqMsg.joinReqParams.maxTxPower =
8443 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8444#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8447#endif
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8451 wdiSecondaryChannelOffset);
8452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 wpalMemoryCopy( pSendBuffer+usDataOffset,
8454 &halJoinReqMsg.joinReqParams,
8455 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008456
8457 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008459
8460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8464 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008465
8466}/*WDI_ProcessBSSSessionJoinReq*/
8467
8468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008471
8472 @param pWDICtx: pointer to the WLAN DAL context
8473 pEventData: pointer to the event information structure
8474
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 @see
8476 @return Result of the function call
8477*/
8478WDI_Status
8479WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008480(
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 WDI_ControlBlockType* pWDICtx,
8482 WDI_EventInfoType* pEventData
8483)
8484{
8485 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8486 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8487 WDI_JoinRspCb wdiJoinRspCb = NULL;
8488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8489
8490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 -------------------------------------------------------------------------*/
8493 if (( NULL == pEventData ) ||
8494 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8495 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8496 {
8497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008502
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 /*-------------------------------------------------------------------------
8504 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 -------------------------------------------------------------------------*/
8507 wpalMutexAcquire(&pWDICtx->wptMutex);
8508
8509 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8510 {
8511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8512 "Association is currently in progress, queueing new join req");
8513
8514 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 pwdiJoinParams->wdiReqInfo.macBSSID);
8517
8518 wpalMutexRelease(&pWDICtx->wptMutex);
8519
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 }
8522
8523 /*Starting a new association */
8524 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8525 wpalMutexRelease(&pWDICtx->wptMutex);
8526
8527 /*Process the Join Request*/
8528 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8529 wdiJoinRspCb,pEventData->pUserData);
8530
8531}/*WDI_ProcessJoinReq*/
8532
8533
8534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008537
8538 @param pWDICtx: pointer to the WLAN DAL context
8539 pEventData: pointer to the event information structure
8540
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 @see
8542 @return Result of the function call
8543*/
8544WDI_Status
8545WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008546(
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 WDI_ControlBlockType* pWDICtx,
8548 WDI_EventInfoType* pEventData
8549)
8550{
8551 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8552 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 wpt_uint16 uMsgSize = 0;
8556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 wpt_uint16 usDataOffset = 0;
8558 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008560
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8563
8564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 -------------------------------------------------------------------------*/
8567 if (( NULL == pEventData ) ||
8568 ( NULL == pEventData->pEventData ) ||
8569 ( NULL == pEventData->pCBfnc ))
8570 {
8571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 }
8576
Abhishek Singh6927fa02014-06-27 17:19:55 +05308577 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8579 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8580 /*-------------------------------------------------------------------------
8581 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 -------------------------------------------------------------------------*/
8584 wpalMutexAcquire(&pWDICtx->wptMutex);
8585
8586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8590 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8591 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008592
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 {
8595#ifdef WLAN_FEATURE_VOWIFI_11R
8596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 if ( NULL == pBSSSes )
8601 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008602
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8604 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008605
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008609
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8612 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008614
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8618#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 * Request in case of IBSS*/
8621 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8622 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8623 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8624 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8625 {
8626 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 if ( NULL == pBSSSes )
8631 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008632
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8634 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008635
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008639
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8642 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008644
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8648 }
8649 else
8650 {
8651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8653 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8654 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8655
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 /* for IBSS testing */
8657 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 }
8660#endif
8661 }
8662
8663 /*------------------------------------------------------------------------
8664 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 ------------------------------------------------------------------------*/
8667 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8668 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8670 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8671 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8672 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008673
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
8676 wpalMutexRelease(&pWDICtx->wptMutex);
8677
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 }
8680
8681 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8683 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 sizeof(pWDICtx->wdiCachedConfigBssReq));
8685
8686 wpalMutexRelease(&pWDICtx->wptMutex);
8687
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8689#ifdef WLAN_FEATURE_11AC
8690 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008691 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 else
8693#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008694 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008695
8696 /*-----------------------------------------------------------------------
8697 Get message buffer
8698 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8701 ( usSendSize < (usDataOffset + uMsgSize )))
8702 {
8703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008704 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 }
8709
8710 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008711#ifdef WLAN_FEATURE_11AC
8712 if (WDI_getFwWlanFeatCaps(DOT11AC))
8713 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8714 &pwdiConfigBSSParams->wdiReqInfo);
8715 else
8716#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 &pwdiConfigBSSParams->wdiReqInfo);
8719
8720 /* Need to fill in the STA Index to invalid, since at this point we have not
8721 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008723
8724 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8726
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008727#ifdef WLAN_FEATURE_11AC
8728 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8729 wpalMemoryCopy( pSendBuffer+usDataOffset,
8730 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8731 uMsgSize);
8732 }else
8733#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008734 {
8735 if ( uMsgSize <= sizeof(tConfigBssParams) )
8736 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008737 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008738 &halConfigBssReqMsg.uBssParams.configBssParams,
8739 uMsgSize);
8740 }
8741 else
8742 {
8743 return WDI_STATUS_E_FAILURE;
8744 }
8745 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008746
8747 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308749 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8754 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 WDI_CONFIG_BSS_RESP);
8756
8757}/*WDI_ProcessConfigBSSReq*/
8758
8759
8760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008763
8764 @param pWDICtx: pointer to the WLAN DAL context
8765 pEventData: pointer to the event information structure
8766
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 @see
8768 @return Result of the function call
8769*/
8770WDI_Status
8771WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008772(
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 WDI_ControlBlockType* pWDICtx,
8774 WDI_EventInfoType* pEventData
8775)
8776{
8777 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8778 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 wpt_uint16 usDataOffset = 0;
8783 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8788
8789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 -------------------------------------------------------------------------*/
8792 if (( NULL == pEventData ) ||
8793 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8794 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8795 {
8796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 }
8801
8802 /*-------------------------------------------------------------------------
8803 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008804 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 -------------------------------------------------------------------------*/
8806 wpalMutexAcquire(&pWDICtx->wptMutex);
8807
8808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8812 pwdiDelBSSParams->ucBssIdx,
8813 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 {
8817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 "%s: BSS does not yet exist. ucBssIdx %d",
8819 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008820
8821 wpalMutexRelease(&pWDICtx->wptMutex);
8822
8823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008825
8826 /*------------------------------------------------------------------------
8827 Check if this BSS is being currently processed or queued,
8828 if queued - queue the new request as well
8829 ------------------------------------------------------------------------*/
8830 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8833 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8834 __func__, pwdiDelBSSParams->ucBssIdx);
8835
8836 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8837
8838 wpalMutexRelease(&pWDICtx->wptMutex);
8839
8840 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008842
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 /*-----------------------------------------------------------------------
8844 If we receive a Del BSS request for an association that is already in
8845 progress, it indicates that the assoc has failed => we no longer have
8846 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 -----------------------------------------------------------------------*/
8849 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8850 {
8851 /*We can switch to false here because even if a subsequent Join comes in
8852 it will only be processed when DAL transitions out of BUSY state which
8853 happens when the Del BSS request comes */
8854 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8855
8856 /*Former association is complete - prepare next pending assoc for
8857 processing */
8858 WDI_DequeueAssocRequest(pWDICtx);
8859 }
8860
8861 wpalMutexRelease(&pWDICtx->wptMutex);
8862 /*-----------------------------------------------------------------------
8863 Get message buffer
8864 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 sizeof(halBssReqMsg.deleteBssParams),
8867 &pSendBuffer, &usDataOffset, &usSendSize))||
8868 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8869 {
8870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008871 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 }
8876
8877 /*Fill in the message request structure*/
8878
8879 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008880 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008881
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 wpalMemoryCopy( pSendBuffer+usDataOffset,
8883 &halBssReqMsg.deleteBssParams,
8884 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008885
8886 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888
Jeff Johnsone7245742012-09-05 17:12:55 -07008889
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8895
Jeff Johnsone7245742012-09-05 17:12:55 -07008896
Jeff Johnson295189b2012-06-20 16:38:30 -07008897}/*WDI_ProcessDelBSSReq*/
8898
8899/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008902
8903 @param pWDICtx: pointer to the WLAN DAL context
8904 pEventData: pointer to the event information structure
8905
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 @see
8907 @return Result of the function call
8908*/
8909WDI_Status
8910WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008911(
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 WDI_ControlBlockType* pWDICtx,
8913 WDI_EventInfoType* pEventData
8914)
8915{
8916 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8917 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 wpt_uint16 usDataOffset = 0;
8922 wpt_uint16 usSendSize = 0;
8923 wpt_uint16 uMsgSize = 0;
8924 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008926
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8929
8930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 -------------------------------------------------------------------------*/
8933 if (( NULL == pEventData ) ||
8934 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8935 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8936 {
8937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 }
8942
8943 /*-------------------------------------------------------------------------
8944 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 -------------------------------------------------------------------------*/
8947 wpalMutexAcquire(&pWDICtx->wptMutex);
8948
8949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008950 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8953 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8954 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
8956 if ( NULL == pBSSSes )
8957 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8959 "%s: Association sequence for this BSS does not yet exist - "
8960 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8961 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
8963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 }
8966
8967 /*------------------------------------------------------------------------
8968 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 ------------------------------------------------------------------------*/
8971 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8972 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8974 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8975 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008976
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008978
8979 wpalMutexRelease(&pWDICtx->wptMutex);
8980
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 }
8983
8984 /*-----------------------------------------------------------------------
8985 If Post Assoc was not yet received - the current association must
8986 be in progress
8987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8990 {
8991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8992 "Association sequence for this BSS association no longer in "
8993 "progress - not allowed");
8994
8995 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 }
8998
8999 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 -----------------------------------------------------------------------*/
9002 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9003 {
9004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9005 "Post Assoc not allowed before JOIN - failing request");
9006
9007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 }
9010
9011 wpalMutexRelease(&pWDICtx->wptMutex);
9012
9013 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9014 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9015 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9020 ( usSendSize < (usDataOffset + uMsgSize )))
9021 {
9022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009023 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 }
9028
9029 /*Copy the STA parameters */
9030 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9031 &pwdiPostAssocParams->wdiSTAParams );
9032
9033 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 WDI_STATableFindStaidByAddr(pWDICtx,
9036 pwdiPostAssocParams->wdiSTAParams.macSTA,
9037 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9038 {
9039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009040 MAC_ADDRESS_STR
9041 ": This station does not exist in the WDI Station Table",
9042 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009044 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 }
9047
9048 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 pBSSSes->ucBSSIdx;
9051
9052 /*Copy the BSS parameters */
9053 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9054 &pwdiPostAssocParams->wdiBSSParams);
9055
9056 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 WDI_STATableFindStaidByAddr(pWDICtx,
9059 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 {
9062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009063 MAC_ADDRESS_STR
9064 ": This station does not exist in the WDI Station Table",
9065 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009067 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 }
9070
9071 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009073 pBSSSes->ucBSSIdx;
9074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075
9076 wpalMemoryCopy( pSendBuffer+usDataOffset,
9077 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9078 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009079
9080 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9083 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9084 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009085
Jeff Johnsone7245742012-09-05 17:12:55 -07009086
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089
Jeff Johnsone7245742012-09-05 17:12:55 -07009090
9091 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009094
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309095 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9101
Jeff Johnsone7245742012-09-05 17:12:55 -07009102
Jeff Johnson295189b2012-06-20 16:38:30 -07009103}/*WDI_ProcessPostAssocReq*/
9104
9105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009108
9109 @param pWDICtx: pointer to the WLAN DAL context
9110 pEventData: pointer to the event information structure
9111
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 @see
9113 @return Result of the function call
9114*/
9115WDI_Status
9116WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009117(
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 WDI_ControlBlockType* pWDICtx,
9119 WDI_EventInfoType* pEventData
9120)
9121{
9122 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9123 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 wpt_uint16 usDataOffset = 0;
9128 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9131
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9134
9135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 -------------------------------------------------------------------------*/
9138 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9139 ( NULL == pEventData->pCBfnc ))
9140 {
9141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 }
9146
9147 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9148 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9149 /*-------------------------------------------------------------------------
9150 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -------------------------------------------------------------------------*/
9153 wpalMutexAcquire(&pWDICtx->wptMutex);
9154
9155 /*------------------------------------------------------------------------
9156 Find the BSS for which the request is made and identify WDI session
9157 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9159 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 &macBSSID))
9161 {
9162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009163 "This station does not exist in the WDI Station Table %d",
9164 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 }
9168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9170 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9173 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9174 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 }
9179
9180 /*------------------------------------------------------------------------
9181 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 ------------------------------------------------------------------------*/
9184 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9185 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9187 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009189
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 }
9194
9195 wpalMutexRelease(&pWDICtx->wptMutex);
9196 /*-----------------------------------------------------------------------
9197 Get message buffer
9198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 sizeof(halDelStaReqMsg.delStaParams),
9201 &pSendBuffer, &usDataOffset, &usSendSize))||
9202 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9203 {
9204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009205 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 }
9210
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9212 wpalMemoryCopy( pSendBuffer+usDataOffset,
9213 &halDelStaReqMsg.delStaParams,
9214 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009215
9216 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009218
9219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9224
9225}/*WDI_ProcessDelSTAReq*/
9226
9227
9228/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009230==========================================================================*/
9231/**
9232 @brief Process Set BSS Key Request function (called when Main FSM
9233 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009234
9235 @param pWDICtx: pointer to the WLAN DAL context
9236 pEventData: pointer to the event information structure
9237
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 @see
9239 @return Result of the function call
9240*/
9241WDI_Status
9242WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009243(
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 WDI_ControlBlockType* pWDICtx,
9245 WDI_EventInfoType* pEventData
9246)
9247{
9248 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9249 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 wpt_uint16 usDataOffset = 0;
9254 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9257 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309258 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009259
9260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9261
9262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 -------------------------------------------------------------------------*/
9265 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9266 ( NULL == pEventData->pCBfnc ))
9267 {
9268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 }
9273
9274 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9275 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9276 /*-------------------------------------------------------------------------
9277 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 -------------------------------------------------------------------------*/
9280 wpalMutexAcquire(&pWDICtx->wptMutex);
9281
9282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9286 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9287 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009288
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 {
9291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9293 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009294
9295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 }
9298
9299 /*------------------------------------------------------------------------
9300 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 ------------------------------------------------------------------------*/
9303 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9306 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9307 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 }
9313
9314
9315 wpalMutexRelease(&pWDICtx->wptMutex);
9316 /*-----------------------------------------------------------------------
9317 Get message buffer
9318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9321 &pSendBuffer, &usDataOffset, &usSendSize))||
9322 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9323 {
9324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009325 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 }
9330
9331 /*-----------------------------------------------------------------------
9332 Copy the Key parameters into the HAL message
9333 -----------------------------------------------------------------------*/
9334
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9339
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9342
9343 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9344 keyIndex++)
9345 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9348 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9349 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9350 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9351 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309352
9353 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9354 {
9355 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9356 {
9357 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9358 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9359 }
9360
9361 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9362 {
9363 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9364 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9365 }
9366
9367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9368 "%s: Negated Keys", __func__);
9369 }
9370 else
9371 {
9372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9373 "%s: No change in Keys", __func__);
9374 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309377 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9378 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9379 WDI_MAX_KEY_LENGTH);
9380 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309385 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009386
9387 wpalMemoryCopy( pSendBuffer+usDataOffset,
9388 &halSetBssKeyReqMsg.setBssKeyParams,
9389 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009390
9391 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009393
9394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9398 wdiSetBSSKeyRspCb, pEventData->pUserData,
9399 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009400
9401}/*WDI_ProcessSetBssKeyReq*/
9402
9403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009406
9407 @param pWDICtx: pointer to the WLAN DAL context
9408 pEventData: pointer to the event information structure
9409
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 @see
9411 @return Result of the function call
9412*/
9413WDI_Status
9414WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009415(
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 WDI_ControlBlockType* pWDICtx,
9417 WDI_EventInfoType* pEventData
9418)
9419{
9420 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9421 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 wpt_uint16 usDataOffset = 0;
9426 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9430
9431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 -------------------------------------------------------------------------*/
9434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9435 ( NULL == pEventData->pCBfnc ))
9436 {
9437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 }
9442
9443 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9444 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9445 /*-------------------------------------------------------------------------
9446 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 -------------------------------------------------------------------------*/
9449 wpalMutexAcquire(&pWDICtx->wptMutex);
9450
9451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9455 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9456 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009457
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 {
9460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9462 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009463
9464 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 }
9467
9468 /*------------------------------------------------------------------------
9469 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009470 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 ------------------------------------------------------------------------*/
9472 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9473 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9475 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9476 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009477
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 }
9482
9483
9484 wpalMutexRelease(&pWDICtx->wptMutex);
9485
9486 /*-----------------------------------------------------------------------
9487 Get message buffer
9488 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9491 &pSendBuffer, &usDataOffset, &usSendSize))||
9492 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9493 {
9494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009495 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 }
9500 /*-----------------------------------------------------------------------
9501 Copy the Key parameters into the HAL message
9502 -----------------------------------------------------------------------*/
9503 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9504
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9507
9508 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9509
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9512
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 wpalMemoryCopy( pSendBuffer+usDataOffset,
9514 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9515 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009516
9517 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009519
9520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009526}/*WDI_ProcessRemoveBssKeyReq*/
9527
9528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009531
9532 @param pWDICtx: pointer to the WLAN DAL context
9533 pEventData: pointer to the event information structure
9534
Jeff Johnson295189b2012-06-20 16:38:30 -07009535 @see
9536 @return Result of the function call
9537*/
9538WDI_Status
9539WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009540(
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 WDI_ControlBlockType* pWDICtx,
9542 WDI_EventInfoType* pEventData
9543)
9544{
9545 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9546 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9547 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 wpt_uint16 usDataOffset = 0;
9550 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009551 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9555 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309556 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009557
9558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9559
9560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 -------------------------------------------------------------------------*/
9563 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9564 ( NULL == pEventData->pCBfnc ))
9565 {
9566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 }
9571
9572 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9573 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9574 /*-------------------------------------------------------------------------
9575 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 -------------------------------------------------------------------------*/
9578 wpalMutexAcquire(&pWDICtx->wptMutex);
9579
9580 /*------------------------------------------------------------------------
9581 Find the BSS for which the request is made and identify WDI session
9582 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9584 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 &macBSSID))
9586 {
9587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009588 "This station does not exist in the WDI Station Table %d",
9589 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 }
9593
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9595 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9598 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9599 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009600
9601 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009604
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 /*------------------------------------------------------------------------
9606 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 ------------------------------------------------------------------------*/
9609 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9610 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9612 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9613 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009614
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
9619
9620
9621 wpalMutexRelease(&pWDICtx->wptMutex);
9622 /*-----------------------------------------------------------------------
9623 Get message buffer
9624 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9627 &pSendBuffer, &usDataOffset, &usSendSize))||
9628 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9629 {
9630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009631 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 }
9636 /*-----------------------------------------------------------------------
9637 Copy the STA Key parameters into the HAL message
9638 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9641
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9644
9645 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9646
9647 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9648
9649 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9650
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9652 keyIndex++)
9653 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9656 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9657 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9658 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9659 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309660
9661 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9662 {
9663 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9664 {
9665 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9666 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9667 }
9668
9669 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9670 {
9671 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9672 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9673 }
9674
9675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9676 "%s: Negated Keys", __func__);
9677 }
9678 else
9679 {
9680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9681 "%s: No change in Keys", __func__);
9682 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309685 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9686 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9687 WDI_MAX_KEY_LENGTH);
9688 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309693 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009694
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 wpalMemoryCopy( pSendBuffer+usDataOffset,
9696 &halSetStaKeyReqMsg.setStaKeyParams,
9697 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009698
9699 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309701 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9706 wdiSetSTAKeyRspCb, pEventData->pUserData,
9707 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009708
9709}/*WDI_ProcessSetSTAKeyReq*/
9710
9711/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009714
9715 @param pWDICtx: pointer to the WLAN DAL context
9716 pEventData: pointer to the event information structure
9717
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 @see
9719 @return Result of the function call
9720*/
9721WDI_Status
9722WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009723(
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 WDI_ControlBlockType* pWDICtx,
9725 WDI_EventInfoType* pEventData
9726)
9727{
9728 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9729 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9730 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 wpt_uint16 usDataOffset = 0;
9733 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 wpt_macAddr macBSSID;
9736 wpt_uint8 ucCurrentBSSSesIdx;
9737 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9739
9740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 -------------------------------------------------------------------------*/
9743 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9744 ( NULL == pEventData->pCBfnc ))
9745 {
9746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 }
9751
9752 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9753 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9754 /*-------------------------------------------------------------------------
9755 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 -------------------------------------------------------------------------*/
9758 wpalMutexAcquire(&pWDICtx->wptMutex);
9759
9760 /*------------------------------------------------------------------------
9761 Find the BSS for which the request is made and identify WDI session
9762 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9764 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 &macBSSID))
9766 {
9767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009768 "This station does not exist in the WDI Station Table %d",
9769 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 }
9773
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9775 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9778 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9779 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009780
9781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009784
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 /*------------------------------------------------------------------------
9786 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 ------------------------------------------------------------------------*/
9789 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9790 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9792 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9793 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009794
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 }
9799
9800
9801
9802 wpalMutexRelease(&pWDICtx->wptMutex);
9803 /*-----------------------------------------------------------------------
9804 Get message buffer
9805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9808 &pSendBuffer, &usDataOffset, &usSendSize))||
9809 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9810 {
9811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009812 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 }
9817
9818 /*-----------------------------------------------------------------------
9819 Copy the Key parameters into the HAL message
9820 -----------------------------------------------------------------------*/
9821
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9824
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9827
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9830
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9833
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 wpalMemoryCopy( pSendBuffer+usDataOffset,
9835 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9836 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009837
9838 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009840
9841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009847
9848}/*WDI_ProcessRemoveSTAKeyReq*/
9849
9850/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009853
9854 @param pWDICtx: pointer to the WLAN DAL context
9855 pEventData: pointer to the event information structure
9856
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 @see
9858 @return Result of the function call
9859*/
9860WDI_Status
9861WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009862(
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 WDI_ControlBlockType* pWDICtx,
9864 WDI_EventInfoType* pEventData
9865)
9866{
9867 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9868 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 wpt_uint16 usDataOffset = 0;
9872 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9877 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309878 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879
9880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9881
9882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 -------------------------------------------------------------------------*/
9885 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9886 ( NULL == pEventData->pCBfnc ))
9887 {
9888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 }
9893
9894 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9895 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9896 /*-------------------------------------------------------------------------
9897 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 -------------------------------------------------------------------------*/
9900 wpalMutexAcquire(&pWDICtx->wptMutex);
9901
9902 /*------------------------------------------------------------------------
9903 Find the BSS for which the request is made and identify WDI session
9904 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9906 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 &macBSSID))
9908 {
9909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009910 "This station does not exist in the WDI Station Table %d",
9911 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 }
9915
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9917 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 {
9919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009920 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009922
9923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009926
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 /*------------------------------------------------------------------------
9928 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009929 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 ------------------------------------------------------------------------*/
9931 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9932 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9934 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9935 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 }
9941
9942
9943 wpalMutexRelease(&pWDICtx->wptMutex);
9944 /*-----------------------------------------------------------------------
9945 Get message buffer
9946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9949 &pSendBuffer, &usDataOffset, &usSendSize))||
9950 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9951 {
9952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009953 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 }
9958 /*-----------------------------------------------------------------------
9959 Copy the STA Key parameters into the HAL message
9960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9963
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9966
9967 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9968
9969 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9970
9971 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9972
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9974 keyIndex++)
9975 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9978 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9979 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9980 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9981 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309982
9983 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9984 {
9985 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9986 {
9987 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9988 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9989 }
9990
9991 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9992 {
9993 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9994 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9995 }
9996
9997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9998 "%s: Negated Keys", __func__);
9999 }
10000 else
10001 {
10002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10003 "%s: No change in Keys", __func__);
10004 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010007 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10008 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10009 WDI_MAX_KEY_LENGTH);
10010 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010015 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 wpalMemoryCopy( pSendBuffer+usDataOffset,
10017 &halSetStaKeyReqMsg.setStaKeyParams,
10018 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
10020 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010022
10023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10027 wdiSetSTAKeyRspCb, pEventData->pUserData,
10028 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030}/*WDI_ProcessSetSTABcastKeyReq*/
10031
10032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010035
10036 @param pWDICtx: pointer to the WLAN DAL context
10037 pEventData: pointer to the event information structure
10038
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 @see
10040 @return Result of the function call
10041*/
10042WDI_Status
10043WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010044(
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 WDI_ControlBlockType* pWDICtx,
10046 WDI_EventInfoType* pEventData
10047)
10048{
10049 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10050 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10051 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 wpt_uint16 usDataOffset = 0;
10054 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 wpt_macAddr macBSSID;
10057 wpt_uint8 ucCurrentBSSSesIdx;
10058 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10060
10061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 -------------------------------------------------------------------------*/
10064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10065 ( NULL == pEventData->pCBfnc ))
10066 {
10067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 }
10072
10073 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10074 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10075 /*-------------------------------------------------------------------------
10076 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 -------------------------------------------------------------------------*/
10079 wpalMutexAcquire(&pWDICtx->wptMutex);
10080
10081 /*------------------------------------------------------------------------
10082 Find the BSS for which the request is made and identify WDI session
10083 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10085 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 &macBSSID))
10087 {
10088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010089 "This station does not exist in the WDI Station Table %d",
10090 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 }
10094
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10096 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10099 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010101
10102 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010105
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 /*------------------------------------------------------------------------
10107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 ------------------------------------------------------------------------*/
10110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10113 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010115
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 }
10120
10121
10122
10123 wpalMutexRelease(&pWDICtx->wptMutex);
10124 /*-----------------------------------------------------------------------
10125 Get message buffer
10126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10129 &pSendBuffer, &usDataOffset, &usSendSize))||
10130 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10131 {
10132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010133 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 }
10138
10139 /*-----------------------------------------------------------------------
10140 Copy the Key parameters into the HAL message
10141 -----------------------------------------------------------------------*/
10142
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10145
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10148
Jeff Johnsone7245742012-09-05 17:12:55 -070010149 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10151
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10154
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 wpalMemoryCopy( pSendBuffer+usDataOffset,
10156 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10157 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010158
10159 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010161
10162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010168
10169}/*WDI_ProcessRemoveSTABcastKeyReq*/
10170
10171/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010173==========================================================================*/
10174/**
10175 @brief Process Add TSpec Request function (called when Main FSM
10176 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010177
10178 @param pWDICtx: pointer to the WLAN DAL context
10179 pEventData: pointer to the event information structure
10180
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 @see
10182 @return Result of the function call
10183*/
10184WDI_Status
10185WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010186(
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 WDI_ControlBlockType* pWDICtx,
10188 WDI_EventInfoType* pEventData
10189)
10190{
10191 WDI_AddTSReqParamsType* pwdiAddTSParams;
10192 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 wpt_uint16 usDataOffset = 0;
10197 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 wpt_macAddr macBSSID;
10200 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010201
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10203
10204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 -------------------------------------------------------------------------*/
10207 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10208 ( NULL == pEventData->pCBfnc ))
10209 {
10210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 }
10215
10216 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10217 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10218 /*-------------------------------------------------------------------------
10219 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 -------------------------------------------------------------------------*/
10222 wpalMutexAcquire(&pWDICtx->wptMutex);
10223
10224 /*------------------------------------------------------------------------
10225 Find the BSS for which the request is made and identify WDI session
10226 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10228 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 &macBSSID))
10230 {
10231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010232 "This station does not exist in the WDI Station Table %d",
10233 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 }
10237
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10239 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10242 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10243 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010244
10245 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010248
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 /*------------------------------------------------------------------------
10250 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 ------------------------------------------------------------------------*/
10253 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10254 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10256 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10257 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010258
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 }
10263
10264 wpalMutexRelease(&pWDICtx->wptMutex);
10265 /*-----------------------------------------------------------------------
10266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10270 sizeof(halAddTsParams),
10271 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 &usSendSize))||
10273 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10274 {
10275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010276 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 }
10281
10282 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10283 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10284
10285 //TSPEC IE
10286 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10287 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010296 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10318
10319 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10334
10335 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10340
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 wpalMemoryCopy( pSendBuffer+usDataOffset,
10342 &halAddTsParams,
10343 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010344
10345 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010347
10348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010354}/*WDI_ProcessAddTSpecReq*/
10355
10356
10357/**
10358 @brief Process Del TSpec Request function (called when Main FSM
10359 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010360
10361 @param pWDICtx: pointer to the WLAN DAL context
10362 pEventData: pointer to the event information structure
10363
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 @see
10365 @return Result of the function call
10366*/
10367WDI_Status
10368WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010369(
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 WDI_ControlBlockType* pWDICtx,
10371 WDI_EventInfoType* pEventData
10372)
10373{
10374 WDI_DelTSReqParamsType* pwdiDelTSParams;
10375 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 wpt_uint16 usDataOffset = 0;
10380 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10383
10384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 -------------------------------------------------------------------------*/
10387 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10388 ( NULL == pEventData->pCBfnc ))
10389 {
10390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 }
10395
10396 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10397 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10398
10399 /*-------------------------------------------------------------------------
10400 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 -------------------------------------------------------------------------*/
10403 wpalMutexAcquire(&pWDICtx->wptMutex);
10404
10405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10409 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10410 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10415 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10416 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10417
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 }
10421
10422 /*------------------------------------------------------------------------
10423 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010424 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 ------------------------------------------------------------------------*/
10426 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10427 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10429 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10430 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010431
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 }
10436
10437
10438 wpalMutexRelease(&pWDICtx->wptMutex);
10439 /*-----------------------------------------------------------------------
10440 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10445 &pSendBuffer, &usDataOffset, &usSendSize))||
10446 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10447 {
10448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010449 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 }
10454
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 wpalMemoryCopy( pSendBuffer+usDataOffset,
10456 &pwdiDelTSParams->wdiDelTSInfo,
10457 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010458
10459 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461
10462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010463 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10466 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010467}/*WDI_ProcessDelTSpecReq*/
10468
10469/**
10470 @brief Process Update EDCA Params Request function (called when
10471 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010472
10473 @param pWDICtx: pointer to the WLAN DAL context
10474 pEventData: pointer to the event information structure
10475
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 @see
10477 @return Result of the function call
10478*/
10479WDI_Status
10480WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010481(
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 WDI_ControlBlockType* pWDICtx,
10483 WDI_EventInfoType* pEventData
10484)
10485{
10486 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10487 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 wpt_uint16 usDataOffset = 0;
10492 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10495
10496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 -------------------------------------------------------------------------*/
10499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10500 ( NULL == pEventData->pCBfnc ))
10501 {
10502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 }
10507
10508 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10509 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10510 /*-------------------------------------------------------------------------
10511 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 -------------------------------------------------------------------------*/
10514 wpalMutexAcquire(&pWDICtx->wptMutex);
10515
10516 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10520 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10521 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010522
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 {
10525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10527 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010528
10529 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 }
10532
10533 /*------------------------------------------------------------------------
10534 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 ------------------------------------------------------------------------*/
10537 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10538 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10540 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10541 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010542
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 }
10547
10548
10549 wpalMutexRelease(&pWDICtx->wptMutex);
10550 /*-----------------------------------------------------------------------
10551 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10556 &pSendBuffer, &usDataOffset, &usSendSize))||
10557 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10558 {
10559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010560 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 }
10565
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 wpalMemoryCopy( pSendBuffer+usDataOffset,
10567 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10568 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010569
10570 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572
10573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10577 wdiUpdateEDCARspCb, pEventData->pUserData,
10578 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010579}/*WDI_ProcessUpdateEDCAParamsReq*/
10580
10581/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010584
10585 @param pWDICtx: pointer to the WLAN DAL context
10586 pEventData: pointer to the event information structure
10587
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 @see
10589 @return Result of the function call
10590*/
10591WDI_Status
10592WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010593(
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 WDI_ControlBlockType* pWDICtx,
10595 WDI_EventInfoType* pEventData
10596)
10597{
10598 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10599 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 wpt_uint16 usDataOffset = 0;
10604 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 wpt_macAddr macBSSID;
10607
10608 tAddBASessionReqMsg halAddBASessionReq;
10609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10610
10611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 -------------------------------------------------------------------------*/
10614 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10615 ( NULL == pEventData->pCBfnc ))
10616 {
10617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 }
10622
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10627 /*-------------------------------------------------------------------------
10628 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 -------------------------------------------------------------------------*/
10631 wpalMutexAcquire(&pWDICtx->wptMutex);
10632
10633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10637 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 &macBSSID))
10639 {
10640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010641 "This station does not exist in the WDI Station Table %d",
10642 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 }
10646
10647
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010649
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10653 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10654 __func__, MAC_ADDR_ARRAY(macBSSID));
10655
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 }
10659
10660 /*------------------------------------------------------------------------
10661 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 ------------------------------------------------------------------------*/
10664 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10665 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10667 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10668 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 }
10674
10675
10676 wpalMutexRelease(&pWDICtx->wptMutex);
10677 /*-----------------------------------------------------------------------
10678 Get message buffer
10679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10681 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 sizeof(halAddBASessionReq.addBASessionParams),
10683 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10686 {
10687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010688 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 }
10693
10694 halAddBASessionReq.addBASessionParams.staIdx =
10695 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10696 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10697 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10698 WDI_MAC_ADDR_LEN);
10699 halAddBASessionReq.addBASessionParams.baTID =
10700 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10701 halAddBASessionReq.addBASessionParams.baPolicy =
10702 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10703 halAddBASessionReq.addBASessionParams.baBufferSize =
10704 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10705 halAddBASessionReq.addBASessionParams.baTimeout =
10706 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10707 halAddBASessionReq.addBASessionParams.baSSN =
10708 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10709 halAddBASessionReq.addBASessionParams.baDirection =
10710 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10711
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 wpalMemoryCopy( pSendBuffer+usDataOffset,
10713 &halAddBASessionReq.addBASessionParams,
10714 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010715
10716 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010718
10719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10723 wdiAddBASessionRspCb, pEventData->pUserData,
10724 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010725}/*WDI_ProcessAddBASessionReq*/
10726
10727/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010730
10731 @param pWDICtx: pointer to the WLAN DAL context
10732 pEventData: pointer to the event information structure
10733
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 @see
10735 @return Result of the function call
10736*/
10737WDI_Status
10738WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010739(
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 WDI_ControlBlockType* pWDICtx,
10741 WDI_EventInfoType* pEventData
10742)
10743{
10744 WDI_DelBAReqParamsType* pwdiDelBAParams;
10745 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 wpt_uint16 usDataOffset = 0;
10750 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010751 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 wpt_macAddr macBSSID;
10753 tDelBAParams halDelBAparam;
10754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10755
10756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 -------------------------------------------------------------------------*/
10759 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10760 ( NULL == pEventData->pCBfnc ))
10761 {
10762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 }
10767
10768 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10769 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10770 /*-------------------------------------------------------------------------
10771 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 -------------------------------------------------------------------------*/
10774 wpalMutexAcquire(&pWDICtx->wptMutex);
10775
10776 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10780 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 &macBSSID))
10782 {
10783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010784 "This station does not exist in the WDI Station Table %d",
10785 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010788 }
10789
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010791
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10795 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10796 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010797
10798 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 }
10801
10802 /*------------------------------------------------------------------------
10803 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 ------------------------------------------------------------------------*/
10806 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10807 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10809 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10810 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010811
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 }
10816
10817 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 sizeof(halDelBAparam),
10820 &pSendBuffer, &usDataOffset, &usSendSize))||
10821 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10822 {
10823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010824 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 }
10829
10830 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10831 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10832 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10833
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 wpalMemoryCopy( pSendBuffer+usDataOffset,
10835 &halDelBAparam,
10836 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010837
10838 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010840
10841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10845 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010846}/*WDI_ProcessDelBAReq*/
10847
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010848#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010849
10850WDI_Status
10851WDI_ProcessTSMStatsReq
10852(
10853 WDI_ControlBlockType* pWDICtx,
10854 WDI_EventInfoType* pEventData
10855)
10856{
10857 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10858 WDI_TsmRspCb wdiTSMRspCb;
10859 wpt_uint8 ucCurrentBSSSesIdx = 0;
10860 WDI_BSSSessionType* pBSSSes = NULL;
10861 wpt_uint8* pSendBuffer = NULL;
10862 wpt_uint16 usDataOffset = 0;
10863 wpt_uint16 usSendSize = 0;
10864 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10865 tTsmStatsParams halTsmStatsReqParams = {0};
10866
10867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10868
10869 /*-------------------------------------------------------------------------
10870 Sanity check
10871 -------------------------------------------------------------------------*/
10872 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10873 ( NULL == pEventData->pCBfnc ))
10874 {
10875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 WDI_ASSERT(0);
10878 return WDI_STATUS_E_FAILURE;
10879 }
10880
10881 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10882 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10883 /*-------------------------------------------------------------------------
10884 Check to see if we are in the middle of an association, if so queue, if
10885 not it means it is free to process request
10886 -------------------------------------------------------------------------*/
10887 wpalMutexAcquire(&pWDICtx->wptMutex);
10888
10889 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10890 if ( NULL == pBSSSes )
10891 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10893 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10894 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010895
10896 wpalMutexRelease(&pWDICtx->wptMutex);
10897 return WDI_STATUS_E_NOT_ALLOWED;
10898 }
10899
10900 /*------------------------------------------------------------------------
10901 Check if this BSS is being currently processed or queued,
10902 if queued - queue the new request as well
10903 ------------------------------------------------------------------------*/
10904 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10905 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010907 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010909
10910 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10911 wpalMutexRelease(&pWDICtx->wptMutex);
10912 return wdiStatus;
10913 }
10914
10915 wpalMutexRelease(&pWDICtx->wptMutex);
10916 /*-----------------------------------------------------------------------
10917 Get message buffer
10918 ! TO DO : proper conversion into the HAL Message Request Format
10919 -----------------------------------------------------------------------*/
10920 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10921 sizeof(halTsmStatsReqParams),
10922 &pSendBuffer, &usDataOffset, &usSendSize))||
10923 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10924 {
10925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010926 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 pEventData, pwdiTSMParams, wdiTSMRspCb);
10928 WDI_ASSERT(0);
10929 return WDI_STATUS_E_FAILURE;
10930 }
10931
10932 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10933 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10934 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10935 WDI_MAC_ADDR_LEN);
10936 wpalMemoryCopy( pSendBuffer+usDataOffset,
10937 &halTsmStatsReqParams,
10938 sizeof(halTsmStatsReqParams));
10939
10940 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10941 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10942
10943 /*-------------------------------------------------------------------------
10944 Send TSM Stats Request to HAL
10945 -------------------------------------------------------------------------*/
10946 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10947 wdiTSMRspCb, pEventData->pUserData,
10948 WDI_TSM_STATS_RESP);
10949}/*WDI_ProcessTSMStatsReq*/
10950
10951#endif
10952
10953
10954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010957
10958 @param pWDICtx: pointer to the WLAN DAL context
10959 pEventData: pointer to the event information structure
10960
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 @see
10962 @return Result of the function call
10963*/
10964WDI_Status
10965WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010966(
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 WDI_ControlBlockType* pWDICtx,
10968 WDI_EventInfoType* pEventData
10969)
10970{
10971 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10972 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010974 wpt_uint16 usDataOffset = 0;
10975 wpt_uint16 usSendSize = 0;
10976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10977
10978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 -------------------------------------------------------------------------*/
10981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10982 ( NULL == pEventData->pCBfnc ))
10983 {
10984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010988 }
10989
10990 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10991 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10992 /*-----------------------------------------------------------------------
10993 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10998 &pSendBuffer, &usDataOffset, &usSendSize))||
10999 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11000 {
11001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011002 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 }
11007
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 wpalMemoryCopy( pSendBuffer+usDataOffset,
11009 &pwdiFlushAcParams->wdiFlushAcInfo,
11010 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011011
11012 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011014
11015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011016 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11019 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011020}/*WDI_ProcessFlushAcReq*/
11021
11022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011025
11026 @param pWDICtx: pointer to the WLAN DAL context
11027 pEventData: pointer to the event information structure
11028
Jeff Johnson295189b2012-06-20 16:38:30 -070011029 @see
11030 @return Result of the function call
11031*/
11032WDI_Status
11033WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011034(
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 WDI_ControlBlockType* pWDICtx,
11036 WDI_EventInfoType* pEventData
11037)
11038{
11039 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11040 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 wpt_uint16 usDataOffset = 0;
11043 wpt_uint16 usSendSize = 0;
11044
11045 tBtAmpEventMsg haltBtAmpEventMsg;
11046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11047
11048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 -------------------------------------------------------------------------*/
11051 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11052 ( NULL == pEventData->pCBfnc ))
11053 {
11054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 }
11059
11060 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11061 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11062 /*-----------------------------------------------------------------------
11063 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11068 &pSendBuffer, &usDataOffset, &usSendSize))||
11069 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11070 {
11071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011072 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 }
11077
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011080 wpalMemoryCopy( pSendBuffer+usDataOffset,
11081 &haltBtAmpEventMsg.btAmpEventParams,
11082 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011083
11084 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011086
11087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11091 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011092}/*WDI_ProcessBtAmpEventReq*/
11093
11094/**
11095 @brief Process Add STA self Request function (called when Main FSM
11096 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011097
11098 @param pWDICtx: pointer to the WLAN DAL context
11099 pEventData: pointer to the event information structure
11100
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 @see
11102 @return Result of the function call
11103*/
11104WDI_Status
11105WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011106(
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 WDI_ControlBlockType* pWDICtx,
11108 WDI_EventInfoType* pEventData
11109)
11110{
11111 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11112 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 wpt_uint16 usDataOffset = 0;
11115 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011116 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11118
11119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 -------------------------------------------------------------------------*/
11122 if (( NULL == pEventData ) ||
11123 ( NULL == pEventData->pEventData) ||
11124 ( NULL == pEventData->pCBfnc))
11125 {
11126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 }
11131
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011135 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11136 /*-----------------------------------------------------------------------
11137 Get message buffer
11138 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11140 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011141 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011143 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011144 {
11145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011146 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 }
11151
11152 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11155
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011157 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11158 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11159 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11160 {
11161 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11162 }
11163 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11164 VOS_P2P_CLIENT_MODE) ||
11165 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11166 VOS_P2P_DEVICE))
11167 {
11168 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11169 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011171 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011172
11173 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011175
11176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11180 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11181 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011182}/*WDI_ProcessAddSTASelfReq*/
11183
11184
11185
11186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011189
11190 @param pWDICtx: pointer to the WLAN DAL context
11191 pEventData: pointer to the event information structure
11192
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 @see
11194 @return Result of the function call
11195*/
11196WDI_Status
11197WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011198(
Jeff Johnson295189b2012-06-20 16:38:30 -070011199 WDI_ControlBlockType* pWDICtx,
11200 WDI_EventInfoType* pEventData
11201)
11202{
11203 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11204 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 wpt_uint16 usDataOffset = 0;
11207 wpt_uint16 usSendSize = 0;
11208 tDelStaSelfParams halSetDelSelfSTAParams;
11209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11210
11211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 -------------------------------------------------------------------------*/
11214 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11215 ( NULL == pEventData->pCBfnc ))
11216 {
11217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 }
11222
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11225 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11226
11227 /*-----------------------------------------------------------------------
11228 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11233 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11236 {
11237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011238 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 }
11243
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11246
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11248 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011249
11250 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011252
11253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11257 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 WDI_DEL_STA_SELF_RESP);
11259
11260}
11261
Jeff Johnsone7245742012-09-05 17:12:55 -070011262#ifdef FEATURE_OEM_DATA_SUPPORT
11263/**
11264 @brief Process Start Oem Data Request function (called when Main
11265 FSM allows it)
11266
11267 @param pWDICtx: pointer to the WLAN DAL context
11268 pEventData: pointer to the event information structure
11269
11270 @see
11271 @return Result of the function call
11272*/
11273WDI_Status
11274WDI_ProcessStartOemDataReq
11275(
11276 WDI_ControlBlockType* pWDICtx,
11277 WDI_EventInfoType* pEventData
11278)
11279{
11280 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11281 WDI_oemDataRspCb wdiOemDataRspCb;
11282 wpt_uint8* pSendBuffer = NULL;
11283 wpt_uint16 usDataOffset = 0;
11284 wpt_uint16 usSendSize = 0;
11285 wpt_uint16 reqLen;
11286 tStartOemDataReqParams* halStartOemDataReqParams;
11287
11288 /*-------------------------------------------------------------------------
11289 Sanity check
11290 -------------------------------------------------------------------------*/
11291 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11292 ( NULL == pEventData->pCBfnc ))
11293 {
11294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011295 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011296 WDI_ASSERT(0);
11297 return WDI_STATUS_E_FAILURE;
11298 }
11299
11300 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11301 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11302
11303 /*-----------------------------------------------------------------------
11304 Get message buffer
11305 -----------------------------------------------------------------------*/
11306
11307 reqLen = sizeof(tStartOemDataReqParams);
11308
11309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11310 WDI_START_OEM_DATA_REQ, reqLen,
11311 &pSendBuffer, &usDataOffset, &usSendSize))||
11312 (usSendSize < (usDataOffset + reqLen)))
11313 {
11314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011315 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11317 WDI_ASSERT(0);
11318 return WDI_STATUS_E_FAILURE;
11319 }
11320
11321 //copying WDI OEM DATA REQ PARAMS to shared memory
11322 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11323
11324 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11325 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11326
11327 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11328 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11329
11330 /*-------------------------------------------------------------------------
11331 Send Start Request to HAL
11332 -------------------------------------------------------------------------*/
11333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11334 wdiOemDataRspCb, pEventData->pUserData,
11335 WDI_START_OEM_DATA_RESP);
11336}/*WDI_ProcessStartOemDataReq*/
11337#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011338
11339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011342
11343 @param pWDICtx: pointer to the WLAN DAL context
11344 pEventData: pointer to the event information structure
11345
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 @see
11347 @return Result of the function call
11348*/
11349WDI_Status
11350WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011351(
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 WDI_ControlBlockType* pWDICtx,
11353 WDI_EventInfoType* pEventData
11354)
11355{
11356 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11357 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 wpt_uint16 usDataOffset = 0;
11360 wpt_uint16 usSendSize = 0;
11361 tHalWlanHostResumeReqParam halResumeReqParams;
11362
11363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11364
11365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 -------------------------------------------------------------------------*/
11368 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11369 ( NULL == pEventData->pCBfnc ))
11370 {
11371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011372 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 }
11376
11377 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11378 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11379
11380 /*-----------------------------------------------------------------------
11381 Get message buffer
11382 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11385 &pSendBuffer, &usDataOffset, &usSendSize))||
11386 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11387 {
11388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011389 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 }
11394
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011397
11398 wpalMemoryCopy( pSendBuffer+usDataOffset,
11399 &halResumeReqParams,
11400 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011401
11402 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011404
11405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11409 wdiHostResumeRspCb, pEventData->pUserData,
11410 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011411}/*WDI_ProcessHostResumeReq*/
11412
11413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011416
11417 @param pWDICtx: pointer to the WLAN DAL context
11418 pEventData: pointer to the event information structure
11419
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 @see
11421 @return Result of the function call
11422*/
11423WDI_Status
11424WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011425(
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 WDI_ControlBlockType* pWDICtx,
11427 WDI_EventInfoType* pEventData
11428)
11429{
11430 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11431 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011433 wpt_uint16 usDataOffset = 0;
11434 wpt_uint16 usSendSize = 0;
11435 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11437
11438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 -------------------------------------------------------------------------*/
11441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11442 ( NULL == pEventData->pCBfnc ))
11443 {
11444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011445 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 }
11449
11450 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11451 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011452
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 /*-----------------------------------------------------------------------
11454 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 sizeof(halTxPerTrackingReqParam),
11459 &pSendBuffer, &usDataOffset, &usSendSize))||
11460 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11461 {
11462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011463 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011468
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11470 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11471 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11472 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011473
11474 wpalMemoryCopy( pSendBuffer+usDataOffset,
11475 &halTxPerTrackingReqParam,
11476 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011480
11481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11485 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011486}/*WDI_ProcessSetTxPerTrackingReq*/
11487
11488/*=========================================================================
11489 Indications
11490=========================================================================*/
11491
11492/**
11493 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011494
11495 @param pWDICtx: pointer to the WLAN DAL context
11496 pEventData: pointer to the event information structure
11497
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 @see
11499 @return Result of the function call
11500*/
11501WDI_Status
11502WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011503(
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 WDI_ControlBlockType* pWDICtx,
11505 WDI_EventInfoType* pEventData
11506)
11507{
11508 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 wpt_uint16 usDataOffset = 0;
11511 wpt_uint16 usSendSize = 0;
11512 WDI_Status wdiStatus;
11513 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11515
11516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 -------------------------------------------------------------------------*/
11519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11520 {
11521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011522 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 }
11526
11527 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11528
11529 /*-----------------------------------------------------------------------
11530 Get message buffer
11531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11533 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 sizeof(halWlanSuspendIndparams),
11535 &pSendBuffer, &usDataOffset, &usSendSize))||
11536 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11537 {
11538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11539 "Unable to get send buffer in Suspend Ind ");
11540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 }
11543
11544 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11545 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11546
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011548 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011549
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11551 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 -------------------------------------------------------------------------*/
11556 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011558
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11561}/*WDI_ProcessHostSuspendInd*/
11562
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011563
11564
11565/**
11566 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11567
11568 @param pWDICtx: pointer to the WLAN DAL context
11569 pEventData: pointer to the event information structure
11570
11571 @see
11572 @return Result of the function call
11573*/
11574WDI_Status
11575WDI_ProcessTrafficStatsInd
11576(
11577 WDI_ControlBlockType* pWDICtx,
11578 WDI_EventInfoType* pEventData
11579)
11580{
11581 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11582 wpt_uint8* pSendBuffer = NULL;
11583 wpt_uint16 usDataOffset = 0;
11584 wpt_uint16 usSendSize = 0;
11585 WDI_Status wdiStatus;
11586 tStatsClassBIndParams* pStatsClassBIndParams;
11587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11588
11589 /*-------------------------------------------------------------------------
11590 Sanity check
11591 -------------------------------------------------------------------------*/
11592 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11593 {
11594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11595 "%s: Invalid parameters in Traffic Stats ind",__func__);
11596 WDI_ASSERT(0);
11597 return WDI_STATUS_E_FAILURE;
11598 }
11599
11600 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11601
11602 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11603 {
11604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11605 "%s: Invalid parameters in Traffic Stats ind",__func__);
11606 WDI_ASSERT(0);
11607 return WDI_STATUS_E_FAILURE;
11608 }
11609
11610 /*-----------------------------------------------------------------------
11611 Get message buffer
11612 -----------------------------------------------------------------------*/
11613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11614 WDI_TRAFFIC_STATS_IND,
11615 sizeof(tStatsClassBIndParams),
11616 &pSendBuffer, &usDataOffset, &usSendSize))||
11617 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11618 {
11619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11620 "Unable to get send buffer in Traffic Stats Ind ");
11621 WDI_ASSERT(0);
11622 return WDI_STATUS_E_FAILURE;
11623 }
11624
11625 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11626
11627 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11628
11629 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11630 pTrafficStatsIndParams->pTrafficStats,
11631 pTrafficStatsIndParams->length);
11632
11633 /*-------------------------------------------------------------------------
11634 Send Suspend Request to HAL
11635 -------------------------------------------------------------------------*/
11636 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11637 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11638
11639 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11640 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11641}/*WDI_ProcessTrafficStatsInd*/
11642
Chet Lanctot186b5732013-03-18 10:26:30 -070011643#ifdef WLAN_FEATURE_11W
11644/**
11645 @brief Process Exclude Unencrypted Indications function (called
11646 when Main FSM allows it)
11647
11648 @param pWDICtx: pointer to the WLAN DAL context
11649 pEventData: pointer to the event information structure
11650
11651 @see
11652 @return Result of the function call
11653*/
11654WDI_Status
11655WDI_ProcessExcludeUnencryptInd
11656(
11657 WDI_ControlBlockType* pWDICtx,
11658 WDI_EventInfoType* pEventData
11659)
11660{
11661 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11662 wpt_uint8* pSendBuffer = NULL;
11663 wpt_uint16 usDataOffset = 0;
11664 wpt_uint16 usSendSize = 0;
11665 WDI_Status wdiStatus;
11666 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11668
11669 /*-------------------------------------------------------------------------
11670 Sanity check
11671 -------------------------------------------------------------------------*/
11672 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11673 {
11674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11675 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11676 WDI_ASSERT(0);
11677 return WDI_STATUS_E_FAILURE;
11678 }
11679
11680 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11681
11682 /*-----------------------------------------------------------------------
11683 Get message buffer
11684 -----------------------------------------------------------------------*/
11685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11686 WDI_EXCLUDE_UNENCRYPTED_IND,
11687 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11688 &pSendBuffer, &usDataOffset, &usSendSize))||
11689 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11690 {
11691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11692 "Unable to get send buffer in Exclude Unencrypted Ind ");
11693 WDI_ASSERT(0);
11694 return WDI_STATUS_E_FAILURE;
11695 }
11696
11697 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11698
11699 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11700
11701 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11702 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11703
11704 /*-------------------------------------------------------------------------
11705 Send Suspend Request to HAL
11706 -------------------------------------------------------------------------*/
11707 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11708 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11709
11710 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11711 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11712}/*WDI_ProcessExcludeUnencryptInd*/
11713#endif
11714
Yue Mab9c86f42013-08-14 15:59:08 -070011715/**
11716 @brief Process Add Periodic Tx Pattern Indication function (called when
11717 Main FSM allows it)
11718
11719 @param pWDICtx: pointer to the WLAN DAL context
11720 pEventData: pointer to the event information structure
11721
11722 @see
11723 @return Result of the function call
11724*/
11725WDI_Status
11726WDI_ProcessAddPeriodicTxPtrnInd
11727(
11728 WDI_ControlBlockType* pWDICtx,
11729 WDI_EventInfoType* pEventData
11730)
11731{
11732 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11733 wpt_uint8* pSendBuffer = NULL;
11734 wpt_uint16 usDataOffset = 0;
11735 wpt_uint16 usSendSize = 0;
11736 WDI_Status wdiStatus;
11737 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11738 wpt_uint8 selfStaIdx = 0;
11739
11740 /*-------------------------------------------------------------------------
11741 Sanity check
11742 -------------------------------------------------------------------------*/
11743 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11744 {
11745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11746 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11747 WDI_ASSERT(0);
11748 return WDI_STATUS_E_FAILURE;
11749 }
11750
11751 pAddPeriodicTxPtrnParams =
11752 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11753
11754 /*------------------------------------------------------------------------
11755 Get message buffer
11756 ------------------------------------------------------------------------*/
11757 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11758 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11759 &pSendBuffer, &usDataOffset, &usSendSize))||
11760 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11761 {
11762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11763 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11764 __func__);
11765 WDI_ASSERT(0);
11766 return WDI_STATUS_E_FAILURE;
11767 }
11768
11769 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11770
11771 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11772 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11773 &selfStaIdx))
11774 {
11775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11776 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011777 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011778
11779 return WDI_STATUS_E_FAILURE;
11780 }
11781
11782 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11783 halAddPeriodicTxPtrn->ucPtrnId =
11784 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11785 halAddPeriodicTxPtrn->usPtrnSize =
11786 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11787 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11788 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11789
11790 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11791 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11792 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11793
11794 /*-------------------------------------------------------------------------
11795 Send Indication to HAL
11796 -------------------------------------------------------------------------*/
11797 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11798 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11799
11800 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11801
11802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11803 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11804
11805 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11806} /* WDI_ProcessAddPeriodicTxPtrnInd */
11807
11808/**
11809 @brief Process Delete Periodic Tx Pattern Indication function (called when
11810 Main FSM allows it)
11811
11812 @param pWDICtx: pointer to the WLAN DAL context
11813 pEventData: pointer to the event information structure
11814
11815 @see
11816 @return Result of the function call
11817*/
11818WDI_Status
11819WDI_ProcessDelPeriodicTxPtrnInd
11820(
11821 WDI_ControlBlockType* pWDICtx,
11822 WDI_EventInfoType* pEventData
11823)
11824{
11825 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11826 wpt_uint8* pSendBuffer = NULL;
11827 wpt_uint16 usDataOffset = 0;
11828 wpt_uint16 usSendSize = 0;
11829 WDI_Status wdiStatus;
11830 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11831 wpt_uint8 selfStaIdx = 0;
11832
11833 /*-------------------------------------------------------------------------
11834 Sanity check
11835 -------------------------------------------------------------------------*/
11836 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11837 {
11838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11839 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11840 WDI_ASSERT(0);
11841 return WDI_STATUS_E_FAILURE;
11842 }
11843
11844 pDelPeriodicTxPtrnParams =
11845 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11846
11847 /*------------------------------------------------------------------------
11848 Get message buffer
11849 ------------------------------------------------------------------------*/
11850 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11851 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11852 &pSendBuffer, &usDataOffset, &usSendSize))||
11853 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11854 {
11855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11856 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11857 __func__);
11858 WDI_ASSERT(0);
11859 return WDI_STATUS_E_FAILURE;
11860 }
11861
11862 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11863
11864 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11865 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11866 &selfStaIdx))
11867 {
11868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11869 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011870 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011871
11872 return WDI_STATUS_E_FAILURE;
11873 }
11874
11875 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11876 halDelPeriodicTxPtrn->uPatternIdBitmap =
11877 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11878
11879 /*-------------------------------------------------------------------------
11880 Send Indication to HAL
11881 -------------------------------------------------------------------------*/
11882 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11883 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11884
11885 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11886
11887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11888 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11889
11890 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11891} /* WDI_ProcessDelPeriodicTxPtrnInd */
11892
Jeff Johnson295189b2012-06-20 16:38:30 -070011893/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011895==========================================================================*/
11896/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011899
11900 @param pWDICtx: pointer to the WLAN DAL context
11901 pEventData: pointer to the event information structure
11902
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 @see
11904 @return Result of the function call
11905*/
11906WDI_Status
11907WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011908(
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 WDI_ControlBlockType* pWDICtx,
11910 WDI_EventInfoType* pEventData
11911)
11912{
11913 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11914 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011915 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011916 wpt_uint16 usDataOffset = 0;
11917 wpt_uint16 usSendSize = 0;
11918 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11920
11921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 -------------------------------------------------------------------------*/
11924 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11925 ( NULL == pEventData->pCBfnc ))
11926 {
11927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 }
11932
11933 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11934 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11935 /*-----------------------------------------------------------------------
11936 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 sizeof(halSwitchChannelReq.switchChannelParams),
11941 &pSendBuffer, &usDataOffset, &usSendSize))||
11942 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11943 {
11944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011945 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 }
11950
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953#ifndef WLAN_FEATURE_VOWIFI
11954 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11956#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011957 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11959
11960#ifdef WLAN_FEATURE_VOWIFI
11961 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11964 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11965 WDI_MAC_ADDR_LEN);
11966 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11967 pwdiSwitchChParams->wdiChInfo.macBSSId,
11968 WDI_MAC_ADDR_LEN);
11969#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 wpalMemoryCopy( pSendBuffer+usDataOffset,
11971 &halSwitchChannelReq.switchChannelParams,
11972 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011973
11974 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011976
11977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11981 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011982}/*WDI_ProcessChannelSwitchReq*/
11983
11984/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011985 @brief Process Channel Switch Request function (called when
11986 Main FSM allows it)
11987
11988 @param pWDICtx: pointer to the WLAN DAL context
11989 pEventData: pointer to the event information structure
11990
11991 @see
11992 @return Result of the function call
11993*/
11994WDI_Status WDI_ProcessChannelSwitchReq_V1
11995(
11996 WDI_ControlBlockType* pWDICtx,
11997 WDI_EventInfoType* pEventData
11998)
11999{
12000 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12001 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12002 wpt_uint8* pSendBuffer = NULL;
12003 wpt_uint16 usDataOffset = 0;
12004 wpt_uint16 usSendSize = 0;
12005 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12007
12008 /*-------------------------------------------------------------------------
12009 Sanity check
12010 -------------------------------------------------------------------------*/
12011 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12012 ( NULL == pEventData->pCBfnc ))
12013 {
12014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12015 "%s: Invalid parameters", __func__);
12016 WDI_ASSERT(0);
12017 return WDI_STATUS_E_FAILURE;
12018 }
12019
12020 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12021 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12022 /*-----------------------------------------------------------------------
12023 Get message buffer
12024 ! TO DO : proper conversion into the HAL Message Request Format
12025 -----------------------------------------------------------------------*/
12026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12027 WDI_CH_SWITCH_REQ_V1,
12028 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12029 &pSendBuffer, &usDataOffset, &usSendSize))||
12030 ( usSendSize < (usDataOffset +
12031 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12032 {
12033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12034 "Unable to get send buffer in channel switch req %p %p %p",
12035 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12036 WDI_ASSERT(0);
12037 return WDI_STATUS_E_FAILURE;
12038 }
12039
12040 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12041 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12042
12043 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12044 pwdiSwitchChParams->wdiChInfo.ucChannel;
12045#ifndef WLAN_FEATURE_VOWIFI
12046 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12047 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12048#endif
12049 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12050 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12051
12052#ifdef WLAN_FEATURE_VOWIFI
12053 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12054 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12055 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12056 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12057 WDI_MAC_ADDR_LEN);
12058 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12059 pwdiSwitchChParams->wdiChInfo.macBSSId,
12060 WDI_MAC_ADDR_LEN);
12061#endif
12062 wpalMemoryCopy( pSendBuffer+usDataOffset,
12063 &halSwitchChannelReq.switchChannelParams_V1,
12064 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12065
12066 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12067 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12068
12069 /*-------------------------------------------------------------------------
12070 Send Switch Channel Request to HAL
12071 -------------------------------------------------------------------------*/
12072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12073 wdiSwitchChRspCb, pEventData->pUserData,
12074 WDI_CH_SWITCH_RESP_V1);
12075}/*WDI_ProcessChannelSwitchReq_V1*/
12076
12077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012080
12081 @param pWDICtx: pointer to the WLAN DAL context
12082 pEventData: pointer to the event information structure
12083
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 @see
12085 @return Result of the function call
12086*/
12087WDI_Status
12088WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012089(
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 WDI_ControlBlockType* pWDICtx,
12091 WDI_EventInfoType* pEventData
12092)
12093{
12094 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12095 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012099 wpt_uint16 usDataOffset = 0;
12100 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012102
Jeff Johnsone7245742012-09-05 17:12:55 -070012103 tConfigStaReqMsg halConfigStaReqMsg;
12104 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12106
12107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012109 -------------------------------------------------------------------------*/
12110 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12111 ( NULL == pEventData->pCBfnc ))
12112 {
12113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 }
12118
Abhishek Singh6927fa02014-06-27 17:19:55 +053012119 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12121 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12122 /*-------------------------------------------------------------------------
12123 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012124 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 -------------------------------------------------------------------------*/
12126 wpalMutexAcquire(&pWDICtx->wptMutex);
12127
12128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012131 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12132 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12133 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012134
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12138 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12139 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012140
12141 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 }
12144
12145 /*------------------------------------------------------------------------
12146 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012147 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 ------------------------------------------------------------------------*/
12149 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12150 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12152 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12153 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012154
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 }
12159
12160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012161
12162 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12163#ifdef WLAN_FEATURE_11AC
12164 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012165 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 else
12167#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012168 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012169
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 /*-----------------------------------------------------------------------
12171 Get message buffer
12172 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12174 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 {
12178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012179 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012180 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 }
12184
12185 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 &pwdiConfigSTAParams->wdiReqInfo);
12188
12189 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12190 {
12191 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 WDI_STATableFindStaidByAddr(pWDICtx,
12194 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012196 {
12197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012198 MAC_ADDRESS_STR
12199 ": This station does not exist in the WDI Station Table",
12200 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012202 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 }
12205 }
12206 else
12207 {
12208 /* Need to fill in the STA Index to invalid, since at this point we have not
12209 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012210 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212
12213 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012215
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 wpalMemoryCopy( pSendBuffer+usDataOffset,
12217 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012218 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012219
12220 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012222
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12224 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 sizeof(pWDICtx->wdiCachedConfigStaReq));
12226
12227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12231 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012232}/*WDI_ProcessConfigStaReq*/
12233
12234
12235/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012238
12239 @param pWDICtx: pointer to the WLAN DAL context
12240 pEventData: pointer to the event information structure
12241
Jeff Johnson295189b2012-06-20 16:38:30 -070012242 @see
12243 @return Result of the function call
12244*/
12245WDI_Status
12246WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012247(
Jeff Johnson295189b2012-06-20 16:38:30 -070012248 WDI_ControlBlockType* pWDICtx,
12249 WDI_EventInfoType* pEventData
12250)
12251{
12252 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12253 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 wpt_uint16 usDataOffset = 0;
12258 wpt_uint16 usSendSize = 0;
12259 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12262
12263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 -------------------------------------------------------------------------*/
12266 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12267 ( NULL == pEventData->pCBfnc ))
12268 {
12269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 }
12274
12275 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12276 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12277 /*-------------------------------------------------------------------------
12278 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012280 -------------------------------------------------------------------------*/
12281 wpalMutexAcquire(&pWDICtx->wptMutex);
12282
12283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012286 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12287 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12288 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012289
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12294 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 }
12296 else
12297 {
12298 /*------------------------------------------------------------------------
12299 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012300 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 ------------------------------------------------------------------------*/
12302 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12305 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12306 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12307
12308 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 }
12312 }
12313 /* If the link is set to enter IDLE - the Session allocated for this BSS
12314 will be deleted on the Set Link State response coming from HAL
12315 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12318
12319 wpalMutexRelease(&pWDICtx->wptMutex);
12320 /*-----------------------------------------------------------------------
12321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012324
12325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012326 sizeof(halLinkStateReqMsg),
12327 &pSendBuffer, &usDataOffset, &usSendSize))||
12328 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12329 {
12330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012331 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 }
12336
12337 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12338 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12339
12340 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12341 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12342
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12345
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 wpalMemoryCopy( pSendBuffer+usDataOffset,
12347 &halLinkStateReqMsg,
12348 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012349
12350 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012352
12353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12357 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012358}/*WDI_ProcessSetLinkStateReq*/
12359
12360
12361/**
12362 @brief Process Get Stats Request function (called when Main FSM
12363 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012364
12365 @param pWDICtx: pointer to the WLAN DAL context
12366 pEventData: pointer to the event information structure
12367
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 @see
12369 @return Result of the function call
12370*/
12371WDI_Status
12372WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012373(
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 WDI_ControlBlockType* pWDICtx,
12375 WDI_EventInfoType* pEventData
12376)
12377{
12378 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12379 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 wpt_uint16 usDataOffset = 0;
12382 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 WDI_BSSSessionType* pBSSSes = NULL;
12385 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 tHalStatsReqMsg halStatsReqMsg;
12388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12389
12390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 -------------------------------------------------------------------------*/
12393 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12394 ( NULL == pEventData->pCBfnc ) )
12395 {
12396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 }
12401
12402 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12403 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12404
12405 /*-------------------------------------------------------------------------
12406 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 -------------------------------------------------------------------------*/
12409 wpalMutexAcquire(&pWDICtx->wptMutex);
12410
12411 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12415 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012416 &macBSSID))
12417 {
12418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012419 "This station does not exist in the WDI Station Table %d",
12420 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 }
12424
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12426 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12429 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12430 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012431
12432 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 }
12435
12436 /*------------------------------------------------------------------------
12437 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 ------------------------------------------------------------------------*/
12440 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12441 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12443 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12444 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012445
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 }
12450
12451
12452 wpalMutexRelease(&pWDICtx->wptMutex);
12453
12454 /*-----------------------------------------------------------------------
12455 Get message buffer
12456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 sizeof(halStatsReqMsg.statsReqParams),
12459 &pSendBuffer, &usDataOffset, &usSendSize))||
12460 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12461 {
12462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012463 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012464 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 }
12468
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 wpalMemoryCopy( pSendBuffer+usDataOffset,
12474 &halStatsReqMsg.statsReqParams,
12475 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012476
12477 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012479
12480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12484 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012485}/*WDI_ProcessGetStatsReq*/
12486
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012487#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012488/**
12489 @brief Process Get Roam Rssi Request function (called when Main FSM
12490 allows it)
12491
12492 @param pWDICtx: pointer to the WLAN DAL context
12493 pEventData: pointer to the event information structure
12494
12495 @see
12496 @return Result of the function call
12497*/
12498WDI_Status
12499WDI_ProcessGetRoamRssiReq
12500(
12501 WDI_ControlBlockType* pWDICtx,
12502 WDI_EventInfoType* pEventData
12503)
12504{
12505 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12506 WDI_GetStatsRspCb wdiGetStatsRspCb;
12507 wpt_uint8* pSendBuffer = NULL;
12508 wpt_uint16 usDataOffset = 0;
12509 wpt_uint16 usSendSize = 0;
12510 wpt_uint8 ucCurrentBSSSesIdx = 0;
12511 WDI_BSSSessionType* pBSSSes = NULL;
12512 wpt_macAddr macBSSID;
12513 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12514 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12516 /*-------------------------------------------------------------------------
12517 Sanity check
12518 -------------------------------------------------------------------------*/
12519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12520 ( NULL == pEventData->pCBfnc ) )
12521 {
12522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12523 "%s: Invalid parameters", __func__);
12524 WDI_ASSERT(0);
12525 return WDI_STATUS_E_FAILURE;
12526 }
12527
12528 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12529 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12530
12531 /*-------------------------------------------------------------------------
12532 Check to see if we are in the middle of an association, if so queue, if
12533 not it means it is free to process request
12534 -------------------------------------------------------------------------*/
12535 wpalMutexAcquire(&pWDICtx->wptMutex);
12536
12537 /*------------------------------------------------------------------------
12538 Find the BSS for which the request is made
12539 ------------------------------------------------------------------------*/
12540 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12541 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12542 &macBSSID))
12543 {
12544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012545 "This station does not exist in the WDI Station Table %d",
12546 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012547 wpalMutexRelease(&pWDICtx->wptMutex);
12548 return WDI_STATUS_E_FAILURE;
12549 }
12550
12551 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12552 if ( NULL == pBSSSes )
12553 {
12554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12555 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12556 __func__, MAC_ADDR_ARRAY(macBSSID));
12557
12558 wpalMutexRelease(&pWDICtx->wptMutex);
12559 return WDI_STATUS_E_NOT_ALLOWED;
12560 }
12561
12562 /*------------------------------------------------------------------------
12563 Check if this BSS is being currently processed or queued,
12564 if queued - queue the new request as well
12565 ------------------------------------------------------------------------*/
12566 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12567 {
12568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12569 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12570 __func__, MAC_ADDR_ARRAY(macBSSID));
12571
12572 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12573 wpalMutexRelease(&pWDICtx->wptMutex);
12574 return wdiStatus;
12575 }
12576
12577 wpalMutexRelease(&pWDICtx->wptMutex);
12578
12579 /*-----------------------------------------------------------------------
12580 Get message buffer
12581 -----------------------------------------------------------------------*/
12582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12583 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12584 &pSendBuffer, &usDataOffset, &usSendSize))||
12585 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12586 {
12587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012588 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012589 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12590 WDI_ASSERT(0);
12591 return WDI_STATUS_E_FAILURE;
12592 }
12593
12594 halRssiRoamReqMsg.roamRssiReqParams.staId =
12595 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12596 wpalMemoryCopy( pSendBuffer+usDataOffset,
12597 &halRssiRoamReqMsg.roamRssiReqParams,
12598 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12599
12600 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12601 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12602
12603 /*-------------------------------------------------------------------------
12604 Send Get STA Request to HAL
12605 -------------------------------------------------------------------------*/
12606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12607 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12608}/*WDI_ProcessGetRoamRssiReq*/
12609#endif
12610
Jeff Johnson295189b2012-06-20 16:38:30 -070012611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012614
12615 @param pWDICtx: pointer to the WLAN DAL context
12616 pEventData: pointer to the event information structure
12617
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 @see
12619 @return Result of the function call
12620*/
12621WDI_Status
12622WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012623(
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 WDI_ControlBlockType* pWDICtx,
12625 WDI_EventInfoType* pEventData
12626)
12627{
12628 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12629 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12630
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 wpt_uint16 usDataOffset = 0;
12633 wpt_uint16 usSendSize = 0;
12634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12635
12636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 -------------------------------------------------------------------------*/
12639 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12640 ( NULL == pEventData->pCBfnc))
12641 {
12642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 }
12647
12648 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12649 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12650
12651 /*-----------------------------------------------------------------------
12652 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 -----------------------------------------------------------------------*/
12655
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12658 &pSendBuffer, &usDataOffset, &usSendSize))||
12659 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12660 {
12661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012662 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 }
12667
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 wpalMemoryCopy( pSendBuffer+usDataOffset,
12669 &pwdiUpdateCfgParams->uConfigBufferLen,
12670 sizeof(wpt_uint32));
12671 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12672 pwdiUpdateCfgParams->pConfigBuffer,
12673 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012674
12675 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012677
12678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 -------------------------------------------------------------------------*/
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12683 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012684
12685}/*WDI_ProcessUpdateCfgReq*/
12686
12687
12688/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012691
12692 @param pWDICtx: pointer to the WLAN DAL context
12693 pEventData: pointer to the event information structure
12694
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 @see
12696 @return Result of the function call
12697*/
12698WDI_Status
12699WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012700(
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 WDI_ControlBlockType* pWDICtx,
12702 WDI_EventInfoType* pEventData
12703)
12704{
12705 WDI_AddBAReqParamsType* pwdiAddBAParams;
12706 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 wpt_uint16 usDataOffset = 0;
12711 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 wpt_macAddr macBSSID;
12714
12715 tAddBAReqMsg halAddBAReq;
12716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12717
12718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 -------------------------------------------------------------------------*/
12721 if (( NULL == pEventData ) ||
12722 ( NULL == pEventData->pEventData) ||
12723 ( NULL == pEventData->pCBfnc ))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730
12731 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12732 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12733
12734 /*-------------------------------------------------------------------------
12735 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -------------------------------------------------------------------------*/
12738 wpalMutexAcquire(&pWDICtx->wptMutex);
12739
12740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12744 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 &macBSSID))
12746 {
12747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012748 "This station does not exist in the WDI Station Table %d",
12749 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 }
12753
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12755 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12758 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12759 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012760
12761 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 }
12764
12765 /*------------------------------------------------------------------------
12766 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 ------------------------------------------------------------------------*/
12769 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12770 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12772 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12773 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012774
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 }
12779
12780
12781 wpalMutexRelease(&pWDICtx->wptMutex);
12782 /*-----------------------------------------------------------------------
12783 Get message buffer
12784 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 sizeof(halAddBAReq.addBAParams),
12787 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12790 {
12791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012792 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 }
12797
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012799 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12800 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12801#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12804#endif
12805
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 wpalMemoryCopy( pSendBuffer+usDataOffset,
12807 &halAddBAReq.addBAParams,
12808 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012809
12810 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012812
12813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12817 wdiAddBARspCb, pEventData->pUserData,
12818 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012819}/*WDI_ProcessAddBAReq*/
12820
12821
12822
12823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012826
12827 @param pWDICtx: pointer to the WLAN DAL context
12828 pEventData: pointer to the event information structure
12829
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 @see
12831 @return Result of the function call
12832*/
12833WDI_Status
12834WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012835(
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 WDI_ControlBlockType* pWDICtx,
12837 WDI_EventInfoType* pEventData
12838)
12839{
12840 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12841 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 wpt_uint16 usDataOffset = 0;
12846 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 wpt_uint16 index;
12849 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012850
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 tTriggerBAReqMsg halTriggerBAReq;
12852 tTriggerBaReqCandidate* halTriggerBACandidate;
12853 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12855
12856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 -------------------------------------------------------------------------*/
12859 if (( NULL == pEventData ) ||
12860 ( NULL == pEventData->pEventData ) ||
12861 ( NULL == pEventData->pCBfnc ))
12862 {
12863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 }
12868
12869 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12870 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12871 /*-------------------------------------------------------------------------
12872 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 -------------------------------------------------------------------------*/
12875 wpalMutexAcquire(&pWDICtx->wptMutex);
12876
12877 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12881 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 &macBSSID))
12883 {
12884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012885 "This station does not exist in the WDI Station Table %d",
12886 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 }
12890
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12892 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12895 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12896 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012897
12898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 }
12901
12902 /*------------------------------------------------------------------------
12903 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 ------------------------------------------------------------------------*/
12906 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12907 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12909 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12910 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 }
12916
12917
12918 wpalMutexRelease(&pWDICtx->wptMutex);
12919 /*-----------------------------------------------------------------------
12920 Get message buffer
12921 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12923 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12927 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012931 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12932 {
12933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012934 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 }
12939
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012942 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12944
Jeff Johnsone7245742012-09-05 17:12:55 -070012945 wpalMemoryCopy( pSendBuffer+usDataOffset,
12946 &halTriggerBAReq.triggerBAParams,
12947 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012948
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12951 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12952 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012953
12954 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 index++)
12956 {
12957 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12958 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12959 halTriggerBACandidate++;
12960 wdiTriggerBACandidate++;
12961 }
12962
12963 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012965
12966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12970 wdiTriggerBARspCb, pEventData->pUserData,
12971 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012972}/*WDI_ProcessTriggerBAReq*/
12973
12974
12975
12976/**
12977 @brief Process Update Beacon Params Request function (called when Main FSM
12978 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012979
12980 @param pWDICtx: pointer to the WLAN DAL context
12981 pEventData: pointer to the event information structure
12982
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 @see
12984 @return Result of the function call
12985*/
12986WDI_Status
12987WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012988(
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 WDI_ControlBlockType* pWDICtx,
12990 WDI_EventInfoType* pEventData
12991)
12992{
12993 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12994 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpt_uint16 usDataOffset = 0;
12997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012998 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13000
13001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 -------------------------------------------------------------------------*/
13004 if (( NULL == pEventData ) ||
13005 ( NULL == pEventData->pEventData) ||
13006 ( NULL == pEventData->pCBfnc))
13007 {
13008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 }
13013
13014 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13015 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13016 /*-----------------------------------------------------------------------
13017 Get message buffer
13018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 sizeof(halUpdateBeaconParams),
13021 &pSendBuffer, &usDataOffset, &usSendSize))||
13022 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13023 {
13024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013025 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013026 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 }
13030
13031 /*BSS Index of the BSS*/
13032 halUpdateBeaconParams.bssIdx =
13033 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13034 /*shortPreamble mode. HAL should update all the STA rates when it
13035 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13038 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13041 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013043 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13044
13045 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013054 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013055 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13058 halUpdateBeaconParams.fRIFSMode =
13059 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13062
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13064 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013065
13066 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013068
13069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13073 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013074}/*WDI_ProcessUpdateBeaconParamsReq*/
13075
13076
13077
13078/**
13079 @brief Process Send Beacon template Request function (called when Main FSM
13080 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013081
13082 @param pWDICtx: pointer to the WLAN DAL context
13083 pEventData: pointer to the event information structure
13084
Jeff Johnson295189b2012-06-20 16:38:30 -070013085 @see
13086 @return Result of the function call
13087*/
13088WDI_Status
13089WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013090(
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 WDI_ControlBlockType* pWDICtx,
13092 WDI_EventInfoType* pEventData
13093)
13094{
13095 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13096 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 wpt_uint16 usDataOffset = 0;
13099 wpt_uint16 usSendSize = 0;
13100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13101
13102 tSendBeaconReqMsg halSendBeaconReq;
13103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 -------------------------------------------------------------------------*/
13106 if (( NULL == pEventData ) ||
13107 ( NULL == pEventData->pEventData ) ||
13108 ( NULL == pEventData->pCBfnc ))
13109 {
13110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 }
13115
13116 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13117 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13118 /*-----------------------------------------------------------------------
13119 Get message buffer
13120 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 sizeof(halSendBeaconReq.sendBeaconParam),
13123 &pSendBuffer, &usDataOffset, &usSendSize))||
13124 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13125 {
13126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013127 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 }
13132
13133 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13134 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13135 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13138 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13139 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13140 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013143 /* usP2PIeOffset should be atleast greater than timIeOffset */
13144 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13145 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13146 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13147 {
13148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13149 "Invalid usP2PIeOffset %hu",
13150 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13151 WDI_ASSERT(0);
13152 return WDI_STATUS_E_FAILURE;
13153 }
13154
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013157
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 wpalMemoryCopy( pSendBuffer+usDataOffset,
13159 &halSendBeaconReq.sendBeaconParam,
13160 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013161
13162 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013164
13165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13169 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013170}/*WDI_ProcessSendBeaconParamsReq*/
13171
13172/**
13173 @brief Process Update Beacon Params Request function (called when Main FSM
13174 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013175
13176 @param pWDICtx: pointer to the WLAN DAL context
13177 pEventData: pointer to the event information structure
13178
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 @see
13180 @return Result of the function call
13181*/
13182WDI_Status
13183WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013184(
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 WDI_ControlBlockType* pWDICtx,
13186 WDI_EventInfoType* pEventData
13187)
13188{
13189 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13190 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 wpt_uint16 usDataOffset = 0;
13193 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13196
13197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 -------------------------------------------------------------------------*/
13200 if (( NULL == pEventData ) ||
13201 ( NULL == pEventData->pEventData) ||
13202 ( NULL == pEventData->pCBfnc))
13203 {
13204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 }
13209
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013212 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13214 /*-----------------------------------------------------------------------
13215 Get message buffer
13216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 sizeof(halUpdateProbeRspTmplParams),
13219 &pSendBuffer, &usDataOffset, &usSendSize))||
13220 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13221 {
13222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013223 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 }
13228
13229 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 WDI_MAC_ADDR_LEN);
13232
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13235
13236 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13237 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013239
13240
13241 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13242 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13243 WDI_PROBE_REQ_BITMAP_IE_LEN);
13244
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 wpalMemoryCopy( pSendBuffer+usDataOffset,
13246 &halUpdateProbeRspTmplParams,
13247 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013248
13249 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251
13252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13256 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13257 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013258}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13259
13260/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013263
13264 @param pWDICtx: pointer to the WLAN DAL context
13265 pEventData: pointer to the event information structure
13266
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 @see
13268 @return Result of the function call
13269*/
13270WDI_Status
13271WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013272(
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 WDI_ControlBlockType* pWDICtx,
13274 WDI_EventInfoType* pEventData
13275)
13276{
13277
13278 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13279 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13280
13281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 -------------------------------------------------------------------------*/
13284 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013287 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13289 {
13290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 }
13295
13296 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013297 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13299
13300 /*cache the wdi nv request message here if the the first fragment
13301 * To issue the request to HAL for the next fragment */
13302 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13305 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13307
13308 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13309 pWDICtx->pRspCBUserData = pEventData->pUserData;
13310 }
13311
13312 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13313}
13314
13315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013318
13319 @param pWDICtx: pointer to the WLAN DAL context
13320 pEventData: pointer to the event information structure
13321
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 @see
13323 @return Result of the function call
13324*/
13325WDI_Status WDI_ProcessSetMaxTxPowerReq
13326(
13327 WDI_ControlBlockType* pWDICtx,
13328 WDI_EventInfoType* pEventData
13329)
13330{
13331 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13332 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 wpt_uint16 usDataOffset = 0;
13335 wpt_uint16 usSendSize = 0;
13336 tSetMaxTxPwrReq halSetMaxTxPower;
13337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13338
13339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 -------------------------------------------------------------------------*/
13342 if (( NULL == pEventData ) ||
13343 ( NULL == pEventData->pEventData ) ||
13344 ( NULL == pEventData->pCBfnc ))
13345 {
13346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013353 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13355
13356 /*-----------------------------------------------------------------------
13357 Get message buffer
13358 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013359if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13361 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013363)))
13364 {
13365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013366 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 }
13371
13372 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13373 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13374 WDI_MAC_ADDR_LEN);
13375
13376 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13377 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13378 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013381
13382 wpalMemoryCopy( pSendBuffer+usDataOffset,
13383 &halSetMaxTxPower.setMaxTxPwrParams,
13384 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013385
13386 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013388
13389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13393 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13394 WDI_SET_MAX_TX_POWER_RESP);
13395
Jeff Johnson295189b2012-06-20 16:38:30 -070013396}
13397
Arif Hussaina5ebce02013-08-09 15:09:58 -070013398/*
13399 @brief Process Set Max Tx Power Per Band Request function (called when Main
13400 FSM allows it)
13401
13402 @param pWDICtx: pointer to the WLAN DAL context
13403 pEventData: pointer to the event information structure
13404
13405 @see
13406 @return Result of the function call
13407*/
13408WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13409(
13410 WDI_ControlBlockType* pWDICtx,
13411 WDI_EventInfoType* pEventData
13412)
13413{
13414 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13415 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13416 wpt_uint8* pSendBuffer = NULL;
13417 wpt_uint16 usDataOffset = 0;
13418 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013419 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013420 WDI_Status rValue = WDI_STATUS_SUCCESS;
13421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13422
13423 /*-------------------------------------------------------------------------
13424 Sanity check
13425 -------------------------------------------------------------------------*/
13426 if (( NULL == pEventData ) ||
13427 ( NULL == pEventData->pEventData ) ||
13428 ( NULL == pEventData->pCBfnc ))
13429 {
13430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13431 "%s: Invalid parameters", __func__);
13432 WDI_ASSERT(0);
13433 return WDI_STATUS_E_FAILURE;
13434 }
13435 pwdiSetMaxTxPowerPerBandParams = \
13436 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13437
13438 wdiSetMaxTxPowerPerBandRspCb = \
13439 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13440
13441 /*-----------------------------------------------------------------------
13442 Get message buffer
13443 -----------------------------------------------------------------------*/
13444
13445 rValue = WDI_GetMessageBuffer(pWDICtx,
13446 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13447 sizeof(tSetMaxTxPwrPerBandParams),
13448 &pSendBuffer, &usDataOffset, &usSendSize);
13449
13450 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13451 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13452 {
13453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13454 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13455 pEventData, pwdiSetMaxTxPowerPerBandParams,
13456 wdiSetMaxTxPowerPerBandRspCb);
13457 WDI_ASSERT(0);
13458 return WDI_STATUS_E_FAILURE;
13459 }
13460
13461
Arif Hussainf8f080c2014-04-03 09:48:36 -070013462 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13463 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013464 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13465
Arif Hussainf8f080c2014-04-03 09:48:36 -070013466 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013467 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13468
13469 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13470 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13471
13472 /*-------------------------------------------------------------------------
13473 Send Set Max Tx Power Per Band Request to HAL
13474 -------------------------------------------------------------------------*/
13475 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13476 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13477 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13478}
13479
schang86c22c42013-03-13 18:41:24 -070013480/**
13481 @brief Process Set Tx Power Request function (called when Main
13482 FSM allows it)
13483
13484 @param pWDICtx: pointer to the WLAN DAL context
13485 pEventData: pointer to the event information structure
13486
13487 @see
13488 @return Result of the function call
13489*/
13490WDI_Status WDI_ProcessSetTxPowerReq
13491(
13492 WDI_ControlBlockType* pWDICtx,
13493 WDI_EventInfoType* pEventData
13494)
13495{
13496 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13497 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13498 wpt_uint8* pSendBuffer = NULL;
13499 wpt_uint16 usDataOffset = 0;
13500 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013501 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13503
13504 /*-------------------------------------------------------------------------
13505 Sanity check
13506 -------------------------------------------------------------------------*/
13507 if (( NULL == pEventData ) ||
13508 ( NULL == pEventData->pEventData ) ||
13509 ( NULL == pEventData->pCBfnc ))
13510 {
13511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13512 "%s: Invalid parameters", __func__);
13513 WDI_ASSERT(0);
13514 return WDI_STATUS_E_FAILURE;
13515 }
13516
13517 pwdiSetTxPowerParams =
13518 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13519 wdiSetTxPowerRspCb =
13520 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13521
13522 /*-----------------------------------------------------------------------
13523 Get message buffer
13524 -----------------------------------------------------------------------*/
13525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13526 sizeof(tSetTxPwrReqParams),
13527 &pSendBuffer, &usDataOffset, &usSendSize))||
13528 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13529 )))
13530 {
13531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013532 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013533 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13534 WDI_ASSERT(0);
13535 return WDI_STATUS_E_FAILURE;
13536 }
13537
Leo Chang9a43db92013-03-25 17:39:58 -070013538 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13539 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13540 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013541
13542 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13543 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13544
13545 /*-------------------------------------------------------------------------
13546 Send Set Tx Power Request to HAL
13547 -------------------------------------------------------------------------*/
13548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13549 wdiSetTxPowerRspCb, pEventData->pUserData,
13550 WDI_SET_TX_POWER_RESP);
13551}
Jeff Johnson295189b2012-06-20 16:38:30 -070013552
13553/**
13554 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13555 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013556
13557 @param pWDICtx: pointer to the WLAN DAL context
13558 pEventData: pointer to the event information structure
13559
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 @see
13561 @return Result of the function call
13562*/
13563WDI_Status
13564WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013565(
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 WDI_ControlBlockType* pWDICtx,
13567 WDI_EventInfoType* pEventData
13568)
13569{
13570 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13571 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 wpt_uint16 usDataOffset = 0;
13574 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13577
13578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 -------------------------------------------------------------------------*/
13581 if (( NULL == pEventData ) ||
13582 ( NULL == pEventData->pEventData) ||
13583 ( NULL == pEventData->pCBfnc))
13584 {
13585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589 }
13590
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13595 /*-----------------------------------------------------------------------
13596 Get message buffer
13597 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13599 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 sizeof(halSetP2PGONOAParams),
13601 &pSendBuffer, &usDataOffset, &usSendSize))||
13602 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13603 {
13604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013605 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 }
13610
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13615 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013616 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13624
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 wpalMemoryCopy( pSendBuffer+usDataOffset,
13626 &halSetP2PGONOAParams,
13627 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013628
13629 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013631
13632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013633 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13636 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13637 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013638}/*WDI_ProcessP2PGONOAReq*/
13639
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013640#ifdef FEATURE_WLAN_TDLS
13641
13642/**
13643 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13644 allows it)
13645
13646 @param pWDICtx: pointer to the WLAN DAL context
13647 pEventData: pointer to the event information structure
13648
13649 @see
13650 @return Result of the function call
13651*/
13652WDI_Status
13653WDI_ProcessTdlsLinkEstablishReq
13654(
13655 WDI_ControlBlockType* pWDICtx,
13656 WDI_EventInfoType* pEventData
13657)
13658{
13659 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13660 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13661 wpt_uint8* pSendBuffer = NULL;
13662 wpt_uint16 usDataOffset = 0;
13663 wpt_uint16 usSendSize = 0;
13664
13665 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13667
13668 /*-------------------------------------------------------------------------
13669 Sanity check
13670 -------------------------------------------------------------------------*/
13671 if (( NULL == pEventData ) ||
13672 ( NULL == pEventData->pEventData) ||
13673 ( NULL == pEventData->pCBfnc))
13674 {
13675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13676 "%s: Invalid parameters", __func__);
13677 WDI_ASSERT(0);
13678 return WDI_STATUS_E_FAILURE;
13679 }
13680 pwdiTDLSLinkEstablishReqParams =
13681 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13682 wdiTDLSLinkEstablishReqRspCb =
13683 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13684
13685
13686 /*-----------------------------------------------------------------------
13687 Get message buffer
13688 -----------------------------------------------------------------------*/
13689 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13690 WDI_TDLS_LINK_ESTABLISH_REQ,
13691 sizeof(halSetTDLSLinkEstablishParams),
13692 &pSendBuffer, &usDataOffset, &usSendSize))||
13693 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13694 {
13695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013696 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013697 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13698 WDI_ASSERT(0);
13699 return WDI_STATUS_E_FAILURE;
13700 }
13701
13702 halSetTDLSLinkEstablishParams.staIdx =
13703 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13704 halSetTDLSLinkEstablishParams.bIsResponder =
13705 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13706 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13707 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13708 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13709 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13710 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13711 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13712 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13713 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13714 halSetTDLSLinkEstablishParams.aAck = 0;
13715 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13716 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13717 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013718 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13719 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13720
13721 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13722 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13723 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13724 halSetTDLSLinkEstablishParams.validChannelsLen =
13725 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13726
13727 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13728 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13729 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13730 halSetTDLSLinkEstablishParams.validOperClassesLen =
13731 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013732
13733 wpalMemoryCopy( pSendBuffer+usDataOffset,
13734 &halSetTDLSLinkEstablishParams,
13735 sizeof(halSetTDLSLinkEstablishParams));
13736
13737 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13738 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13739
13740 /*-------------------------------------------------------------------------
13741 Send Update Probe Resp Template Request to HAL
13742 -------------------------------------------------------------------------*/
13743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13744 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13745 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13746 return 0;
13747}/*WDI_ProcessTdlsLinkEstablishReq*/
13748
13749
Atul Mittalc0f739f2014-07-31 13:47:47 +053013750/**
13751 @brief sends the channel switch command to f/w (called when Main FSM
13752 allows it)
13753
13754 @param pWDICtx: pointer to the WLAN DAL context
13755 pEventData: pointer to the event information structure
13756
13757 @see
13758 @return Result of the function call
13759*/
13760WDI_Status
13761WDI_ProcessTdlsChanSwitchReq
13762(
13763 WDI_ControlBlockType* pWDICtx,
13764 WDI_EventInfoType* pEventData
13765)
13766{
13767 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13768 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13769 wpt_uint8* pSendBuffer = NULL;
13770 wpt_uint16 usDataOffset = 0;
13771 wpt_uint16 usSendSize = 0;
13772 //WDI_Status wdiStatus;
13773 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13775
13776 /*-------------------------------------------------------------------------
13777 Sanity check
13778 -------------------------------------------------------------------------*/
13779 if (( NULL == pEventData ) ||
13780 ( NULL == pEventData->pEventData))
13781 {
13782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13783 "%s: Invalid parameters", __func__);
13784 WDI_ASSERT(0);
13785 return WDI_STATUS_E_FAILURE;
13786 }
13787 pwdiTDLSChanSwitchReqParams =
13788 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13789 wdiTDLSChanSwitchReqRspCb =
13790 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13791
13792 /*-----------------------------------------------------------------------
13793 Get message buffer
13794 -----------------------------------------------------------------------*/
13795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13796 WDI_TDLS_CHAN_SWITCH_REQ,
13797 sizeof(halSetTDLSChanSwitchParams),
13798 &pSendBuffer, &usDataOffset, &usSendSize))||
13799 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13800 {
13801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13802 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13803 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13804 WDI_ASSERT(0);
13805 return WDI_STATUS_E_FAILURE;
13806 }
13807
13808 halSetTDLSChanSwitchParams.staIdx =
13809 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13810 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13811 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13812 halSetTDLSChanSwitchParams.targetOperClass =
13813 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13814 halSetTDLSChanSwitchParams.targetChannel =
13815 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13816 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13817 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13818 wpalMemoryCopy( pSendBuffer+usDataOffset,
13819 &halSetTDLSChanSwitchParams,
13820 sizeof(halSetTDLSChanSwitchParams));
13821
13822 pWDICtx->wdiReqStatusCB = NULL;
13823 pWDICtx->pReqStatusUserData = NULL;
13824
13825 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13826 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13827 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13828}/*WDI_ProcessTdlsChanSwitchReq*/
13829
13830#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013831
Jeff Johnson295189b2012-06-20 16:38:30 -070013832
13833
13834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 @param None
13838
13839 @see
13840 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013841*/
13842void
13843WDI_SetPowerStateCb
13844(
13845 wpt_status status,
13846 unsigned int dxePhyAddr,
13847 void *pContext
13848)
13849{
13850 wpt_status wptStatus;
13851 WDI_ControlBlockType *pCB = NULL;
13852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013853 /*
13854 * Trigger the event to bring the Enter BMPS req function to come
13855 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013856*/
13857 if( NULL != pContext )
13858 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 }
13861 else
13862 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 pCB = &gWDICb;
13865 }
Mihir Shetea4306052014-03-25 00:02:54 +053013866
13867 if(eWLAN_PAL_STATUS_SUCCESS == status )
13868 {
13869 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13870 }
13871 else
13872 {
13873 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13874 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 pCB->dxePhyAddr = dxePhyAddr;
13876 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13877 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13878 {
13879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13880 "Failed to set an event");
13881
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 }
13884 return;
13885}
13886
13887
13888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013891
13892 @param pWDICtx: pointer to the WLAN DAL context
13893 pEventData: pointer to the event information structure
13894
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 @see
13896 @return Result of the function call
13897*/
13898WDI_Status
13899WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013900(
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 WDI_ControlBlockType* pWDICtx,
13902 WDI_EventInfoType* pEventData
13903)
13904{
Jeff Johnson43971f52012-07-17 12:26:56 -070013905 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013906 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 wpt_uint16 usDataOffset = 0;
13909 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013910 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13912
13913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013916 if ((NULL == pEventData ) ||
13917 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13918 (NULL == (pwdiEnterImpsReqParams =
13919 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 {
13921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013924 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 }
13926
13927 /*-----------------------------------------------------------------------
13928 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 0,
13933 &pSendBuffer, &usDataOffset, &usSendSize))||
13934 ( usSendSize < (usDataOffset )))
13935 {
13936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013937 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 pEventData, wdiEnterImpsRspCb);
13939 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013940 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 }
13942
13943 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013944 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13945 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 {
13947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13948 "WDI Init failed to reset an event");
13949
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013951 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 }
13953
13954 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013955 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13956 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013958 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013959 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013960 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013962
13963 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013966 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13967 WDI_SET_POWER_STATE_TIMEOUT);
13968 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 {
13970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13971 "WDI Init failed to wait on an event");
13972
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013974 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 }
13976
Mihir Shetea4306052014-03-25 00:02:54 +053013977 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13978 {
13979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13980 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13981
13982 goto fail;
13983 }
13984
13985 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13986 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13991 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013992
13993fail:
13994 // Release the message buffer so we don't leak
13995 wpalMemoryFree(pSendBuffer);
13996
13997failRequest:
13998 //WDA should have failure check to avoid the memory leak
13999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014000}/*WDI_ProcessEnterImpsReq*/
14001
14002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014005
14006 @param pWDICtx: pointer to the WLAN DAL context
14007 pEventData: pointer to the event information structure
14008
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 @see
14010 @return Result of the function call
14011*/
14012WDI_Status
14013WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014014(
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 WDI_ControlBlockType* pWDICtx,
14016 WDI_EventInfoType* pEventData
14017)
14018{
14019 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 wpt_uint16 usDataOffset = 0;
14022 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014023 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14025
14026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 -------------------------------------------------------------------------*/
14029 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014030 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14031 (NULL == (pwdiExitImpsReqParams =
14032 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 {
14034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 }
14039
14040 /*-----------------------------------------------------------------------
14041 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 0,
14046 &pSendBuffer, &usDataOffset, &usSendSize))||
14047 ( usSendSize < (usDataOffset )))
14048 {
14049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014050 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 pEventData, wdiExitImpsRspCb);
14052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014055 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14056 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14061 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014062}/*WDI_ProcessExitImpsReq*/
14063
14064/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014067
14068 @param pWDICtx: pointer to the WLAN DAL context
14069 pEventData: pointer to the event information structure
14070
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 @see
14072 @return Result of the function call
14073*/
14074WDI_Status
14075WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014076(
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 WDI_ControlBlockType* pWDICtx,
14078 WDI_EventInfoType* pEventData
14079)
14080{
14081 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14082 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 wpt_uint16 usDataOffset = 0;
14085 wpt_uint16 usSendSize = 0;
14086 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014087 wpt_status wptStatus;
14088
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14090
14091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 -------------------------------------------------------------------------*/
14094 if (( NULL == pEventData ) ||
14095 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14096 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14097 {
14098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014101 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103
14104 /*-----------------------------------------------------------------------
14105 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 sizeof(enterBmpsReq),
14110 &pSendBuffer, &usDataOffset, &usSendSize))||
14111 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14112 {
14113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014114 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14116 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014117 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 }
14119
14120 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014121 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14122 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 {
14124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14125 "WDI Init failed to reset an event");
14126
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014128 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 }
14130
14131 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014132 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14133 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14134 {
14135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014136 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014137 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014138 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014139 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014140
14141/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014144 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14145 WDI_SET_POWER_STATE_TIMEOUT);
14146 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 {
14148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14149 "WDI Init failed to wait on an event");
14150
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014152 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 }
14154
14155 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14156
14157 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14158 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14159 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14160 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14161
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014162 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14164 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14165 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14166
14167 wpalMemoryCopy( pSendBuffer+usDataOffset,
14168 &enterBmpsReq,
14169 sizeof(enterBmpsReq));
14170
14171 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014173
14174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14178 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014179
14180fail:
14181 // Release the message buffer so we don't leak
14182 wpalMemoryFree(pSendBuffer);
14183
14184failRequest:
14185 //WDA should have failure check to avoid the memory leak
14186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014187}/*WDI_ProcessEnterBmpsReq*/
14188
14189/**
14190 @brief Process Exit BMPS Request function (called when Main FSM
14191 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014192
14193 @param pWDICtx: pointer to the WLAN DAL context
14194 pEventData: pointer to the event information structure
14195
Jeff Johnson295189b2012-06-20 16:38:30 -070014196 @see
14197 @return Result of the function call
14198*/
14199WDI_Status
14200WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014201(
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 WDI_ControlBlockType* pWDICtx,
14203 WDI_EventInfoType* pEventData
14204)
14205{
14206 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14207 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 wpt_uint16 usDataOffset = 0;
14210 wpt_uint16 usSendSize = 0;
14211 tHalExitBmpsReqParams exitBmpsReq;
14212 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14213
14214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014215 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014216 -------------------------------------------------------------------------*/
14217 if (( NULL == pEventData ) ||
14218 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14219 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 }
14226
14227 /*-----------------------------------------------------------------------
14228 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 sizeof(exitBmpsReq),
14233 &pSendBuffer, &usDataOffset, &usSendSize))||
14234 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14235 {
14236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014237 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14243
Jeff Johnsone7245742012-09-05 17:12:55 -070014244 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14245
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 wpalMemoryCopy( pSendBuffer+usDataOffset,
14247 &exitBmpsReq,
14248 sizeof(exitBmpsReq));
14249
14250 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014252
14253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014254 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14257 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014258}/*WDI_ProcessExitBmpsReq*/
14259
14260/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014263
14264 @param pWDICtx: pointer to the WLAN DAL context
14265 pEventData: pointer to the event information structure
14266
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 @see
14268 @return Result of the function call
14269*/
14270WDI_Status
14271WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014272(
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 WDI_ControlBlockType* pWDICtx,
14274 WDI_EventInfoType* pEventData
14275)
14276{
14277 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14278 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 wpt_uint16 usDataOffset = 0;
14281 wpt_uint16 usSendSize = 0;
14282 tUapsdReqParams enterUapsdReq;
14283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14284
14285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 -------------------------------------------------------------------------*/
14288 if (( NULL == pEventData ) ||
14289 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14290 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14291 {
14292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 }
14297
14298 /*-----------------------------------------------------------------------
14299 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 sizeof(enterUapsdReq),
14304 &pSendBuffer, &usDataOffset, &usSendSize))||
14305 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14306 {
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014308 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313
14314 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14315 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14316 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14317 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14318 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14319 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14320 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14321 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 wpalMemoryCopy( pSendBuffer+usDataOffset,
14325 &enterUapsdReq,
14326 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014327
14328 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014330
14331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014332 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14335 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014336}/*WDI_ProcessEnterUapsdReq*/
14337
14338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014341
14342 @param pWDICtx: pointer to the WLAN DAL context
14343 pEventData: pointer to the event information structure
14344
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 @see
14346 @return Result of the function call
14347*/
14348WDI_Status
14349WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014350(
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 WDI_ControlBlockType* pWDICtx,
14352 WDI_EventInfoType* pEventData
14353)
14354{
14355 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 wpt_uint16 usDataOffset = 0;
14358 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014359 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14360 wpt_uint8 bssIdx = 0;
14361
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14363
14364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 -------------------------------------------------------------------------*/
14367 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014368 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14370 {
14371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
14376
14377 /*-----------------------------------------------------------------------
14378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014382 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014384 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 {
14386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014387 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 pEventData, wdiExitUapsdRspCb);
14389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 }
14392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014393 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14394
14395 wpalMemoryCopy( pSendBuffer+usDataOffset,
14396 &bssIdx,
14397 sizeof(wpt_uint8));
14398
14399 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14400 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14401
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14406 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014407}/*WDI_ProcessExitUapsdReq*/
14408
14409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014412
14413 @param pWDICtx: pointer to the WLAN DAL context
14414 pEventData: pointer to the event information structure
14415
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 @see
14417 @return Result of the function call
14418*/
14419WDI_Status
14420WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014421(
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 WDI_ControlBlockType* pWDICtx,
14423 WDI_EventInfoType* pEventData
14424)
14425{
14426 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14427 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 wpt_uint16 usDataOffset = 0;
14430 wpt_uint16 usSendSize = 0;
14431 tUapsdInfo uapsdAcParamsReq;
14432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14433
14434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -------------------------------------------------------------------------*/
14437 if (( NULL == pEventData ) ||
14438 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14439 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14440 {
14441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 }
14446
14447 /*-----------------------------------------------------------------------
14448 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 sizeof(uapsdAcParamsReq),
14453 &pSendBuffer, &usDataOffset, &usSendSize))||
14454 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14455 {
14456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014457 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 }
14462
14463 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14464 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14465 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14466 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14467 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14468 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14469
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 wpalMemoryCopy( pSendBuffer+usDataOffset,
14471 &uapsdAcParamsReq,
14472 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014473
14474 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014476
14477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014478 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14481 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014482}/*WDI_ProcessSetUapsdAcParamsReq*/
14483
14484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014487
14488 @param pWDICtx: pointer to the WLAN DAL context
14489 pEventData: pointer to the event information structure
14490
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 @see
14492 @return Result of the function call
14493*/
14494WDI_Status
14495WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014496(
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 WDI_ControlBlockType* pWDICtx,
14498 WDI_EventInfoType* pEventData
14499)
14500{
14501 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14502 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 wpt_uint16 usDataOffset = 0;
14505 wpt_uint16 usSendSize = 0;
14506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14507
14508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 -------------------------------------------------------------------------*/
14511 if (( NULL == pEventData ) ||
14512 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14513 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14514 {
14515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 }
14520
14521 /*-----------------------------------------------------------------------
14522 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14527 &pSendBuffer, &usDataOffset, &usSendSize))||
14528 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14529 {
14530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014531 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 }
14536
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 wpalMemoryCopy( pSendBuffer+usDataOffset,
14538 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14539 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014540
14541 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543
14544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014545 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14548 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014549}/*WDI_ProcessUpdateUapsdParamsReq*/
14550
14551/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014554
14555 @param pWDICtx: pointer to the WLAN DAL context
14556 pEventData: pointer to the event information structure
14557
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 @see
14559 @return Result of the function call
14560*/
14561WDI_Status
14562WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014563(
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 WDI_ControlBlockType* pWDICtx,
14565 WDI_EventInfoType* pEventData
14566)
14567{
14568 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14569 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 wpt_uint16 usDataOffset = 0;
14572 wpt_uint16 usSendSize = 0;
14573 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14574
14575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14576
14577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 -------------------------------------------------------------------------*/
14580 if (( NULL == pEventData ) ||
14581 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14582 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14583 {
14584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 }
14589
14590 /*-----------------------------------------------------------------------
14591 Get message buffer
14592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 sizeof(halRxpFilterParams),
14595 &pSendBuffer, &usDataOffset, &usSendSize))||
14596 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14597 {
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014599 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 }
14604
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14609
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 wpalMemoryCopy( pSendBuffer+usDataOffset,
14611 &halRxpFilterParams,
14612 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014613
14614 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014616
14617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14621 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014622}/*WDI_ProcessConfigureRxpFilterReq*/
14623
14624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014627
14628 @param pWDICtx: pointer to the WLAN DAL context
14629 pEventData: pointer to the event information structure
14630
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 @see
14632 @return Result of the function call
14633*/
14634WDI_Status
14635WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014636(
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 WDI_ControlBlockType* pWDICtx,
14638 WDI_EventInfoType* pEventData
14639)
14640{
14641 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14642 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 wpt_uint16 usDataOffset = 0;
14645 wpt_uint16 usSendSize = 0;
14646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14647
14648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 -------------------------------------------------------------------------*/
14651 if (( NULL == pEventData ) ||
14652 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14653 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14654 {
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 }
14660
14661 /*-----------------------------------------------------------------------
14662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14667 &pSendBuffer, &usDataOffset, &usSendSize))||
14668 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014671 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 }
14676
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 wpalMemoryCopy( pSendBuffer+usDataOffset,
14678 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14679 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14680 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14681 &pwdiBeaconFilterParams->aFilters[0],
14682 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014683
14684 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686
14687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14691 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014692}/*WDI_ProcessSetBeaconFilterReq*/
14693
14694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014697
14698 @param pWDICtx: pointer to the WLAN DAL context
14699 pEventData: pointer to the event information structure
14700
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 @see
14702 @return Result of the function call
14703*/
14704WDI_Status
14705WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014706(
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 WDI_ControlBlockType* pWDICtx,
14708 WDI_EventInfoType* pEventData
14709)
14710{
14711 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14712 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 wpt_uint16 usDataOffset = 0;
14715 wpt_uint16 usSendSize = 0;
14716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14717
14718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 -------------------------------------------------------------------------*/
14721 if (( NULL == pEventData ) ||
14722 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14723 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14724 {
14725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 }
14730
14731 /*-----------------------------------------------------------------------
14732 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14737 &pSendBuffer, &usDataOffset, &usSendSize))||
14738 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14739 {
14740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014741 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 }
14746
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 wpalMemoryCopy( pSendBuffer+usDataOffset,
14748 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14749 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014750
14751 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014753
14754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14758 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014759}
14760
14761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014764
14765 @param pWDICtx: pointer to the WLAN DAL context
14766 pEventData: pointer to the event information structure
14767
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 @see
14769 @return Result of the function call
14770*/
14771WDI_Status
14772WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014773(
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 WDI_ControlBlockType* pWDICtx,
14775 WDI_EventInfoType* pEventData
14776)
14777{
14778 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14779 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 wpt_uint16 usDataOffset = 0;
14782 wpt_uint16 usSendSize = 0;
14783 tHalRSSIThresholds rssiThresholdsReq;
14784 WDI_Status ret_status = 0;
14785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14786
14787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 -------------------------------------------------------------------------*/
14790 if (( NULL == pEventData ) ||
14791 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14792 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14793 {
14794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 }
14799
14800 /*-----------------------------------------------------------------------
14801 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 sizeof(rssiThresholdsReq),
14806 &pSendBuffer, &usDataOffset, &usSendSize))||
14807 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14808 {
14809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014810 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 }
14815
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014822 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14836
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 wpalMemoryCopy( pSendBuffer+usDataOffset,
14838 &rssiThresholdsReq,
14839 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014840
14841 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843
14844 /*-------------------------------------------------------------------------
14845 Send Set threshold req to HAL
14846 -------------------------------------------------------------------------*/
14847 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14848 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14849 {
14850 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14851 // req. Then as a result of processing the threshold cross ind, we trigger
14852 // a Set threshold req, then we need to indicate to WDI that it needs to
14853 // go to busy state as a result of the indication as we sent a req in the
14854 // same WDI context.
14855 // Hence expected state transition is to busy.
14856 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14857 }
14858
14859 return ret_status;
14860}
14861
14862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014865
14866 @param pWDICtx: pointer to the WLAN DAL context
14867 pEventData: pointer to the event information structure
14868
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 @see
14870 @return Result of the function call
14871*/
14872WDI_Status
14873WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014874(
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 WDI_ControlBlockType* pWDICtx,
14876 WDI_EventInfoType* pEventData
14877)
14878{
14879 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14880 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 wpt_uint16 usDataOffset = 0;
14883 wpt_uint16 usSendSize = 0;
14884 tHalHostOffloadReq hostOffloadParams;
14885 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014886 wpt_uint8 ucCurrentBSSSesIdx = 0;
14887 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014888
14889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14890
14891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 -------------------------------------------------------------------------*/
14894 if (( NULL == pEventData ) ||
14895 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14896 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14897 {
14898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014901 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 }
14903
14904 /*-----------------------------------------------------------------------
14905 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14910 &pSendBuffer, &usDataOffset, &usSendSize))||
14911 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14912 {
14913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014914 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14916 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014917 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 }
14919
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014920 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14921 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14922 &pBSSSes);
14923 if ( NULL == pBSSSes )
14924 {
c_hpothu86feba52014-10-28 15:51:18 +053014925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014926 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14927 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014928 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014929 }
14930
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14932 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014933
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14935 {
14936 // ARP Offload
14937 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14938 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14939 4);
14940 }
14941 else
14942 {
14943 // NS Offload
14944 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14945 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14946 16);
14947
14948#ifdef WLAN_NS_OFFLOAD
14949 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14950 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14951 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14952 16);
14953 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14954 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14955 16);
14956 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14957 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14958 16);
14959 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14960 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14961 16);
14962 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14963 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14964 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014965 nsOffloadParams.srcIPv6AddrValid =
14966 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14967
14968 nsOffloadParams.targetIPv6Addr1Valid =
14969 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14970
14971 nsOffloadParams.targetIPv6Addr2Valid =
14972 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14973
14974 nsOffloadParams.slotIndex =
14975 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976
Jeff Johnson295189b2012-06-20 16:38:30 -070014977#endif // WLAN_NS_OFFLOAD
14978 }
14979
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014980 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14981
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 // copy hostOffloadParams into pSendBuffer
14983 wpalMemoryCopy( pSendBuffer+usDataOffset,
14984 &hostOffloadParams,
14985 sizeof(hostOffloadParams));
14986
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014987 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014989 // copy nsOffloadParams into pSendBuffer
14990 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 &nsOffloadParams,
14992 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014993 }
14994 else
14995 {
14996#ifdef WLAN_NS_OFFLOAD
14997 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14998 {
14999 // copy nsOffloadParams into pSendBuffer
15000 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15001 &nsOffloadParams,
15002 sizeof(nsOffloadParams));
15003 }
15004#endif
15005 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015006
15007 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015009
15010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015011 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15014 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015015
15016fail:
15017 // Release the message buffer so we don't leak
15018 wpalMemoryFree(pSendBuffer);
15019
15020failRequest:
15021 //WDA should have failure check to avoid the memory leak
15022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015023}/*WDI_ProcessHostOffloadReq*/
15024
15025/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015028
15029 @param pWDICtx: pointer to the WLAN DAL context
15030 pEventData: pointer to the event information structure
15031
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 @see
15033 @return Result of the function call
15034*/
15035WDI_Status
15036WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015037(
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 WDI_ControlBlockType* pWDICtx,
15039 WDI_EventInfoType* pEventData
15040)
15041{
15042 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15043 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 wpt_uint16 usDataOffset = 0;
15046 wpt_uint16 usSendSize = 0;
15047 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015048 wpt_uint8 ucCurrentBSSSesIdx = 0;
15049 WDI_BSSSessionType* pBSSSes = NULL;
15050
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15052
15053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 -------------------------------------------------------------------------*/
15056 if (( NULL == pEventData ) ||
15057 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15058 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15059 {
15060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15061 "Invalid parameters in Keep Alive req");
15062 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015063 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 }
15065
15066 /*-----------------------------------------------------------------------
15067 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 sizeof(keepAliveReq),
15072 &pSendBuffer, &usDataOffset, &usSendSize))||
15073 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15074 {
15075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015076 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15078 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015079 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 }
15081
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015082 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15083 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15084 &pBSSSes);
15085 if ( NULL == pBSSSes )
15086 {
15087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015088 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015089 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015090 }
15091
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15093 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15094
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015095 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015096
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15098 {
15099 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15100 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15101 HAL_IPV4_ADDR_LEN);
15102 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15103 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015104 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015105 wpalMemoryCopy(keepAliveReq.destMacAddr,
15106 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15107 HAL_MAC_ADDR_LEN);
15108 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015109
15110 wpalMemoryCopy( pSendBuffer+usDataOffset,
15111 &keepAliveReq,
15112 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015113
15114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015115 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015116
15117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015118 "Process keep alive req time period %d",
15119 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120
15121 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015123
15124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15125 "Sending keep alive req to HAL");
15126
15127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15131 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015132
15133fail:
15134 // Release the message buffer so we don't leak
15135 wpalMemoryFree(pSendBuffer);
15136
15137failRequest:
15138 //WDA should have failure check to avoid the memory leak
15139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015140}/*WDI_ProcessKeepAliveReq*/
15141
15142
15143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015146
15147 @param pWDICtx: pointer to the WLAN DAL context
15148 pEventData: pointer to the event information structure
15149
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 @see
15151 @return Result of the function call
15152*/
15153WDI_Status
15154WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015155(
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 WDI_ControlBlockType* pWDICtx,
15157 WDI_EventInfoType* pEventData
15158)
15159{
15160 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15161 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 wpt_uint16 usDataOffset = 0;
15164 wpt_uint16 usSendSize = 0;
15165 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015166 wpt_uint8 ucCurrentBSSSesIdx = 0;
15167 WDI_BSSSessionType* pBSSSes = NULL;
15168
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15170
15171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 -------------------------------------------------------------------------*/
15174 if (( NULL == pEventData ) ||
15175 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15176 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15177 {
15178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015181 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 }
15183
15184 /*-----------------------------------------------------------------------
15185 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 sizeof(wowlAddBcPtrnReq),
15190 &pSendBuffer, &usDataOffset, &usSendSize))||
15191 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15192 {
15193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015194 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15196 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015197 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 }
15199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015200 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15201 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15202 &pBSSSes);
15203 if ( NULL == pBSSSes )
15204 {
15205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015206 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015207 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015208 }
15209
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15218
15219 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15220 {
15221 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15222 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15223 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15224 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15225 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15226 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15227 }
15228 else
15229 {
15230 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15231 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15232 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15233 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15234 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15235 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15236
15237 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15238 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15239 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15240 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15241 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15242 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15243 }
15244
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015245 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15246
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 wpalMemoryCopy( pSendBuffer+usDataOffset,
15248 &wowlAddBcPtrnReq,
15249 sizeof(wowlAddBcPtrnReq));
15250
15251 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015253
15254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15258 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015259fail:
15260 // Release the message buffer so we don't leak
15261 wpalMemoryFree(pSendBuffer);
15262
15263failRequest:
15264 //WDA should have failure check to avoid the memory leak
15265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015266}/*WDI_ProcessWowlAddBcPtrnReq*/
15267
15268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015271
15272 @param pWDICtx: pointer to the WLAN DAL context
15273 pEventData: pointer to the event information structure
15274
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 @see
15276 @return Result of the function call
15277*/
15278WDI_Status
15279WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015280(
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 WDI_ControlBlockType* pWDICtx,
15282 WDI_EventInfoType* pEventData
15283)
15284{
15285 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15286 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 wpt_uint16 usDataOffset = 0;
15289 wpt_uint16 usSendSize = 0;
15290 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015291 wpt_uint8 ucCurrentBSSSesIdx = 0;
15292 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15294
15295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 -------------------------------------------------------------------------*/
15298 if (( NULL == pEventData ) ||
15299 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15300 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15301 {
15302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015305 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 }
15307
15308 /*-----------------------------------------------------------------------
15309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 sizeof(wowlDelBcPtrnReq),
15314 &pSendBuffer, &usDataOffset, &usSendSize))||
15315 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15316 {
15317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015318 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15320 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015321 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 }
15323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015324 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15325 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15326 &pBSSSes);
15327 if ( NULL == pBSSSes )
15328 {
15329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015330 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015331 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015332 }
15333
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015336
15337 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15338
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 wpalMemoryCopy( pSendBuffer+usDataOffset,
15340 &wowlDelBcPtrnReq,
15341 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015342
15343 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345
15346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15350 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015351
15352fail:
15353 // Release the message buffer so we don't leak
15354 wpalMemoryFree(pSendBuffer);
15355
15356failRequest:
15357 //WDA should have failure check to avoid the memory leak
15358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015359}/*WDI_ProcessWowlDelBcPtrnReq*/
15360
15361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015364
15365 @param pWDICtx: pointer to the WLAN DAL context
15366 pEventData: pointer to the event information structure
15367
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 @see
15369 @return Result of the function call
15370*/
15371WDI_Status
15372WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015373(
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 WDI_ControlBlockType* pWDICtx,
15375 WDI_EventInfoType* pEventData
15376)
15377{
15378 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15379 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 wpt_uint16 usDataOffset = 0;
15382 wpt_uint16 usSendSize = 0;
15383 tHalWowlEnterParams wowlEnterReq;
15384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15385
15386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 -------------------------------------------------------------------------*/
15389 if (( NULL == pEventData ) ||
15390 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15391 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15392 {
15393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 }
15398
15399 /*-----------------------------------------------------------------------
15400 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015401 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 sizeof(wowlEnterReq),
15405 &pSendBuffer, &usDataOffset, &usSendSize))||
15406 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15407 {
15408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015409 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 }
15414
Kumar Anandaca924e2013-07-22 14:35:34 -070015415 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15416
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015425 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015427 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015428 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15433
15434#ifdef WLAN_WAKEUP_EVENTS
15435 wowlEnterReq.ucWoWEAPIDRequestEnable =
15436 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15437
15438 wowlEnterReq.ucWoWEAPOL4WayEnable =
15439 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15440
15441 wowlEnterReq.ucWowNetScanOffloadMatch =
15442 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15443
15444 wowlEnterReq.ucWowGTKRekeyError =
15445 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15446
15447 wowlEnterReq.ucWoWBSSConnLoss =
15448 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15449#endif // WLAN_WAKEUP_EVENTS
15450
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015451 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15452
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15454 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15455 sizeof(tSirMacAddr));
15456
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 wpalMemoryCopy( pSendBuffer+usDataOffset,
15458 &wowlEnterReq,
15459 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015460
15461 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015463
15464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15468 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015469}/*WDI_ProcessWowlEnterReq*/
15470
15471/**
15472 @brief Process Wowl exit Request function (called when Main FSM
15473 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015474
15475 @param pWDICtx: pointer to the WLAN DAL context
15476 pEventData: pointer to the event information structure
15477
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 @see
15479 @return Result of the function call
15480*/
15481WDI_Status
15482WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015483(
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 WDI_ControlBlockType* pWDICtx,
15485 WDI_EventInfoType* pEventData
15486)
15487{
15488 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015489 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 wpt_uint16 usDataOffset = 0;
15492 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015493 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15495
15496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 -------------------------------------------------------------------------*/
15499 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015500 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015501 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15502 {
15503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 }
15508
15509 /*-----------------------------------------------------------------------
15510 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015511 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015512 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015514 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015516 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 {
15518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015519 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 pEventData, wdiWowlExitCb);
15521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 }
15524
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015525 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15526
15527 wpalMemoryCopy( pSendBuffer+usDataOffset,
15528 &wowlExitparams,
15529 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15534 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015535}/*WDI_ProcessWowlExitReq*/
15536
15537/**
15538 @brief Process Configure Apps Cpu Wakeup State Request function
15539 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015540
15541 @param pWDICtx: pointer to the WLAN DAL context
15542 pEventData: pointer to the event information structure
15543
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 @see
15545 @return Result of the function call
15546*/
15547WDI_Status
15548WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015549(
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 WDI_ControlBlockType* pWDICtx,
15551 WDI_EventInfoType* pEventData
15552)
15553{
15554 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15555 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 wpt_uint16 usDataOffset = 0;
15558 wpt_uint16 usSendSize = 0;
15559 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15561
15562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 -------------------------------------------------------------------------*/
15565 if (( NULL == pEventData ) ||
15566 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15567 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15568 {
15569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 }
15574
15575 /*-----------------------------------------------------------------------
15576 Get message buffer
15577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 sizeof(halCfgAppsCpuWakeupStateReqParams),
15580 &pSendBuffer, &usDataOffset, &usSendSize))||
15581 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15582 {
15583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015584 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 }
15589
Jeff Johnsone7245742012-09-05 17:12:55 -070015590 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15592
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 wpalMemoryCopy( pSendBuffer+usDataOffset,
15594 &halCfgAppsCpuWakeupStateReqParams,
15595 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015596
15597 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599
15600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15604 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15605 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015606}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15607
15608#ifdef WLAN_FEATURE_VOWIFI_11R
15609/**
15610 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15611 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015612
15613 @param pWDICtx: pointer to the WLAN DAL context
15614 pEventData: pointer to the event information structure
15615
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 @see
15617 @return Result of the function call
15618*/
15619WDI_Status
15620WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015621(
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 WDI_ControlBlockType* pWDICtx,
15623 WDI_EventInfoType* pEventData
15624)
15625{
15626 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15627 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 wpt_uint16 usDataOffset = 0;
15632 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 wpt_macAddr macBSSID;
15635 tAggrAddTsReq halAggrAddTsReq;
15636 int i;
15637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15638
15639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 -------------------------------------------------------------------------*/
15642 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15643 ( NULL == pEventData->pCBfnc ))
15644 {
15645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 }
15650 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15651 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15652 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15653 /*-------------------------------------------------------------------------
15654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 -------------------------------------------------------------------------*/
15657 wpalMutexAcquire(&pWDICtx->wptMutex);
15658
15659 /*------------------------------------------------------------------------
15660 Find the BSS for which the request is made and identify WDI session
15661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15663 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 &macBSSID))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015667 "This station does not exist in the WDI Station Table %d",
15668 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15674 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15677 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15678 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015683
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 /*------------------------------------------------------------------------
15685 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 ------------------------------------------------------------------------*/
15688 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15689 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15691 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15692 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015693
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015696 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 }
15698
15699 wpalMutexRelease(&pWDICtx->wptMutex);
15700 /*-----------------------------------------------------------------------
15701 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 sizeof(tAggrAddTsParams),
15706 &pSendBuffer, &usDataOffset, &usSendSize))||
15707 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15708 {
15709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015710 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 }
15715
Jeff Johnsone7245742012-09-05 17:12:55 -070015716 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15720
15721 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15722 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15729 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15732 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15735 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15738 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15741 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015743 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15744 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15747 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15750 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015755
15756
15757 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015777 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15787 }
15788
Jeff Johnsone7245742012-09-05 17:12:55 -070015789 wpalMemoryCopy( pSendBuffer+usDataOffset,
15790 &halAggrAddTsReq,
15791 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015792
15793 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795
15796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015802}/*WDI_ProcessAggrAddTSpecReq*/
15803#endif /* WLAN_FEATURE_VOWIFI_11R */
15804
15805/**
15806 @brief Process Shutdown Request function (called when Main FSM
15807 allows it)
15808
15809 @param pWDICtx: pointer to the WLAN DAL context
15810 pEventData: pointer to the event information structure
15811
15812 @see
15813 @return Result of the function call
15814*/
15815WDI_Status
15816WDI_ProcessShutdownReq
15817(
15818 WDI_ControlBlockType* pWDICtx,
15819 WDI_EventInfoType* pEventData
15820 )
15821{
15822 wpt_status wptStatus;
15823
15824
15825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15826
15827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 -------------------------------------------------------------------------*/
15830 if ( NULL == pEventData )
15831 {
15832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 WDI_ASSERT(0);
15835 return WDI_STATUS_E_FAILURE;
15836 }
15837
15838 wpalMutexAcquire(&pWDICtx->wptMutex);
15839
15840
15841 gWDIInitialized = eWLAN_PAL_FALSE;
15842 /*! TO DO: stop the data services */
15843 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15844 {
15845 /*Stop the STA Table !UT- check this logic again
15846 It is safer to do it here than on the response - because a stop is imminent*/
15847 WDI_STATableStop(pWDICtx);
15848
15849 /* Stop Transport Driver, DXE */
15850 WDTS_Stop(pWDICtx);
15851 }
15852
15853 /*Clear all pending request*/
15854 WDI_ClearPendingRequests(pWDICtx);
15855 /* Close Data transport*/
15856 /* FTM mode does not open Data Path */
15857 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15858 {
15859 WDTS_Close(pWDICtx);
15860 }
15861 /*Close the STA Table !UT- check this logic again*/
15862 WDI_STATableClose(pWDICtx);
15863 /*close the PAL */
15864 wptStatus = wpalClose(pWDICtx->pPALContext);
15865 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15866 {
15867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15868 "Failed to wpal Close %d", wptStatus);
15869 WDI_ASSERT(0);
15870 }
15871
15872 /*Transition back to init state*/
15873 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15874
15875 wpalMutexRelease(&pWDICtx->wptMutex);
15876
15877 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015879
15880
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015882}/*WDI_ProcessShutdownReq*/
15883
15884/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015886========================================================================*/
15887
15888/**
15889 @brief Process Start Response function (called when a response
15890 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015891
15892 @param pWDICtx: pointer to the WLAN DAL context
15893 pEventData: pointer to the event information structure
15894
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 @see
15896 @return Result of the function call
15897*/
15898WDI_Status
15899WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015900(
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 WDI_ControlBlockType* pWDICtx,
15902 WDI_EventInfoType* pEventData
15903)
15904{
15905 WDI_StartRspParamsType wdiRspParams;
15906 WDI_StartRspCb wdiStartRspCb = NULL;
15907
15908 tHalMacStartRspParams* startRspParams;
15909
15910#ifndef HAL_SELF_STA_PER_BSS
15911 WDI_AddStaParams wdiAddSTAParam = {0};
15912#endif
15913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15914
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 -------------------------------------------------------------------------*/
15919 if (( NULL == pEventData ) ||
15920 ( NULL == pEventData->pEventData) ||
15921 ( NULL == wdiStartRspCb ))
15922 {
15923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 }
15928
15929 /*-------------------------------------------------------------------------
15930 Extract response and send it to UMAC
15931 -------------------------------------------------------------------------*/
15932 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15933 {
15934 // not enough data was received
15935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015936 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 }
15941
15942 /*-------------------------------------------------------------------------
15943 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 -------------------------------------------------------------------------*/
15946 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15947
15948 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15949 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15950 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15951 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15952 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15953 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15954 wdiRspParams.wlanReportedVersion.major =
15955 startRspParams->wcnssWlanVersion.major;
15956 wdiRspParams.wlanReportedVersion.minor =
15957 startRspParams->wcnssWlanVersion.minor;
15958 wdiRspParams.wlanReportedVersion.version =
15959 startRspParams->wcnssWlanVersion.version;
15960 wdiRspParams.wlanReportedVersion.revision =
15961 startRspParams->wcnssWlanVersion.revision;
15962 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15963 startRspParams->wcnssCrmVersionString,
15964 sizeof(wdiRspParams.wcnssSoftwareVersion));
15965 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15966 startRspParams->wcnssWlanVersionString,
15967 sizeof(wdiRspParams.wcnssHardwareVersion));
15968 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15969
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015970 /*Save the HAL Version*/
15971 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15972
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 wpalMutexAcquire(&pWDICtx->wptMutex);
15974 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15975 {
15976 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15977
15978 /*Cache the start response for further use*/
15979 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 sizeof(pWDICtx->wdiCachedStartRspParams));
15982
15983 }
15984 else
15985 {
15986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15987 "Failed to start device with status %s(%d)",
15988 WDI_getHALStatusMsgString(startRspParams->status),
15989 startRspParams->status);
15990
15991 /*Set the expected state transition to stopped - because the start has
15992 failed*/
15993 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15994
15995 wpalMutexRelease(&pWDICtx->wptMutex);
15996
15997 /*Notify UMAC*/
15998 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015999
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016001 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016002
16003 /*Although the response is an error - it was processed by our function
16004 so as far as the caller is concerned this is a succesful reponse processing*/
16005 return WDI_STATUS_SUCCESS;
16006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016007
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 wpalMutexRelease(&pWDICtx->wptMutex);
16009
16010 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16011 {
16012 /* FTM mode does not need to execute below */
16013 /* Notify UMAC */
16014 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16015 return WDI_STATUS_SUCCESS;
16016 }
16017
16018 /* START the Data transport */
16019 WDTS_startTransport(pWDICtx);
16020
16021 /*Start the STA Table !- check this logic again*/
16022 WDI_STATableStart(pWDICtx);
16023
16024#ifndef HAL_SELF_STA_PER_BSS
16025 /* Store the Self STA Index */
16026 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16027
16028 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16029 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16030 WDI_MAC_ADDR_LEN);
16031
16032 /* At this point add the self-STA */
16033
16034 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16035 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16036 /*! TO DO: wdiAddSTAParam.dpuSig */
16037 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16038 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16039 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16040
16041 //all DPU indices are the same for self STA
16042 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16043 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016044 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16046 WDI_MAC_ADDR_LEN);
16047 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16048 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16049
16050 /* Note: Since we don't get an explicit config STA request for self STA, we
16051 add the self STA upon receiving the Start response message. But the
16052 self STA entry in the table is deleted when WDI gets an explicit delete STA
16053 request */
16054 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16055#endif
16056
16057 /*Notify UMAC*/
16058 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16059
Jeff Johnsone7245742012-09-05 17:12:55 -070016060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016061}/*WDI_ProcessStartRsp*/
16062
16063
16064/**
16065 @brief Process Stop Response function (called when a response
16066 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016067
16068 @param pWDICtx: pointer to the WLAN DAL context
16069 pEventData: pointer to the event information structure
16070
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 @see
16072 @return Result of the function call
16073*/
16074WDI_Status
16075WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016076(
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 WDI_ControlBlockType* pWDICtx,
16078 WDI_EventInfoType* pEventData
16079)
16080{
16081 WDI_Status wdiStatus;
16082 WDI_StopRspCb wdiStopRspCb = NULL;
16083
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16086
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 -------------------------------------------------------------------------*/
16091 if (( NULL == pEventData ) ||
16092 ( NULL == pEventData->pEventData) ||
16093 ( NULL == wdiStopRspCb ))
16094 {
16095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 }
16100
16101 /*-------------------------------------------------------------------------
16102 Extract response and send it to UMAC
16103 -------------------------------------------------------------------------*/
16104 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16105 {
16106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016107 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 pEventData->uEventDataSize);
16109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 }
16112
16113 /*-------------------------------------------------------------------------
16114 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16118 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 sizeof(halMacStopRspMsg.stopRspParams));
16120
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122
16123 wpalMutexAcquire(&pWDICtx->wptMutex);
16124
16125 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 --------------------------------------------------------------------------*/
16128 if ( WDI_STATUS_SUCCESS != wdiStatus )
16129 {
16130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16131 "Failed to stop the device with status %s (%d)",
16132 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16133 halMacStopRspMsg.stopRspParams.status);
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016136 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016137
Jeff Johnson295189b2012-06-20 16:38:30 -070016138 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016141
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16143
16144 /*Transition now as WDI may get preempted imediately after it sends
16145 up the Stop Response and it will not get to process the state transition
16146 from Main Rsp function*/
16147 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16148 wpalMutexRelease(&pWDICtx->wptMutex);
16149
16150 /*! TO DO: - STOP the Data transport */
16151
16152 /*Notify UMAC*/
16153 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156}/*WDI_ProcessStopRsp*/
16157
16158/**
16159 @brief Process Close Rsp function (called when a response
16160 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016161
16162 @param pWDICtx: pointer to the WLAN DAL context
16163 pEventData: pointer to the event information structure
16164
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 @see
16166 @return Result of the function call
16167*/
16168WDI_Status
16169WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016170(
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 WDI_ControlBlockType* pWDICtx,
16172 WDI_EventInfoType* pEventData
16173)
16174{
16175 /*There is no close response comming from HAL - function just kept for
16176 simmetry */
16177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016179}/*WDI_ProcessCloseRsp*/
16180
16181
16182/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016184============================================================================*/
16185
16186/**
16187 @brief Process Init Scan Rsp function (called when a response
16188 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016189
16190 @param pWDICtx: pointer to the WLAN DAL context
16191 pEventData: pointer to the event information structure
16192
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 @see
16194 @return Result of the function call
16195*/
16196WDI_Status
16197WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016198(
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 WDI_ControlBlockType* pWDICtx,
16200 WDI_EventInfoType* pEventData
16201)
16202{
16203 WDI_Status wdiStatus;
16204 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016206 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16208
16209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 -------------------------------------------------------------------------*/
16212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16213 ( NULL == pEventData->pEventData))
16214 {
16215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 }
16220
16221 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16222 if( NULL == wdiInitScanRspCb)
16223 {
16224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016225 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 }
16229
16230 /*-------------------------------------------------------------------------
16231 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16235 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 sizeof(halInitScanRspMsg.initScanRspParams));
16237
Jeff Johnsone7245742012-09-05 17:12:55 -070016238 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016239
16240 if ( pWDICtx->bInBmps )
16241 {
16242 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016243 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16244 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016246 "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 -080016247 WDI_ASSERT(0);
16248 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 }
16250
16251 /*Notify UMAC*/
16252 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16253
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016255}/*WDI_ProcessInitScanRsp*/
16256
16257
16258/**
16259 @brief Process Start Scan Rsp function (called when a response
16260 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016261
16262 @param pWDICtx: pointer to the WLAN DAL context
16263 pEventData: pointer to the event information structure
16264
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 @see
16266 @return Result of the function call
16267*/
16268WDI_Status
16269WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016270(
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 WDI_ControlBlockType* pWDICtx,
16272 WDI_EventInfoType* pEventData
16273)
16274{
16275 WDI_StartScanRspParamsType wdiStartScanParams;
16276 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016277
16278 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16280
16281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 -------------------------------------------------------------------------*/
16284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16285 ( NULL == pEventData->pEventData))
16286 {
16287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292
16293 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16294 if( NULL == wdiStartScanRspCb)
16295 {
16296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016297 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 }
16301
16302 /*-------------------------------------------------------------------------
16303 Extract response and send it to UMAC
16304 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16306 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 sizeof(halStartScanRspMsg.startScanRspParams));
16308
16309 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16310 halStartScanRspMsg.startScanRspParams.status);
16311#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 halStartScanRspMsg.startScanRspParams.startTSF,
16316 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016317#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016318
16319 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16320 {
16321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16322 "Start scan failed with status %s (%d)",
16323 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16324 halStartScanRspMsg.startScanRspParams.status);
16325 /* send the status to UMAC, don't return from here*/
16326 }
16327
16328 /*Notify UMAC*/
16329 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16330
Jeff Johnsone7245742012-09-05 17:12:55 -070016331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016332
16333}/*WDI_ProcessStartScanRsp*/
16334
16335
16336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016339
16340 @param pWDICtx: pointer to the WLAN DAL context
16341 pEventData: pointer to the event information structure
16342
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 @see
16344 @return Result of the function call
16345*/
16346WDI_Status
16347WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016348(
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 WDI_ControlBlockType* pWDICtx,
16350 WDI_EventInfoType* pEventData
16351)
16352{
16353 WDI_Status wdiStatus;
16354 tHalEndScanRspMsg halEndScanRspMsg;
16355 WDI_EndScanRspCb wdiEndScanRspCb;
16356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16357
16358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016360 -------------------------------------------------------------------------*/
16361 if (( NULL == pWDICtx ) || ( 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 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16371
16372 /*-------------------------------------------------------------------------
16373 Extract response and send it to UMAC
16374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16376 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 sizeof(halEndScanRspMsg.endScanRspParams));
16378
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016380
16381 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16382 {
16383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16384 "End Scan failed with status %s (%d )",
16385 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16386 halEndScanRspMsg.endScanRspParams.status);
16387 /* send the status to UMAC, don't return from here*/
16388 }
16389
16390 /*Notify UMAC*/
16391 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16392
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394}/*WDI_ProcessEndScanRsp*/
16395
16396
16397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016398 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016400
16401 @param pWDICtx: pointer to the WLAN DAL context
16402 pEventData: pointer to the event information structure
16403
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 @see
16405 @return Result of the function call
16406*/
16407WDI_Status
16408WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016409(
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 WDI_ControlBlockType* pWDICtx,
16411 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016412)
Jeff Johnson295189b2012-06-20 16:38:30 -070016413{
16414 WDI_Status wdiStatus;
16415 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016416
16417 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16419
16420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 -------------------------------------------------------------------------*/
16423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16424 ( NULL == pEventData->pEventData))
16425 {
16426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 }
16431
16432 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16433
16434 /*-------------------------------------------------------------------------
16435 Extract response and send it to UMAC
16436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16438 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16440
Jeff Johnsone7245742012-09-05 17:12:55 -070016441 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016442
16443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 halFinishScanRspMsg.finishScanRspParams.status);
16446
16447 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16448 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16449 {
16450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16451 "Finish Scan failed with status %s (%d)",
16452 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16453 halFinishScanRspMsg.finishScanRspParams.status);
16454 /* send the status to UMAC, don't return from here*/
16455 }
16456
16457 /*Notify UMAC*/
16458 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16459
Jeff Johnsone7245742012-09-05 17:12:55 -070016460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016461}/*WDI_ProcessFinishScanRsp*/
16462
16463/**
16464 @brief Process Join Response function (called when a response
16465 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016466
16467 @param pWDICtx: pointer to the WLAN DAL context
16468 pEventData: pointer to the event information structure
16469
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 @see
16471 @return Result of the function call
16472*/
16473WDI_Status
16474WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016475(
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 WDI_ControlBlockType* pWDICtx,
16477 WDI_EventInfoType* pEventData
16478)
16479{
16480 WDI_Status wdiStatus;
16481 WDI_JoinRspCb wdiJoinRspCb;
16482 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016483
16484 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16486
16487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016489 -------------------------------------------------------------------------*/
16490 if (( NULL == pWDICtx ) ||
16491 ( NULL == pWDICtx->pfncRspCB ) ||
16492 ( NULL == pEventData ) ||
16493 ( NULL == pEventData->pEventData))
16494 {
16495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 }
16500
16501 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16502
16503 /*-------------------------------------------------------------------------
16504 Extract response and send it to UMAC
16505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16507 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 sizeof(halJoinRspMsg.joinRspParams));
16509
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016511
16512 wpalMutexAcquire(&pWDICtx->wptMutex);
16513
16514 /*-----------------------------------------------------------------------
16515 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016516 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16520 {
16521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16523 "association no longer in progress %d - mysterious HAL response",
16524 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 }
16530
16531 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16532
16533 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 -----------------------------------------------------------------------*/
16536 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16537 {
16538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16539 "Join only allowed in Joining state - failure state is %d "
16540 "strange HAL response", pBSSSes->wdiAssocState);
16541
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 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 }
16547
16548
16549 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 -----------------------------------------------------------------------*/
16552 if ( WDI_STATUS_SUCCESS != wdiStatus )
16553 {
16554 /*Association was failed by HAL - remove session*/
16555 WDI_DeleteSession(pWDICtx, pBSSSes);
16556
16557 /*Association no longer in progress */
16558 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16559
16560 /*Association no longer in progress - prepare pending assoc for processing*/
16561 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016562
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 }
16564 else
16565 {
16566 /*Transition to state Joining - this may be redundant as we are supposed
16567 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 }
16570
16571 wpalMutexRelease(&pWDICtx->wptMutex);
16572
16573 /*Notify UMAC*/
16574 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16575
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577}/*WDI_ProcessJoinRsp*/
16578
16579
16580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016583
16584 @param pWDICtx: pointer to the WLAN DAL context
16585 pEventData: pointer to the event information structure
16586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 @see
16588 @return Result of the function call
16589*/
16590WDI_Status
16591WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016592(
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 WDI_ControlBlockType* pWDICtx,
16594 WDI_EventInfoType* pEventData
16595)
16596{
16597 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16598 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016599 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_BSSSessionType* pBSSSes = NULL;
16601
Jeff Johnsone7245742012-09-05 17:12:55 -070016602 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016603 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16604 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016605
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16607
16608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 -------------------------------------------------------------------------*/
16611 if (( NULL == pEventData ) ||
16612 ( NULL == pEventData->pEventData))
16613 {
16614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 }
16619
16620 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16621
16622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016625 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16626 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 sizeof(halConfigBssRspMsg.configBssRspParams));
16628
16629 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16630 halConfigBssRspMsg.configBssRspParams.status);
16631 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16632 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16635 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016636
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016638
16639 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016641
16642 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016644
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016646
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016648 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16650 #endif
16651 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16652 halConfigBssRspMsg.configBssRspParams.staMac,
16653 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016654
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 wpalMutexAcquire(&pWDICtx->wptMutex);
16656 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016659 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16660 wdiConfigBSSParams.macBSSID,
16661 &pBSSSes);
16662
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 /*-----------------------------------------------------------------------
16664 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 -----------------------------------------------------------------------*/
16667 if ( NULL == pBSSSes )
16668 {
16669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16670 "Association sequence for this BSS does not yet exist "
16671 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016672
16673 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16674
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016678
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 /*Save data for this BSS*/
16680 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16681 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016686 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16692 pBSSSes->bcastStaIdx =
16693 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016694
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016696
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 /*-------------------------------------------------------------------------
16698 Add Peer STA
16699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16702 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016703
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016705 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016706 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 wdiAddSTAParam.ucHTCapable =
16708 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16709 wdiAddSTAParam.ucStaType =
16710 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16711
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16714 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016716
16717 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16718 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16719 WDI_MAC_ADDR_LEN);
16720
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016722 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016734
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16736 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016737
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16739 /*-------------------------------------------------------------------------
16740 Add Broadcast STA only in AP mode
16741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016743 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 {
16745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16746 "Add BCAST STA to table for index: %d",
16747 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016748
16749 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016751
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16753 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16754 }
16755 wpalMutexRelease(&pWDICtx->wptMutex);
16756 }
16757 else
16758 {
16759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16760 "Config BSS RSP failed with status : %s(%d)",
16761 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 halConfigBssRspMsg.configBssRspParams.status);
16764
Jeff Johnsone7245742012-09-05 17:12:55 -070016765
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 /*Association was failed by HAL - remove session*/
16767 WDI_DeleteSession(pWDICtx, pBSSSes);
16768
16769 /*Association no longer in progress */
16770 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16771
16772 /*Association no longer in progress - prepare pending assoc for processing*/
16773 WDI_DequeueAssocRequest(pWDICtx);
16774
16775 }
16776
16777 /*Notify UMAC*/
16778 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16779
Jeff Johnsone7245742012-09-05 17:12:55 -070016780 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016781}/*WDI_ProcessConfigBSSRsp*/
16782
16783
16784/**
16785 @brief Process Del BSS Response function (called when a response
16786 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016787
16788 @param pWDICtx: pointer to the WLAN DAL context
16789 pEventData: pointer to the event information structure
16790
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 @see
16792 @return Result of the function call
16793*/
16794WDI_Status
16795WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016796(
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 WDI_ControlBlockType* pWDICtx,
16798 WDI_EventInfoType* pEventData
16799)
16800{
16801 WDI_DelBSSRspParamsType wdiDelBSSParams;
16802 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 WDI_BSSSessionType* pBSSSes = NULL;
16805
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16808
16809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 -------------------------------------------------------------------------*/
16812 if (( NULL == pEventData ) ||
16813 ( NULL == pEventData->pEventData))
16814 {
16815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 }
16820
16821 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16822
16823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016824 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16827 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 sizeof(halDelBssRspMsg.deleteBssRspParams));
16829
16830
16831 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833
16834 wpalMutexAcquire(&pWDICtx->wptMutex);
16835
16836 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16840 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16841 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016842
16843 /*-----------------------------------------------------------------------
16844 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 -----------------------------------------------------------------------*/
16847 if ( NULL == pBSSSes )
16848 {
16849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16850 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016851 "association no longer in progress - mysterious HAL response");
16852
16853 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16854
16855 wpalMutexRelease(&pWDICtx->wptMutex);
16856 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016858
16859 /*Extract BSSID for the response to UMAC*/
16860 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16861 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16862
16863 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16864
16865 /*-----------------------------------------------------------------------
16866 The current session will be deleted
16867 -----------------------------------------------------------------------*/
16868 WDI_DeleteSession(pWDICtx, pBSSSes);
16869
16870
16871 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016872 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16873 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016875 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016876 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016877
16878 /* Delete the STA's in this BSS */
16879 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16880
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 wpalMutexRelease(&pWDICtx->wptMutex);
16882
16883 /*Notify UMAC*/
16884 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16885
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887}/*WDI_ProcessDelBSSRsp*/
16888
16889/**
16890 @brief Process Post Assoc Rsp function (called when a response
16891 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016892
16893 @param pWDICtx: pointer to the WLAN DAL context
16894 pEventData: pointer to the event information structure
16895
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 @see
16897 @return Result of the function call
16898*/
16899WDI_Status
16900WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016901(
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 WDI_ControlBlockType* pWDICtx,
16903 WDI_EventInfoType* pEventData
16904)
16905{
16906 WDI_PostAssocRspParamsType wdiPostAssocParams;
16907 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16912
16913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 -------------------------------------------------------------------------*/
16916 if (( NULL == pEventData ) ||
16917 ( NULL == pEventData->pEventData))
16918 {
16919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 }
16924
16925 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16926
16927 /*-------------------------------------------------------------------------
16928 Extract response and send it to UMAC
16929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16931 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 sizeof(halPostAssocRspMsg.postAssocRspParams));
16933
16934 /*Extract the Post Assoc STA Params */
16935
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16942
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 wdiPostAssocParams.wdiStatus =
16944 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016945
16946 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16947 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16949 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 WDI_MAC_ADDR_LEN);
16951
16952 /* Extract Post Assoc BSS Params */
16953
Jeff Johnsone7245742012-09-05 17:12:55 -070016954 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16955 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16956 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016957
16958 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16959 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016960 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16962 .macSTA, WDI_MAC_ADDR_LEN);
16963
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16966
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16969
16970 wdiPostAssocParams.bssParams.ucBSSIdx =
16971 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16972
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16975
16976 wpalMutexAcquire(&pWDICtx->wptMutex);
16977
16978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016982 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016983 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016984
16985 /*-----------------------------------------------------------------------
16986 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 -----------------------------------------------------------------------*/
16989 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16992 {
16993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16994 "Association sequence for this BSS does not yet exist or "
16995 "association no longer in progress - mysterious HAL response");
16996
Jeff Johnsone7245742012-09-05 17:12:55 -070016997 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16998
Jeff Johnson295189b2012-06-20 16:38:30 -070016999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017001 }
17002
17003 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017004 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 -----------------------------------------------------------------------*/
17006 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17007 {
17008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17009 "Post Assoc not allowed before JOIN - failing request "
17010 "strange HAL response");
17011
Jeff Johnsone7245742012-09-05 17:12:55 -070017012 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17013
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 }
17017
17018 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 -----------------------------------------------------------------------*/
17021 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17022 {
17023 /*Association was failed by HAL - remove session*/
17024 WDI_DeleteSession(pWDICtx, pBSSSes);
17025 }
17026 else
17027 {
17028 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017030
17031 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017032 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017038 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017039 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17040
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17043 }
17044
17045 /*Association no longer in progress */
17046 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17047
17048 /*Association no longer in progress - prepare pending assoc for processing*/
17049 WDI_DequeueAssocRequest(pWDICtx);
17050
17051 wpalMutexRelease(&pWDICtx->wptMutex);
17052
17053 /*Notify UMAC*/
17054 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17055
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017057}/*WDI_ProcessPostAssocRsp*/
17058
17059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017062
17063 @param pWDICtx: pointer to the WLAN DAL context
17064 pEventData: pointer to the event information structure
17065
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 @see
17067 @return Result of the function call
17068*/
17069WDI_Status
17070WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017071(
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 WDI_ControlBlockType* pWDICtx,
17073 WDI_EventInfoType* pEventData
17074)
17075{
17076 WDI_DelSTARspParamsType wdiDelSTARsp;
17077 WDI_DelSTARspCb wdiDelSTARspCb;
17078 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17081
17082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 -------------------------------------------------------------------------*/
17085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17086 ( NULL == pEventData->pEventData))
17087 {
17088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 }
17093
17094 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17095
17096 /*-------------------------------------------------------------------------
17097 Extract response and send it to UMAC
17098 -------------------------------------------------------------------------*/
17099 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 sizeof(halDelStaRspMsg.delStaRspParams));
17102
17103 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 wdiDelSTARsp.wdiStatus =
17105 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017106
17107 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17108
17109 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17110 if(staType == WDI_STA_ENTRY_SELF)
17111 {
17112 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17113
17114 /* At this point add the self-STA */
17115
17116 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17117 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17118 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17119
17120#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17121#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17122
17123 //all DPU indices are the same for self STA
17124 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17125 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17126 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17127 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17128 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17129 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017130
17131 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 }
17133 else
17134 {
17135 //Delete the station in the table
17136 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17137 }
17138
17139 /*Notify UMAC*/
17140 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17141
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017143}/*WDI_ProcessDelSTARsp*/
17144
17145
17146/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017148==========================================================================*/
17149
17150/**
17151 @brief Process Set BSS Key Rsp function (called when a response
17152 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017153
17154 @param pWDICtx: pointer to the WLAN DAL context
17155 pEventData: pointer to the event information structure
17156
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 @see
17158 @return Result of the function call
17159*/
17160WDI_Status
17161WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017162(
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 WDI_ControlBlockType* pWDICtx,
17164 WDI_EventInfoType* pEventData
17165)
17166{
17167 WDI_Status wdiStatus;
17168 eHalStatus halStatus;
17169 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17171
17172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 -------------------------------------------------------------------------*/
17175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17176 ( NULL == pEventData->pEventData))
17177 {
17178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 }
17183
17184 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17185
17186 /*-------------------------------------------------------------------------
17187 Extract response and send it to UMAC
17188 -------------------------------------------------------------------------*/
17189 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017191
17192 if ( eHAL_STATUS_SUCCESS != halStatus )
17193 {
17194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17195 "Set BSS Key failed with status %s (%d)",
17196 WDI_getHALStatusMsgString(halStatus),
17197 halStatus);
17198 /* send the status to UMAC, don't return from here*/
17199 }
17200
17201 /*Notify UMAC*/
17202 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17203
Jeff Johnsone7245742012-09-05 17:12:55 -070017204 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017205}/*WDI_ProcessSetBssKeyRsp*/
17206
17207/**
17208 @brief Process Remove BSS Key Rsp function (called when a response
17209 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017210
17211 @param pWDICtx: pointer to the WLAN DAL context
17212 pEventData: pointer to the event information structure
17213
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 @see
17215 @return Result of the function call
17216*/
17217WDI_Status
17218WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017219(
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 WDI_ControlBlockType* pWDICtx,
17221 WDI_EventInfoType* pEventData
17222)
17223{
17224 WDI_Status wdiStatus;
17225 eHalStatus halStatus;
17226 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17228
17229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 -------------------------------------------------------------------------*/
17232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17233 ( NULL == pEventData->pEventData))
17234 {
17235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 }
17240
17241 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17242
17243 /*-------------------------------------------------------------------------
17244 Extract response and send it to UMAC
17245 -------------------------------------------------------------------------*/
17246 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017248
17249 if ( eHAL_STATUS_SUCCESS != halStatus )
17250 {
17251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17252 "Remove BSS Key failed with status %s (%d )",
17253 WDI_getHALStatusMsgString(halStatus),
17254 halStatus);
17255 /* send the status to UMAC, don't return from here*/
17256 }
17257
17258 /*Notify UMAC*/
17259 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17260
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262}/*WDI_ProcessSetBssKeyRsp*/
17263
17264
17265/**
17266 @brief Process Set STA Key Rsp function (called when a response
17267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017268
17269 @param pWDICtx: pointer to the WLAN DAL context
17270 pEventData: pointer to the event information structure
17271
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 @see
17273 @return Result of the function call
17274*/
17275WDI_Status
17276WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017277(
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_ControlBlockType* pWDICtx,
17279 WDI_EventInfoType* pEventData
17280)
17281{
17282 WDI_Status wdiStatus;
17283 eHalStatus halStatus;
17284 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17286
17287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 -------------------------------------------------------------------------*/
17290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17291 ( NULL == pEventData->pEventData))
17292 {
17293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 }
17298
17299 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17300
17301 /*-------------------------------------------------------------------------
17302 Extract response and send it to UMAC
17303 -------------------------------------------------------------------------*/
17304 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017305 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017306
17307 if ( eHAL_STATUS_SUCCESS != halStatus )
17308 {
17309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17310 "Set STA Key failed with status %s (%d)",
17311 WDI_getHALStatusMsgString(halStatus),
17312 halStatus);
17313 /* send the status to UMAC, don't return from here*/
17314 }
17315
17316 /*Notify UMAC*/
17317 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17318
Jeff Johnsone7245742012-09-05 17:12:55 -070017319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017320}/*WDI_ProcessSetSTAKeyRsp*/
17321
17322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017325
17326 @param pWDICtx: pointer to the WLAN DAL context
17327 pEventData: pointer to the event information structure
17328
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 @see
17330 @return Result of the function call
17331*/
17332WDI_Status
17333WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017334(
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 WDI_ControlBlockType* pWDICtx,
17336 WDI_EventInfoType* pEventData
17337)
17338{
17339 WDI_Status wdiStatus;
17340 eHalStatus halStatus;
17341 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17343
17344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 -------------------------------------------------------------------------*/
17347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17348 ( NULL == pEventData->pEventData))
17349 {
17350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 }
17355
17356 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17357
17358 /*-------------------------------------------------------------------------
17359 Extract response and send it to UMAC
17360 -------------------------------------------------------------------------*/
17361 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017363
17364 if ( eHAL_STATUS_SUCCESS != halStatus )
17365 {
17366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17367 "Remove STA Key failed with status %s (%d)",
17368 WDI_getHALStatusMsgString(halStatus),
17369 halStatus);
17370 /* send the status to UMAC, don't return from here*/
17371 }
17372
17373 /*Notify UMAC*/
17374 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17375
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017377}/*WDI_ProcessRemoveStaKeyRsp*/
17378
17379/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017382
17383 @param pWDICtx: pointer to the WLAN DAL context
17384 pEventData: pointer to the event information structure
17385
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 @see
17387 @return Result of the function call
17388*/
17389WDI_Status
17390WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017391(
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 WDI_ControlBlockType* pWDICtx,
17393 WDI_EventInfoType* pEventData
17394)
17395{
17396 WDI_Status wdiStatus;
17397 eHalStatus halStatus;
17398 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17400
17401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 -------------------------------------------------------------------------*/
17404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17405 ( NULL == pEventData->pEventData))
17406 {
17407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 }
17412
17413 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17414
17415 /*-------------------------------------------------------------------------
17416 Extract response and send it to UMAC
17417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 wpalMemoryCopy( &halStatus,
17419 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 sizeof(halStatus));
17421
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017423
17424 if ( eHAL_STATUS_SUCCESS != halStatus )
17425 {
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17427 "Set STA Key failed with status %s (%d)",
17428 WDI_getHALStatusMsgString(halStatus),
17429 halStatus);
17430 /* send the status to UMAC, don't return from here*/
17431 }
17432
17433 /*Notify UMAC*/
17434 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17435
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437}/*WDI_ProcessSetSTABcastKeyRsp*/
17438
17439/**
17440 @brief Process Remove STA Bcast Key Rsp function (called when a
17441 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017442
17443 @param pWDICtx: pointer to the WLAN DAL context
17444 pEventData: pointer to the event information structure
17445
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 @see
17447 @return Result of the function call
17448*/
17449WDI_Status
17450WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017451(
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 WDI_ControlBlockType* pWDICtx,
17453 WDI_EventInfoType* pEventData
17454)
17455{
17456 WDI_Status wdiStatus;
17457 eHalStatus halStatus;
17458 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17460
17461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 -------------------------------------------------------------------------*/
17464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17465 ( NULL == pEventData->pEventData))
17466 {
17467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 }
17472
17473 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17474
17475 /*-------------------------------------------------------------------------
17476 Extract response and send it to UMAC
17477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 wpalMemoryCopy( &halStatus,
17479 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 sizeof(halStatus));
17481
Jeff Johnsone7245742012-09-05 17:12:55 -070017482 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017483
17484 if ( eHAL_STATUS_SUCCESS != halStatus )
17485 {
17486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17487 "Remove STA Key failed with status %s (%d)",
17488 WDI_getHALStatusMsgString(halStatus),
17489 halStatus);
17490 /* send the status to UMAC, don't return from here*/
17491 }
17492
17493 /*Notify UMAC*/
17494 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17495
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017497}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17498
17499
17500/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017501 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017502==========================================================================*/
17503
17504/**
17505 @brief Process Add TSpec Rsp function (called when a response
17506 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017507
17508 @param pWDICtx: pointer to the WLAN DAL context
17509 pEventData: pointer to the event information structure
17510
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 @see
17512 @return Result of the function call
17513*/
17514WDI_Status
17515WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017516(
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 WDI_ControlBlockType* pWDICtx,
17518 WDI_EventInfoType* pEventData
17519)
17520{
17521 WDI_Status wdiStatus;
17522 eHalStatus halStatus;
17523 WDI_AddTsRspCb wdiAddTsRspCb;
17524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17525
17526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 -------------------------------------------------------------------------*/
17529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17530 ( NULL == pEventData->pEventData))
17531 {
17532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 }
17537
17538 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17539
17540 /*-------------------------------------------------------------------------
17541 Extract response and send it to UMAC
17542 -------------------------------------------------------------------------*/
17543 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017545
17546 /*Notify UMAC*/
17547 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17548
Jeff Johnsone7245742012-09-05 17:12:55 -070017549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017550}/*WDI_ProcessAddTSpecRsp*/
17551
17552
Sunil Duttbd736ed2014-05-26 21:19:41 +053017553
17554#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17555
17556WDI_Status
17557WDI_ProcessLLStatsSetRsp
17558(
17559 WDI_ControlBlockType* pWDICtx,
17560 WDI_EventInfoType* pEventData
17561)
17562{
17563 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17564
17565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17566 "%s: Enter ", __func__);
17567 /*-------------------------------------------------------------------------
17568 Sanity check
17569 -------------------------------------------------------------------------*/
17570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17571 ( NULL == pEventData->pEventData))
17572 {
17573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17574 "%s: Invalid parameters", __func__);
17575 WDI_ASSERT(0);
17576 return WDI_STATUS_E_FAILURE;
17577 }
17578
17579 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17580
17581 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17582
17583 return WDI_STATUS_SUCCESS;
17584}
17585
17586WDI_Status
17587WDI_ProcessLLStatsGetRsp
17588(
17589 WDI_ControlBlockType* pWDICtx,
17590 WDI_EventInfoType* pEventData
17591)
17592{
17593 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17594
17595 /*-------------------------------------------------------------------------
17596 Sanity check
17597 -------------------------------------------------------------------------*/
17598 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17599 ( NULL == pEventData->pEventData))
17600 {
17601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17602 "%s: Invalid parameters", __func__);
17603 WDI_ASSERT(0);
17604 return WDI_STATUS_E_FAILURE;
17605 }
17606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17607 "%s: Enter ", __func__);
17608
17609 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17610
17611 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17612
17613 return WDI_STATUS_SUCCESS;
17614}
17615
17616WDI_Status
17617WDI_ProcessLLStatsClearRsp
17618(
17619 WDI_ControlBlockType* pWDICtx,
17620 WDI_EventInfoType* pEventData
17621)
17622{
17623 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17624
17625 /*-------------------------------------------------------------------------
17626 Sanity check
17627 -------------------------------------------------------------------------*/
17628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17629 ( NULL == pEventData->pEventData))
17630 {
17631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17632 "%s: Invalid parameters", __func__);
17633 WDI_ASSERT(0);
17634 return WDI_STATUS_E_FAILURE;
17635 }
17636
17637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17638 "%s: CLEAR RESPONSE CALL BACK", __func__);
17639 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17640
17641 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17642
17643 return WDI_STATUS_SUCCESS;
17644}
17645#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17646
Jeff Johnson295189b2012-06-20 16:38:30 -070017647/**
17648 @brief Process Del TSpec Rsp function (called when a response
17649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017650
17651 @param pWDICtx: pointer to the WLAN DAL context
17652 pEventData: pointer to the event information structure
17653
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 @see
17655 @return Result of the function call
17656*/
17657WDI_Status
17658WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017659(
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 WDI_ControlBlockType* pWDICtx,
17661 WDI_EventInfoType* pEventData
17662)
17663{
17664 WDI_Status wdiStatus;
17665 eHalStatus halStatus;
17666 WDI_DelTsRspCb wdiDelTsRspCb;
17667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17668
17669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 -------------------------------------------------------------------------*/
17672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17673 ( NULL == pEventData->pEventData))
17674 {
17675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 }
17680
17681 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17682
17683 /*-------------------------------------------------------------------------
17684 Extract response and send it to UMAC
17685 -------------------------------------------------------------------------*/
17686 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017688
17689 /*Notify UMAC*/
17690 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17691
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017693}/*WDI_ProcessDelTSpecRsp*/
17694
17695/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017698
17699 @param pWDICtx: pointer to the WLAN DAL context
17700 pEventData: pointer to the event information structure
17701
Jeff Johnson295189b2012-06-20 16:38:30 -070017702 @see
17703 @return Result of the function call
17704*/
17705WDI_Status
17706WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017707(
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 WDI_ControlBlockType* pWDICtx,
17709 WDI_EventInfoType* pEventData
17710)
17711{
17712 WDI_Status wdiStatus;
17713 eHalStatus halStatus;
17714 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17716
17717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017719 -------------------------------------------------------------------------*/
17720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17721 ( NULL == pEventData->pEventData))
17722 {
17723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 }
17728
17729 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17730
17731 /*-------------------------------------------------------------------------
17732 Extract response and send it to UMAC
17733 -------------------------------------------------------------------------*/
17734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017736
17737 /*Notify UMAC*/
17738 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17739
Jeff Johnsone7245742012-09-05 17:12:55 -070017740 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017741}/*WDI_ProcessUpdateEDCAParamsRsp*/
17742
17743
17744/**
17745 @brief Process Add BA Rsp function (called when a response
17746 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017747
17748 @param pWDICtx: pointer to the WLAN DAL context
17749 pEventData: pointer to the event information structure
17750
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 @see
17752 @return Result of the function call
17753*/
17754WDI_Status
17755WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017756(
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 WDI_ControlBlockType* pWDICtx,
17758 WDI_EventInfoType* pEventData
17759)
17760{
17761 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17762
17763 tAddBASessionRspParams halBASessionRsp;
17764 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17765
Jeff Johnsone7245742012-09-05 17:12:55 -070017766
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17768
17769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 -------------------------------------------------------------------------*/
17772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17773 ( NULL == pEventData->pEventData))
17774 {
17775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 }
17780
17781 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17782
17783 /*-------------------------------------------------------------------------
17784 Extract response and send it to UMAC
17785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 wpalMemoryCopy( &halBASessionRsp,
17787 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017788 sizeof(halBASessionRsp));
17789
17790 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17791
Jeff Johnson43971f52012-07-17 12:26:56 -070017792 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 {
17794 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17795 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17796 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17797 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17798 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17799 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17800 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17801 }
17802
17803 /*Notify UMAC*/
17804 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17805
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017807}/*WDI_ProcessAddSessionBARsp*/
17808
17809
17810/**
17811 @brief Process Del BA Rsp function (called when a response
17812 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017813
17814 @param pWDICtx: pointer to the WLAN DAL context
17815 pEventData: pointer to the event information structure
17816
Jeff Johnson295189b2012-06-20 16:38:30 -070017817 @see
17818 @return Result of the function call
17819*/
17820WDI_Status
17821WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017822(
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 WDI_ControlBlockType* pWDICtx,
17824 WDI_EventInfoType* pEventData
17825)
17826{
17827 WDI_Status wdiStatus;
17828 eHalStatus halStatus;
17829 WDI_DelBARspCb wdiDelBARspCb;
17830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17831
17832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 -------------------------------------------------------------------------*/
17835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17836 ( NULL == pEventData->pEventData))
17837 {
17838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 }
17843
17844 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17845
17846 /*-------------------------------------------------------------------------
17847 Extract response and send it to UMAC
17848 -------------------------------------------------------------------------*/
17849 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017851
17852 if ( eHAL_STATUS_SUCCESS == halStatus )
17853 {
17854 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17855 }
17856
17857 /*Notify UMAC*/
17858 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17859
Jeff Johnsone7245742012-09-05 17:12:55 -070017860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017861}/*WDI_ProcessDelBARsp*/
17862
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017863#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017864/**
17865 @brief Process TSM Stats Rsp function (called when a response
17866 is being received over the bus from HAL)
17867
17868 @param pWDICtx: pointer to the WLAN DAL context
17869 pEventData: pointer to the event information structure
17870
17871 @see
17872 @return Result of the function call
17873*/
17874WDI_Status
17875WDI_ProcessTsmStatsRsp
17876(
17877 WDI_ControlBlockType* pWDICtx,
17878 WDI_EventInfoType* pEventData
17879)
17880{
17881 WDI_TsmRspCb wdiTsmStatsRspCb;
17882 tTsmStatsRspMsg halTsmStatsRspMsg;
17883 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17885
17886 /*-------------------------------------------------------------------------
17887 Sanity check
17888 -------------------------------------------------------------------------*/
17889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17890 ( NULL == pEventData->pEventData))
17891 {
17892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ASSERT(0);
17895 return WDI_STATUS_E_FAILURE;
17896 }
17897
17898 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17899
17900 /*-------------------------------------------------------------------------
17901 Unpack HAL Response Message - the header was already extracted by the
17902 main Response Handling procedure
17903 -------------------------------------------------------------------------*/
17904 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17905 pEventData->pEventData,
17906 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17907
17908 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17909 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17910 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17911 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17912 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17913 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17914 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17915 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17916 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17917 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17918 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17919 halTsmStatsRspMsg.tsmStatsRspParams.status);
17920
17921 /*Notify UMAC*/
17922 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17923
17924 return WDI_STATUS_SUCCESS;
17925}/*WDI_ProcessTsmStatsRsp*/
17926
17927#endif
17928
17929
17930
17931/**
17932 @brief Process Flush AC Rsp function (called when a response
17933 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017934
17935 @param pWDICtx: pointer to the WLAN DAL context
17936 pEventData: pointer to the event information structure
17937
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 @see
17939 @return Result of the function call
17940*/
17941WDI_Status
17942WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017943(
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 WDI_ControlBlockType* pWDICtx,
17945 WDI_EventInfoType* pEventData
17946)
17947{
17948 WDI_Status wdiStatus;
17949 eHalStatus halStatus;
17950 WDI_FlushAcRspCb wdiFlushAcRspCb;
17951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17952
17953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 -------------------------------------------------------------------------*/
17956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17957 ( NULL == pEventData->pEventData))
17958 {
17959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017963 }
17964
17965 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17966
17967 /*-------------------------------------------------------------------------
17968 Extract response and send it to UMAC
17969 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 wpalMemoryCopy( &halStatus,
17971 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 sizeof(halStatus));
17973
Jeff Johnsone7245742012-09-05 17:12:55 -070017974 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017975
17976 /*Notify UMAC*/
17977 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17978
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017980}/*WDI_ProcessFlushAcRsp*/
17981
17982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017983 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017985
17986 @param pWDICtx: pointer to the WLAN DAL context
17987 pEventData: pointer to the event information structure
17988
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 @see
17990 @return Result of the function call
17991*/
17992WDI_Status
17993WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017994(
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 WDI_ControlBlockType* pWDICtx,
17996 WDI_EventInfoType* pEventData
17997)
17998{
17999 WDI_Status wdiStatus;
18000 eHalStatus halStatus;
18001 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18003
18004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018006 -------------------------------------------------------------------------*/
18007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18008 ( NULL == pEventData->pEventData))
18009 {
18010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 }
18015
18016 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18017
18018 /*-------------------------------------------------------------------------
18019 Extract response and send it to UMAC
18020 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018021 wpalMemoryCopy( &halStatus,
18022 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018023 sizeof(halStatus));
18024
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018026
18027 /*Notify UMAC*/
18028 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18029
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018031}/*WDI_ProcessBtAmpEventRsp*/
18032
18033
18034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018035 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018037
18038 @param pWDICtx: pointer to the WLAN DAL context
18039 pEventData: pointer to the event information structure
18040
Jeff Johnson295189b2012-06-20 16:38:30 -070018041 @see
18042 @return Result of the function call
18043*/
18044WDI_Status
18045WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018046(
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 WDI_ControlBlockType* pWDICtx,
18048 WDI_EventInfoType* pEventData
18049)
18050{
18051 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18052 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18053 tAddStaSelfRspMsg halAddStaSelfRsp;
18054 WDI_AddStaParams wdiAddSTAParam = {0};
18055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18056
18057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018059 -------------------------------------------------------------------------*/
18060 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18061 ( NULL == pEventData->pEventData))
18062 {
18063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018067 }
18068
Jeff Johnsone7245742012-09-05 17:12:55 -070018069 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18071
18072 /*-------------------------------------------------------------------------
18073 Extract response and send it to UMAC
18074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18076 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18078
18079
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 wdiAddSTASelfParams.wdiStatus =
18081 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18089
18090 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18091 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18092 WDI_MAC_ADDR_LEN);
18093
18094
18095#ifdef HAL_SELF_STA_PER_BSS
18096
18097 /* At this point add the self-STA */
18098
18099 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18100 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18101 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18102
18103 //all DPU indices are the same for self STA
18104
18105 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18108 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18109 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18110 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18111 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18112
18113 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18114 WDI_MAC_ADDR_LEN);
18115
18116 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18117 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18118
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18121 {
18122 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18123 }
18124#endif
18125
18126 /*Notify UMAC*/
18127 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18128
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018130}/*WDI_ProcessAddSTASelfRsp*/
18131
18132
18133
18134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018135 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018137
18138 @param pWDICtx: pointer to the WLAN DAL context
18139 pEventData: pointer to the event information structure
18140
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 @see
18142 @return Result of the function call
18143*/
18144WDI_Status
18145WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018146(
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 WDI_ControlBlockType* pWDICtx,
18148 WDI_EventInfoType* pEventData
18149)
18150{
18151 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18152 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18153 tDelStaSelfRspParams delStaSelfRspParams;
18154 wpt_uint8 ucStaIdx;
18155
18156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18157
18158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 -------------------------------------------------------------------------*/
18161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18162 ( NULL == pEventData->pEventData))
18163 {
18164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 }
18169
18170 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18171
18172 /*-------------------------------------------------------------------------
18173 Extract response and send it to UMAC
18174 -------------------------------------------------------------------------*/
18175
Jeff Johnsone7245742012-09-05 17:12:55 -070018176 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 (wpt_uint8*)pEventData->pEventData,
18178 sizeof(tDelStaSelfRspParams));
18179
Jeff Johnsone7245742012-09-05 17:12:55 -070018180 wdiDelStaSelfRspParams.wdiStatus =
18181 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018182
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18185 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18186 {
18187 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 delStaSelfRspParams.selfMacAddr,
18190 &ucStaIdx);
18191 if(WDI_STATUS_E_FAILURE == wdiStatus)
18192 {
18193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018194 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 }
18198 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18199 }
18200
18201 /*Notify UMAC*/
18202 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18203
18204 return WDI_STATUS_SUCCESS;
18205}
18206
Jeff Johnsone7245742012-09-05 17:12:55 -070018207#ifdef FEATURE_OEM_DATA_SUPPORT
18208/**
18209 @brief Start Oem Data Rsp function (called when a
18210 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 @param pWDICtx: pointer to the WLAN DAL context
18213 pEventData: pointer to the event information structure
18214
18215 @see
18216 @return Result of the function call
18217*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018218
18219WDI_Status
18220WDI_ProcessStartOemDataRsp
18221(
18222 WDI_ControlBlockType* pWDICtx,
18223 WDI_EventInfoType* pEventData
18224)
18225{
18226 WDI_oemDataRspCb wdiOemDataRspCb;
18227 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18228 tStartOemDataRspParams* halStartOemDataRspParams;
18229
18230 /*-------------------------------------------------------------------------
18231 Sanity check
18232 -------------------------------------------------------------------------*/
18233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18234 ( NULL == pEventData->pEventData))
18235 {
18236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018237 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018238 WDI_ASSERT(0);
18239 return WDI_STATUS_E_FAILURE;
18240 }
18241
18242 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18243
18244 /*-------------------------------------------------------------------------
18245 Extract response and send it to UMAC
18246 -------------------------------------------------------------------------*/
18247 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18248
18249
18250 //It is the responsibility of the application code to check for failure
18251 //conditions!
18252
18253 //Allocate memory for WDI OEM DATA RSP structure
18254 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18255
18256 if(NULL == wdiOemDataRspParams)
18257 {
18258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018259 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 pWDICtx, pEventData, pEventData->pEventData);
18261 WDI_ASSERT(0);
18262 return WDI_STATUS_E_FAILURE;
18263 }
18264
18265 /* Populate WDI structure members */
18266 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18267
18268 /*Notify UMAC*/
18269 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18270
18271 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18272 wpalMemoryFree(wdiOemDataRspParams);
18273
18274 return WDI_STATUS_SUCCESS;
18275}/*WDI_PrcoessStartOemDataRsp*/
18276#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018277
18278/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018280===========================================================================*/
18281
18282/**
18283 @brief Process Channel Switch Rsp function (called when a response
18284 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018285
18286 @param pWDICtx: pointer to the WLAN DAL context
18287 pEventData: pointer to the event information structure
18288
Jeff Johnson295189b2012-06-20 16:38:30 -070018289 @see
18290 @return Result of the function call
18291*/
18292WDI_Status
18293WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018294(
Jeff Johnson295189b2012-06-20 16:38:30 -070018295 WDI_ControlBlockType* pWDICtx,
18296 WDI_EventInfoType* pEventData
18297)
18298{
18299 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18300 WDI_SwitchChRspCb wdiChSwitchRspCb;
18301 tSwitchChannelRspParams halSwitchChannelRsp;
18302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18303
18304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 -------------------------------------------------------------------------*/
18307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18308 ( NULL == pEventData->pEventData))
18309 {
18310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 }
18315
18316 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18317
18318 /*-------------------------------------------------------------------------
18319 Extract response and send it to UMAC
18320 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 (wpt_uint8*)pEventData->pEventData,
18323 sizeof(halSwitchChannelRsp));
18324
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 wdiSwitchChRsp.wdiStatus =
18326 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18328
18329#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018331#endif
18332
18333 /*Notify UMAC*/
18334 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18335
Jeff Johnsone7245742012-09-05 17:12:55 -070018336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018337}/*WDI_ProcessChannelSwitchRsp*/
18338
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018339/**
18340 @brief Process Channel Switch Rsp function (called when a response
18341 is being received over the bus from HAL against
18342 WDI_ProcessChannelSwitchReq_V1)
18343
18344 @param pWDICtx: pointer to the WLAN DAL context
18345 pEventData: pointer to the event information structure
18346
18347 @see
18348 @return Result of the function call
18349*/
18350
18351WDI_Status
18352WDI_ProcessChannelSwitchRsp_V1
18353(
18354 WDI_ControlBlockType* pWDICtx,
18355 WDI_EventInfoType* pEventData
18356)
18357{
18358 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18359 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18360 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18362
18363 /*-------------------------------------------------------------------------
18364 Sanity check
18365 -------------------------------------------------------------------------*/
18366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18367 ( NULL == pEventData->pEventData))
18368 {
18369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18370 "%s: Invalid parameters", __func__);
18371 WDI_ASSERT(0);
18372 return WDI_STATUS_E_FAILURE;
18373 }
18374
18375 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18376
18377 /*-------------------------------------------------------------------------
18378 Extract response and send it to UMAC
18379 -------------------------------------------------------------------------*/
18380 wpalMemoryCopy( &halSwitchChannelRsp,
18381 (wpt_uint8*)pEventData->pEventData,
18382 sizeof(halSwitchChannelRsp));
18383
18384 wdiSwitchChRsp.wdiStatus =
18385 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18386 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18387
18388#ifdef WLAN_FEATURE_VOWIFI
18389 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18390#endif
18391
18392 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18393 if (( NULL == wdiChSwitchRspCb ) )
18394 {
18395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18396 "%s: ### Call back function is null", __func__);
18397 WDI_ASSERT(0);
18398 return WDI_STATUS_E_FAILURE;
18399 }
18400 /*Notify UMAC*/
18401 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18402
18403 return WDI_STATUS_SUCCESS;
18404}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018405
18406/**
18407 @brief Process Config STA Rsp function (called when a response
18408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018409
18410 @param pWDICtx: pointer to the WLAN DAL context
18411 pEventData: pointer to the event information structure
18412
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 @see
18414 @return Result of the function call
18415*/
18416WDI_Status
18417WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018418(
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 WDI_ControlBlockType* pWDICtx,
18420 WDI_EventInfoType* pEventData
18421)
18422{
18423 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18424 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18425 WDI_AddStaParams wdiAddSTAParam;
18426
18427 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18432
18433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 -------------------------------------------------------------------------*/
18436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18437 ( NULL == pEventData->pEventData))
18438 {
18439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 }
18444
18445 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18446
18447 /*-------------------------------------------------------------------------
18448 Extract response and send it to UMAC
18449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18451 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 sizeof(halConfigStaRsp.configStaRspParams));
18453
18454
18455 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18456 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18457 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18458 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18459 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18460
18461 /* MAC Address of STA - take from cache as it does not come back in the
18462 response*/
18463 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018464 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018466
18467 wdiCfgSTAParams.wdiStatus =
18468 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018469
18470 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18471 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18472 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18473
18474 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18475 {
18476 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18477 {
18478 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18481 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018482
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018484 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018485 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018486 wdiAddSTAParam.ucHTCapable =
18487 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18488 wdiAddSTAParam.ucStaType =
18489 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018490 wdiAddSTAParam.ucRmfEnabled =
18491 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018492
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018497
18498 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18499 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18500 WDI_MAC_ADDR_LEN);
18501
18502 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18503 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18504 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018505
18506 if ( NULL == pBSSSes )
18507 {
18508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18509 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018510
Jeff Johnson295189b2012-06-20 16:38:30 -070018511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 }
18514
18515 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018516 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018522 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018525
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18527 }
18528 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18529 {
18530 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18531
Jeff Johnsone7245742012-09-05 17:12:55 -070018532 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018533 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 halConfigStaRsp.configStaRspParams.ucUcastSig;
18546 }
18547 }
18548
18549 /*Notify UMAC*/
18550 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18551
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018553}/*WDI_ProcessConfigStaRsp*/
18554
18555
18556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
18560 @param pWDICtx: pointer to the WLAN DAL context
18561 pEventData: pointer to the event information structure
18562
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 @see
18564 @return Result of the function call
18565*/
18566WDI_Status
18567WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018568(
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ControlBlockType* pWDICtx,
18570 WDI_EventInfoType* pEventData
18571)
18572{
18573 WDI_Status wdiStatus;
18574 eHalStatus halStatus;
18575 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18576
18577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18580
18581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 -------------------------------------------------------------------------*/
18584 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18585 ( NULL == pEventData->pEventData))
18586 {
18587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 }
18592
18593 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18594
18595 wpalMutexAcquire(&pWDICtx->wptMutex);
18596
18597 /*If the link is being transitioned to idle - the BSS is to be deleted
18598 - this type of ending a session is possible when UMAC has failed an
18599 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018601 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18602 {
18603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18607 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18608 &pBSSSes);
18609
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 /*-----------------------------------------------------------------------
18611 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018612 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 -----------------------------------------------------------------------*/
18614 if ( NULL == pBSSSes )
18615 {
18616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18617 "Set link response received outside association session");
18618 }
18619 else
18620 {
18621 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18622 will be del BSS coming after this to stop the beaconing & cleaning up the
18623 sessions*/
18624 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18625 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18626 {
18627 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 -----------------------------------------------------------------------*/
18630 WDI_DeleteSession(pWDICtx, pBSSSes);
18631
18632 /*-----------------------------------------------------------------------
18633 Check to see if this association is in progress - if so disable the
18634 flag as this has ended
18635 -----------------------------------------------------------------------*/
18636 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018637 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018638 /*Association no longer in progress */
18639 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18640 /*Association no longer in progress - prepare pending assoc for processing*/
18641 WDI_DequeueAssocRequest(pWDICtx);
18642 }
18643 }
18644 }
18645 }
18646 /* If the link state has been set to POST ASSOC, reset the "association in
18647 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018648 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18650 {
18651 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18652 WDI_DequeueAssocRequest(pWDICtx);
18653 }
18654
18655 wpalMutexRelease(&pWDICtx->wptMutex);
18656
18657 /*-------------------------------------------------------------------------
18658 Extract response and send it to UMAC
18659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018660 wpalMemoryCopy( &halStatus,
18661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018662 sizeof(halStatus));
18663
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018665
18666 /*Notify UMAC*/
18667 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18668
Jeff Johnsone7245742012-09-05 17:12:55 -070018669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018670}/*WDI_ProcessSetLinkStateRsp*/
18671
18672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018675
18676 @param pWDICtx: pointer to the WLAN DAL context
18677 pEventData: pointer to the event information structure
18678
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 @see
18680 @return Result of the function call
18681*/
18682WDI_Status
18683WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018684(
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 WDI_ControlBlockType* pWDICtx,
18686 WDI_EventInfoType* pEventData
18687)
18688{
18689 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18690 WDI_GetStatsRspCb wdiGetStatsRspCb;
18691 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018692
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18694
18695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 -------------------------------------------------------------------------*/
18698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18699 ( NULL == pEventData->pEventData))
18700 {
18701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 }
18706
18707 /*-------------------------------------------------------------------------
18708 Extract response and send it to UMAC
18709 -------------------------------------------------------------------------*/
18710 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18711
18712 /*allocate the stats response buffer */
18713 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18714 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18715 + sizeof(WDI_GetStatsRspParamsType));
18716
18717 if(NULL == wdiGetStatsRsp)
18718 {
18719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018720 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 pWDICtx, pEventData, pEventData->pEventData);
18722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 }
18725
18726 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18727
18728 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18729 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18730 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18731 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18732 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18733 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18734
18735 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18736 wpalMemoryCopy(wdiGetStatsRsp + 1,
18737 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18738 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18739
18740 /*Notify UMAC*/
18741 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18742
18743 wpalMemoryFree(wdiGetStatsRsp);
18744
Jeff Johnsone7245742012-09-05 17:12:55 -070018745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018746}/*WDI_ProcessGetStatsRsp*/
18747
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018748#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018749/**
18750 @brief Process Get Roam Rssi Rsp function (called when a response is
18751 being received over the bus from HAL)
18752
18753 @param pWDICtx: pointer to the WLAN DAL context
18754 pEventData: pointer to the event information structure
18755
18756 @see
18757 @return Result of the function call
18758*/
18759WDI_Status
18760WDI_ProcessGetRoamRssiRsp
18761(
18762 WDI_ControlBlockType* pWDICtx,
18763 WDI_EventInfoType* pEventData
18764)
18765{
18766 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18767 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18768 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18770
18771 /*-------------------------------------------------------------------------
18772 Sanity check
18773 -------------------------------------------------------------------------*/
18774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18775 ( NULL == pEventData->pEventData))
18776 {
18777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18778 "%s: Invalid parameters", __func__);
18779 WDI_ASSERT(0);
18780 return WDI_STATUS_E_FAILURE;
18781 }
18782
18783 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18784 if(NULL == wdiGetRoamRssiRspCb)
18785 {
18786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18787 "%s: call back function is NULL", __func__);
18788 WDI_ASSERT(0);
18789 return WDI_STATUS_E_FAILURE;
18790 }
18791
18792 /*-------------------------------------------------------------------------
18793 Extract response and send it to UMAC
18794 -------------------------------------------------------------------------*/
18795 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18796 pEventData->pEventData,
18797 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18798
18799 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18800 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18801 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18802
18803 /*Notify UMAC*/
18804 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18805
18806 return WDI_STATUS_SUCCESS;
18807}/*WDI_ProcessGetRoamRssiRsp*/
18808#endif
18809
Jeff Johnson295189b2012-06-20 16:38:30 -070018810
18811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018814
18815 @param pWDICtx: pointer to the WLAN DAL context
18816 pEventData: pointer to the event information structure
18817
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 @see
18819 @return Result of the function call
18820*/
18821WDI_Status
18822WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018823(
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 WDI_ControlBlockType* pWDICtx,
18825 WDI_EventInfoType* pEventData
18826)
18827{
18828 WDI_Status wdiStatus;
18829 eHalStatus halStatus;
18830 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18832
18833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 -------------------------------------------------------------------------*/
18836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18837 ( NULL == pEventData->pEventData))
18838 {
18839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 }
18844
18845 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18846
18847 /*-------------------------------------------------------------------------
18848 Extract response and send it to UMAC
18849 -------------------------------------------------------------------------*/
18850 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018851 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018852
18853 /*Notify UMAC*/
18854 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18855
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018857}/*WDI_ProcessUpdateCfgRsp*/
18858
18859
18860
18861/**
18862 @brief Process Add BA Rsp function (called when a response
18863 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018864
18865 @param pWDICtx: pointer to the WLAN DAL context
18866 pEventData: pointer to the event information structure
18867
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 @see
18869 @return Result of the function call
18870*/
18871WDI_Status
18872WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018873(
Jeff Johnson295189b2012-06-20 16:38:30 -070018874 WDI_ControlBlockType* pWDICtx,
18875 WDI_EventInfoType* pEventData
18876)
18877{
18878 WDI_AddBARspCb wdiAddBARspCb;
18879
18880 tAddBARspParams halAddBARsp;
18881 WDI_AddBARspinfoType wdiAddBARsp;
18882
18883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18884
18885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 -------------------------------------------------------------------------*/
18888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18889 ( NULL == pEventData->pEventData))
18890 {
18891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 }
18896
18897 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18898
18899 /*-------------------------------------------------------------------------
18900 Extract response and send it to UMAC
18901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018902 wpalMemoryCopy( &halAddBARsp,
18903 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 sizeof(halAddBARsp));
18905
18906 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18907
Jeff Johnson43971f52012-07-17 12:26:56 -070018908 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 {
18910 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18911 }
18912
18913 /*Notify UMAC*/
18914 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18915
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018917}/*WDI_ProcessAddSessionBARsp*/
18918
18919/**
18920 @brief Process Add BA Rsp function (called when a response
18921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018922
18923 @param pWDICtx: pointer to the WLAN DAL context
18924 pEventData: pointer to the event information structure
18925
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 @see
18927 @return Result of the function call
18928*/
18929WDI_Status
18930WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018931(
Jeff Johnson295189b2012-06-20 16:38:30 -070018932 WDI_ControlBlockType* pWDICtx,
18933 WDI_EventInfoType* pEventData
18934)
18935{
18936 WDI_TriggerBARspCb wdiTriggerBARspCb;
18937
18938 tTriggerBARspParams* halTriggerBARsp;
18939 tTriggerBaRspCandidate* halBaCandidate;
18940 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18941 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18942 wpt_uint16 index;
18943 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018944 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18946
18947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 -------------------------------------------------------------------------*/
18950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18951 ( NULL == pEventData->pEventData))
18952 {
18953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 }
18958
18959 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18960
18961 /*-------------------------------------------------------------------------
18962 Extract response and send it to UMAC
18963 -------------------------------------------------------------------------*/
18964 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18965
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018966 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18967
18968 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18969 {
18970 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018971 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018973
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018974 if(NULL == wdiTriggerBARsp)
18975 {
18976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018977 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018978 pWDICtx, pEventData, pEventData->pEventData);
18979 WDI_ASSERT(0);
18980 return WDI_STATUS_E_FAILURE;
18981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018982
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018983 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18984
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18988
18989 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18990 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18991
18992 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18996 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019000 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019001 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19002 }
19003 wdiTriggerBARspCandidate++;
19004 halBaCandidate++;
19005 }
19006 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019007 else
19008 {
19009 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19010
19011 if(NULL == wdiTriggerBARsp)
19012 {
19013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019014 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019015 pWDICtx, pEventData, pEventData->pEventData);
19016 WDI_ASSERT(0);
19017 return WDI_STATUS_E_FAILURE;
19018 }
19019
19020 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19021
19022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019023
19024 /*Notify UMAC*/
19025 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19026
19027 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019029}/*WDI_ProcessAddSessionBARsp*/
19030
19031/**
19032 @brief Process Update Beacon Params Rsp function (called when a response
19033 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019034
19035 @param pWDICtx: pointer to the WLAN DAL context
19036 pEventData: pointer to the event information structure
19037
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 @see
19039 @return Result of the function call
19040*/
19041WDI_Status
19042WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019043(
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 WDI_ControlBlockType* pWDICtx,
19045 WDI_EventInfoType* pEventData
19046)
19047{
19048 WDI_Status wdiStatus;
19049 eHalStatus halStatus;
19050 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19052
19053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 -------------------------------------------------------------------------*/
19056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19057 ( NULL == pEventData->pEventData))
19058 {
19059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 }
19064
19065 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19066
19067 /*-------------------------------------------------------------------------
19068 Extract response and send it to UMAC
19069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 wpalMemoryCopy( &halStatus,
19071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 sizeof(halStatus));
19073
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019075
19076 /*Notify UMAC*/
19077 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19078
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019080}/*WDI_ProcessUpdateBeaconParamsRsp*/
19081
19082/**
19083 @brief Process Send Beacon template Rsp function (called when a response
19084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019085
19086 @param pWDICtx: pointer to the WLAN DAL context
19087 pEventData: pointer to the event information structure
19088
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 @see
19090 @return Result of the function call
19091*/
19092WDI_Status
19093WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019094(
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 WDI_ControlBlockType* pWDICtx,
19096 WDI_EventInfoType* pEventData
19097)
19098{
19099 WDI_Status wdiStatus;
19100 eHalStatus halStatus;
19101 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19103
19104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 -------------------------------------------------------------------------*/
19107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19108 ( NULL == pEventData->pEventData))
19109 {
19110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 }
19115
19116 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19117
19118 /*-------------------------------------------------------------------------
19119 Extract response and send it to UMAC
19120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 wpalMemoryCopy( &halStatus,
19122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 sizeof(halStatus));
19124
Jeff Johnsone7245742012-09-05 17:12:55 -070019125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019126
19127 /*Notify UMAC*/
19128 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19129
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019131}/*WDI_ProcessSendBeaconParamsRsp*/
19132
Jeff Johnsone7245742012-09-05 17:12:55 -070019133
Jeff Johnson295189b2012-06-20 16:38:30 -070019134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019137
19138 @param pWDICtx: pointer to the WLAN DAL context
19139 pEventData: pointer to the event information structure
19140
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 @see
19142 @return Result of the function call
19143*/
19144WDI_Status
19145WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019146(
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 WDI_ControlBlockType* pWDICtx,
19148 WDI_EventInfoType* pEventData
19149)
19150{
19151 WDI_Status wdiStatus;
19152 eHalStatus halStatus;
19153 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19155
19156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 -------------------------------------------------------------------------*/
19159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19160 ( NULL == pEventData->pEventData))
19161 {
19162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 }
19167
19168 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19169
19170 /*-------------------------------------------------------------------------
19171 Extract response and send it to UMAC
19172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019173 wpalMemoryCopy( &halStatus,
19174 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 sizeof(halStatus));
19176
Jeff Johnsone7245742012-09-05 17:12:55 -070019177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019178
19179 /*Notify UMAC*/
19180 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19181
Jeff Johnsone7245742012-09-05 17:12:55 -070019182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019183}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19184
19185 /**
19186 @brief Process Set Max Tx Power Rsp function (called when a response
19187 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019188
19189 @param pWDICtx: pointer to the WLAN DAL context
19190 pEventData: pointer to the event information structure
19191
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 @see
19193 @return Result of the function call
19194*/
19195WDI_Status
19196WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019197(
Jeff Johnson295189b2012-06-20 16:38:30 -070019198 WDI_ControlBlockType* pWDICtx,
19199 WDI_EventInfoType* pEventData
19200)
19201{
19202 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019203
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019205
Jeff Johnson295189b2012-06-20 16:38:30 -070019206 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19208
19209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 -------------------------------------------------------------------------*/
19212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19213 ( NULL == pEventData->pEventData))
19214 {
19215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 }
19220
19221 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19222
19223 /*-------------------------------------------------------------------------
19224 Extract response and send it to UMAC
19225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19227 pEventData->pEventData,
19228 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019229
19230 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19231 {
19232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19233 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 }
19236
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019239 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019240
19241 /*Notify UMAC*/
19242 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19243
Jeff Johnsone7245742012-09-05 17:12:55 -070019244 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019245}
19246
schang86c22c42013-03-13 18:41:24 -070019247 /**
19248 @brief Process Set Tx Power Rsp function (called when a response
19249 is being received over the bus from HAL)
19250
19251 @param pWDICtx: pointer to the WLAN DAL context
19252 pEventData: pointer to the event information structure
19253
19254 @see
19255 @return Result of the function call
19256*/
19257WDI_Status
19258WDI_ProcessSetTxPowerRsp
19259(
19260 WDI_ControlBlockType* pWDICtx,
19261 WDI_EventInfoType* pEventData
19262)
19263{
19264 tSetTxPwrRspMsg halTxpowerrsp;
19265 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19266 WDA_SetTxPowerRspCb wdiReqStatusCb;
19267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19268
19269 /*-------------------------------------------------------------------------
19270 Sanity check
19271 -------------------------------------------------------------------------*/
19272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19273 ( NULL == pEventData->pEventData))
19274 {
19275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19276 "%s: Invalid parameters", __func__);
19277 WDI_ASSERT(0);
19278 return WDI_STATUS_E_FAILURE;
19279 }
19280
19281 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19282
19283 /*-------------------------------------------------------------------------
19284 Extract response and send it to UMAC
19285 -------------------------------------------------------------------------*/
19286 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19287 pEventData->pEventData,
19288 sizeof(halTxpowerrsp.setTxPwrRspParams));
19289
19290 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19291 {
19292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19293 "Error status returned in Set Tx Power Response ");
19294 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19295 return WDI_STATUS_E_FAILURE;
19296 }
19297
19298 wdiSetTxPowerRspMsg.wdiStatus =
19299 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19300
19301 /*Notify UMAC*/
19302 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19303
19304 return WDI_STATUS_SUCCESS;
19305}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019306
19307/**
19308 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19309 is being received over the bus from HAL)
19310
19311 @param pWDICtx: pointer to the WLAN DAL context
19312 pEventData: pointer to the event information structure
19313
19314 @see
19315 @return Result of the function call
19316*/
19317WDI_Status
19318WDI_ProcessSetMaxTxPowerPerBandRsp
19319(
19320 WDI_ControlBlockType* pWDICtx,
19321 WDI_EventInfoType* pEventData
19322)
19323{
19324 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19325 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19326 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19328
19329 /*-------------------------------------------------------------------------
19330 Sanity check
19331 -------------------------------------------------------------------------*/
19332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19333 ( NULL == pEventData->pEventData))
19334 {
19335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19336 "%s: Invalid parameters", __func__);
19337 WDI_ASSERT(0);
19338 return WDI_STATUS_E_FAILURE;
19339 }
19340
19341 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19342
19343 /*-------------------------------------------------------------------------
19344 Extract response and send it to UMAC
19345 -------------------------------------------------------------------------*/
19346 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19347 pEventData->pEventData,
19348 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19349
19350 if (eHAL_STATUS_SUCCESS !=
19351 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19352 {
19353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19354 "Error status returned in Set Max Tx Power Per Band Response");
19355 return WDI_STATUS_E_FAILURE;
19356 }
19357
19358 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19359 WDI_HAL_2_WDI_STATUS(
19360 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19361
19362 /* Notify UMAC */
19363 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19364
19365 return WDI_STATUS_SUCCESS;
19366}
19367
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019368#ifdef FEATURE_WLAN_TDLS
19369/**
19370 @brief Process TDLS Link Establish Rsp function (called
19371 when a response is being received over the bus from HAL)
19372
19373 @param pWDICtx: pointer to the WLAN DAL context
19374 pEventData: pointer to the event information structure
19375
19376 @see
19377 @return Result of the function call
19378*/
19379WDI_Status
19380WDI_ProcessLinkEstablishReqRsp
19381(
19382 WDI_ControlBlockType* pWDICtx,
19383 WDI_EventInfoType* pEventData
19384)
19385{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019386 eHalStatus halStatus;
19387 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019388 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19389 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19390
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19392
19393 /*-------------------------------------------------------------------------
19394 Sanity check
19395 -------------------------------------------------------------------------*/
19396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19397 ( NULL == pEventData->pEventData))
19398 {
19399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19400 "%s: Invalid parameters", __func__);
19401 WDI_ASSERT(0);
19402 return WDI_STATUS_E_FAILURE;
19403 }
19404
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019405 /*-------------------------------------------------------------------------
19406 Extract indication and send it to UMAC
19407 -------------------------------------------------------------------------*/
19408 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19409 pEventData->pEventData,
19410 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19411
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019412 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19413
19414 /*-------------------------------------------------------------------------
19415 Extract response and send it to UMAC
19416 -------------------------------------------------------------------------*/
19417 wpalMemoryCopy( &halStatus,
19418 pEventData->pEventData,
19419 sizeof(halStatus));
19420
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019421 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19422 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019423
19424 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019425 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019426
19427 return WDI_STATUS_SUCCESS;
19428}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019429
19430
19431
19432/**
19433 @brief Process TDLS Chan switch Rsp function (called
19434 when a response is being received over the bus from HAL)
19435
19436 @param pWDICtx: pointer to the WLAN DAL context
19437 pEventData: pointer to the event information structure
19438
19439 @see
19440 @return Result of the function call
19441*/
19442WDI_Status
19443WDI_ProcessChanSwitchReqRsp
19444(
19445 WDI_ControlBlockType* pWDICtx,
19446 WDI_EventInfoType* pEventData
19447)
19448{
19449 eHalStatus halStatus;
19450 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19451 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19452 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19453
19454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19455
19456 /*-------------------------------------------------------------------------
19457 Sanity check
19458 -------------------------------------------------------------------------*/
19459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19460 ( NULL == pEventData->pEventData))
19461 {
19462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19463 "%s: Invalid parameters", __func__);
19464 WDI_ASSERT(0);
19465 return WDI_STATUS_E_FAILURE;
19466 }
19467
19468 /*-------------------------------------------------------------------------
19469 Extract indication and send it to UMAC
19470 -------------------------------------------------------------------------*/
19471 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19472 pEventData->pEventData,
19473 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19474
19475 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19476
19477 /*-------------------------------------------------------------------------
19478 Extract response and send it to UMAC
19479 -------------------------------------------------------------------------*/
19480 wpalMemoryCopy( &halStatus,
19481 pEventData->pEventData,
19482 sizeof(halStatus));
19483
19484 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19485 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19486
19487 /*Notify UMAC*/
19488 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19489
19490 return WDI_STATUS_SUCCESS;
19491}/*WDI_ProcessChanSwitchReqRsp*/
19492
19493
19494
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019495#endif
schang86c22c42013-03-13 18:41:24 -070019496
Jeff Johnson295189b2012-06-20 16:38:30 -070019497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019500
19501 @param pWDICtx: pointer to the WLAN DAL context
19502 pEventData: pointer to the event information structure
19503
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 @see
19505 @return Result of the function call
19506*/
19507WDI_Status
19508WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019509(
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 WDI_ControlBlockType* pWDICtx,
19511 WDI_EventInfoType* pEventData
19512)
19513{
19514 WDI_Status wdiStatus;
19515 eHalStatus halStatus;
19516 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19518
19519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019521 -------------------------------------------------------------------------*/
19522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19523 ( NULL == pEventData->pEventData))
19524 {
19525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 }
19530
19531 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19532
19533 /*-------------------------------------------------------------------------
19534 Extract response and send it to UMAC
19535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 wpalMemoryCopy( &halStatus,
19537 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 sizeof(halStatus));
19539
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019541
19542 /*Notify UMAC*/
19543 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19544
Jeff Johnsone7245742012-09-05 17:12:55 -070019545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019546}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019548 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019550
19551 @param pWDICtx: pointer to the WLAN DAL context
19552 pEventData: pointer to the event information structure
19553
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 @see
19555 @return Result of the function call
19556*/
19557WDI_Status
19558WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019559(
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 WDI_ControlBlockType* pWDICtx,
19561 WDI_EventInfoType* pEventData
19562)
19563{
19564 WDI_Status wdiStatus;
19565 eHalStatus halStatus;
19566 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
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
19582 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19583
19584 /*-------------------------------------------------------------------------
19585 Extract response and send it to UMAC
19586 -------------------------------------------------------------------------*/
19587 halStatus = *((eHalStatus*)pEventData->pEventData);
19588
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019590
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019591 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19592 * Other module states are taken care by PMC.
19593 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19594 */
19595 if (wdiStatus != WDI_STATUS_SUCCESS) {
19596
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19598 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19599 halStatus);
19600 /* Call Back is not required as we are putting the DXE in FULL
19601 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019602 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19603
19604 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019606 "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 -080019607 WDI_ASSERT(0);
19608 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019609 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019610 /*Notify UMAC*/
19611 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19612
Jeff Johnsone7245742012-09-05 17:12:55 -070019613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019614}/*WDI_ProcessEnterImpsRsp*/
19615
19616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019619
19620 @param pWDICtx: pointer to the WLAN DAL context
19621 pEventData: pointer to the event information structure
19622
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 @see
19624 @return Result of the function call
19625*/
19626WDI_Status
19627WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019628(
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_ControlBlockType* pWDICtx,
19630 WDI_EventInfoType* pEventData
19631)
19632{
19633 WDI_Status wdiStatus;
19634 eHalStatus halStatus;
19635 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019636 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19638
19639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 -------------------------------------------------------------------------*/
19642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19643 ( NULL == pEventData->pEventData))
19644 {
19645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 }
19650
19651 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19652
19653 /*-------------------------------------------------------------------------
19654 Extract response and send it to UMAC
19655 -------------------------------------------------------------------------*/
19656 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019658
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019659 if (halStatus != eHAL_STATUS_SUCCESS)
19660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19661 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19662
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019664 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19665 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19666 {
19667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019668 "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 -080019669 WDI_ASSERT(0);
19670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 /*Notify UMAC*/
19672 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19673
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019675}/*WDI_ProcessExitImpsRsp*/
19676
19677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019680
19681 @param pWDICtx: pointer to the WLAN DAL context
19682 pEventData: pointer to the event information structure
19683
Jeff Johnson295189b2012-06-20 16:38:30 -070019684 @see
19685 @return Result of the function call
19686*/
19687WDI_Status
19688WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019689(
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 WDI_ControlBlockType* pWDICtx,
19691 WDI_EventInfoType* pEventData
19692)
19693{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019694 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19695 tHalEnterBmpsRspParams halEnterBmpsRsp;
19696 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19697 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019698 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19700
19701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 -------------------------------------------------------------------------*/
19704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19705 ( NULL == pEventData->pEventData))
19706 {
19707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 }
19712
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019714 Extract response and send it to UMAC
19715 -------------------------------------------------------------------------*/
19716 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19717 {
19718 wpalMemoryCopy( &halEnterBmpsRsp,
19719 pEventData->pEventData,
19720 sizeof(halEnterBmpsRsp));
19721
19722 //Used to print debug message
19723 halStatus = halEnterBmpsRsp.status;
19724 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19725 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19726 }
19727 else
19728 {
19729 halStatus = *((eHalStatus*)pEventData->pEventData);
19730 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19731 }
19732
19733 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019734
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019735 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19736 * Other module states are taken care by PMC.
19737 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19738 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019739 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19740 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019741
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019743 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19744 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019745 /* Call Back is not required as we are putting the DXE in FULL
19746 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019747 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19748 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19749 {
19750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019751 "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 -080019752 WDI_ASSERT(0);
19753 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019754 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019755 }
19756
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019758 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019759
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019761}/*WDI_ProcessEnterBmpsRsp*/
19762
19763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019766
19767 @param pWDICtx: pointer to the WLAN DAL context
19768 pEventData: pointer to the event information structure
19769
Jeff Johnson295189b2012-06-20 16:38:30 -070019770 @see
19771 @return Result of the function call
19772*/
19773WDI_Status
19774WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019775(
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 WDI_ControlBlockType* pWDICtx,
19777 WDI_EventInfoType* pEventData
19778)
19779{
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 eHalStatus halStatus;
19781 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019782 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019783 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19784 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19786
19787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 -------------------------------------------------------------------------*/
19790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19791 ( NULL == pEventData->pEventData))
19792 {
19793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019797 }
19798
19799 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19800
19801 /*-------------------------------------------------------------------------
19802 Extract response and send it to UMAC
19803 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019804
19805 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19806 {
19807 wpalMemoryCopy( &halExitBmpsRsp,
19808 pEventData->pEventData,
19809 sizeof(halExitBmpsRsp));
19810
19811 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19812 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19813 }
19814 else
19815 {
19816 halStatus = *((eHalStatus*)pEventData->pEventData);
19817 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19818 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019819
19820 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019821 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19822 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19823 {
19824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019825 "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 -080019826 WDI_ASSERT(0);
19827 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19829
19830 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019831 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019832
Jeff Johnsone7245742012-09-05 17:12:55 -070019833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019834}/*WDI_ProcessExitBmpsRsp*/
19835
19836/**
19837 @brief Process Enter UAPSD Rsp function (called when a response
19838 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019839
19840 @param pWDICtx: pointer to the WLAN DAL context
19841 pEventData: pointer to the event information structure
19842
Jeff Johnson295189b2012-06-20 16:38:30 -070019843 @see
19844 @return Result of the function call
19845*/
19846WDI_Status
19847WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019848(
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 WDI_ControlBlockType* pWDICtx,
19850 WDI_EventInfoType* pEventData
19851)
19852{
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019854 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019856 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19857
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19859
19860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 -------------------------------------------------------------------------*/
19863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19864 ( NULL == pEventData->pEventData))
19865 {
19866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019870 }
19871
19872 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19873
19874 /*-------------------------------------------------------------------------
19875 Extract response and send it to UMAC
19876 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019877 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19878 {
19879 wpalMemoryCopy( &halEnterUapsdRsp,
19880 pEventData->pEventData,
19881 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019882
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019883 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19884 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19885 }
19886 else
19887 {
19888 halStatus = *((eHalStatus*)pEventData->pEventData);
19889 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19890 }
19891
19892 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 {
19894 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19895 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19896 // the traffic to decide when to suspend the trigger frames when there is no traffic
19897 // activity on the trigger enabled ACs
19898 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19899
19900#ifdef WLAN_PERF
19901 // Increment the BD signature to refresh the fast path BD utilization
19902 pWDICtx->uBdSigSerialNum++;
19903#endif
19904 }
19905
19906 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019907 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019908
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019910}/*WDI_ProcessEnterUapsdRsp*/
19911
19912/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019915
19916 @param pWDICtx: pointer to the WLAN DAL context
19917 pEventData: pointer to the event information structure
19918
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 @see
19920 @return Result of the function call
19921*/
19922WDI_Status
19923WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019924(
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 WDI_ControlBlockType* pWDICtx,
19926 WDI_EventInfoType* pEventData
19927)
19928{
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 eHalStatus halStatus;
19930 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019931 tHalExitUapsdRspParams halExitUapsdRsp;
19932 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19934
19935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 -------------------------------------------------------------------------*/
19938 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19939 ( NULL == pEventData->pEventData))
19940 {
19941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 }
19946
19947 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19948
19949 /*-------------------------------------------------------------------------
19950 Extract response and send it to UMAC
19951 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019952 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19953 {
19954 wpalMemoryCopy( &halExitUapsdRsp,
19955 pEventData->pEventData,
19956 sizeof(halExitUapsdRsp));
19957
19958 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19959 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19960 }
19961 else
19962 {
19963 halStatus = *((eHalStatus*)pEventData->pEventData);
19964 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19965 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19967 // directly instead of the FW WQ.
19968 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19969
19970#ifdef WLAN_PERF
19971 // Increment the BD signature to refresh the fast path BD utilization
19972 pWDICtx->uBdSigSerialNum++;
19973#endif
19974
19975 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019976 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019977
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019979}/*WDI_ProcessExitUapsdRsp*/
19980
19981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019983 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019984
19985 @param pWDICtx: pointer to the WLAN DAL context
19986 pEventData: pointer to the event information structure
19987
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 @see
19989 @return Result of the function call
19990*/
19991WDI_Status
19992WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019993(
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 WDI_ControlBlockType* pWDICtx,
19995 WDI_EventInfoType* pEventData
19996)
19997{
19998 WDI_Status wdiStatus;
19999 eHalStatus halStatus;
20000 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20002
20003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 -------------------------------------------------------------------------*/
20006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20007 ( NULL == pEventData->pEventData))
20008 {
20009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020013 }
20014
20015 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20016
20017 /*-------------------------------------------------------------------------
20018 Extract response and send it to UMAC
20019 -------------------------------------------------------------------------*/
20020 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020022
20023 /*Notify UMAC*/
20024 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20025
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027}/*WDI_ProcessSetUapsdAcParamsRsp*/
20028
20029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020032
20033 @param pWDICtx: pointer to the WLAN DAL context
20034 pEventData: pointer to the event information structure
20035
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 @see
20037 @return Result of the function call
20038*/
20039WDI_Status
20040WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020041(
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 WDI_ControlBlockType* pWDICtx,
20043 WDI_EventInfoType* pEventData
20044)
20045{
20046 WDI_Status wdiStatus;
20047 eHalStatus halStatus;
20048 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20050
20051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 -------------------------------------------------------------------------*/
20054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20055 ( NULL == pEventData->pEventData))
20056 {
20057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020058 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020061 }
20062
20063 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20064
20065 /*-------------------------------------------------------------------------
20066 Extract response and send it to UMAC
20067 -------------------------------------------------------------------------*/
20068 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020069 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020070
20071 /*Notify UMAC*/
20072 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20073
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020075}/*WDI_ProcessUpdateUapsdParamsRsp*/
20076
20077/**
20078 @brief Process Configure RXP filter Rsp function (called when a
20079 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020080
20081 @param pWDICtx: pointer to the WLAN DAL context
20082 pEventData: pointer to the event information structure
20083
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 @see
20085 @return Result of the function call
20086*/
20087WDI_Status
20088WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020089(
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 WDI_ControlBlockType* pWDICtx,
20091 WDI_EventInfoType* pEventData
20092)
20093{
20094 WDI_Status wdiStatus;
20095 eHalStatus halStatus;
20096 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20098
20099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 -------------------------------------------------------------------------*/
20102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20103 ( NULL == pEventData->pEventData))
20104 {
20105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 }
20110
20111 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20112
20113 /*-------------------------------------------------------------------------
20114 Extract response and send it to UMAC
20115 -------------------------------------------------------------------------*/
20116 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020118
20119 /*Notify UMAC*/
20120 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20121
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020123}/*WDI_ProcessConfigureRxpFilterRsp*/
20124
20125/**
20126 @brief Process Set beacon filter Rsp function (called when a
20127 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020128
20129 @param pWDICtx: pointer to the WLAN DAL context
20130 pEventData: pointer to the event information structure
20131
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 @see
20133 @return Result of the function call
20134*/
20135WDI_Status
20136WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020137(
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 WDI_ControlBlockType* pWDICtx,
20139 WDI_EventInfoType* pEventData
20140)
20141{
20142 WDI_Status wdiStatus;
20143 eHalStatus halStatus;
20144 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20146
20147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 -------------------------------------------------------------------------*/
20150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20151 ( NULL == pEventData->pEventData))
20152 {
20153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 }
20158
20159 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20160
20161 /*-------------------------------------------------------------------------
20162 Extract response and send it to UMAC
20163 -------------------------------------------------------------------------*/
20164 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020165 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020166
20167 /*Notify UMAC*/
20168 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20169
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020171}/*WDI_ProcessSetBeaconFilterRsp*/
20172
20173/**
20174 @brief Process remove beacon filter Rsp function (called when a
20175 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020176
20177 @param pWDICtx: pointer to the WLAN DAL context
20178 pEventData: pointer to the event information structure
20179
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 @see
20181 @return Result of the function call
20182*/
20183WDI_Status
20184WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020185(
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 WDI_ControlBlockType* pWDICtx,
20187 WDI_EventInfoType* pEventData
20188)
20189{
20190 WDI_Status wdiStatus;
20191 eHalStatus halStatus;
20192 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20194
20195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020197 -------------------------------------------------------------------------*/
20198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20199 ( NULL == pEventData->pEventData))
20200 {
20201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 }
20206
20207 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20208
20209 /*-------------------------------------------------------------------------
20210 Extract response and send it to UMAC
20211 -------------------------------------------------------------------------*/
20212 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020214
20215 /*Notify UMAC*/
20216 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20217
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020219}/*WDI_ProcessRemBeaconFilterRsp*/
20220
20221/**
20222 @brief Process set RSSI thresholds Rsp function (called when a
20223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020224
20225 @param pWDICtx: pointer to the WLAN DAL context
20226 pEventData: pointer to the event information structure
20227
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 @see
20229 @return Result of the function call
20230*/
20231WDI_Status
20232WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020233(
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ControlBlockType* pWDICtx,
20235 WDI_EventInfoType* pEventData
20236)
20237{
20238 WDI_Status wdiStatus;
20239 eHalStatus halStatus;
20240 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20242
20243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020245 -------------------------------------------------------------------------*/
20246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20247 ( NULL == pEventData->pEventData))
20248 {
20249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 }
20254
20255 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20256
20257 /*-------------------------------------------------------------------------
20258 Extract response and send it to UMAC
20259 -------------------------------------------------------------------------*/
20260 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020262
20263 /*Notify UMAC*/
20264 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20265
Jeff Johnsone7245742012-09-05 17:12:55 -070020266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020267}/*WDI_ProcessSetRSSIThresoldsRsp*/
20268
20269/**
20270 @brief Process host offload Rsp function (called when a
20271 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020272
20273 @param pWDICtx: pointer to the WLAN DAL context
20274 pEventData: pointer to the event information structure
20275
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 @see
20277 @return Result of the function call
20278*/
20279WDI_Status
20280WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020281(
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 WDI_ControlBlockType* pWDICtx,
20283 WDI_EventInfoType* pEventData
20284)
20285{
20286 WDI_Status wdiStatus;
20287 eHalStatus halStatus;
20288 WDI_HostOffloadCb wdiHostOffloadCb;
20289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20290
20291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 -------------------------------------------------------------------------*/
20294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20295 ( NULL == pEventData->pEventData))
20296 {
20297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 }
20302
20303 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20304
20305 /*-------------------------------------------------------------------------
20306 Extract response and send it to UMAC
20307 -------------------------------------------------------------------------*/
20308 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020310
20311 /*Notify UMAC*/
20312 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20313
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020315}/*WDI_ProcessHostOffloadRsp*/
20316
20317/**
20318 @brief Process keep alive Rsp function (called when a
20319 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020320
20321 @param pWDICtx: pointer to the WLAN DAL context
20322 pEventData: pointer to the event information structure
20323
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 @see
20325 @return Result of the function call
20326*/
20327WDI_Status
20328WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020329(
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 WDI_ControlBlockType* pWDICtx,
20331 WDI_EventInfoType* pEventData
20332)
20333{
20334 WDI_Status wdiStatus;
20335 eHalStatus halStatus;
20336 WDI_KeepAliveCb wdiKeepAliveCb;
20337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20339 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20340
20341
20342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 -------------------------------------------------------------------------*/
20345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20346 ( NULL == pEventData->pEventData))
20347 {
20348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 }
20353
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20355
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 /*-------------------------------------------------------------------------
20357 Extract response and send it to UMAC
20358 -------------------------------------------------------------------------*/
20359 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020360 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020361
20362 /*Notify UMAC*/
20363 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20364
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366}/*WDI_ProcessKeepAliveRsp*/
20367
20368/**
20369 @brief Process wowl add ptrn Rsp function (called when a
20370 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020371
20372 @param pWDICtx: pointer to the WLAN DAL context
20373 pEventData: pointer to the event information structure
20374
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 @see
20376 @return Result of the function call
20377*/
20378WDI_Status
20379WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020380(
Jeff Johnson295189b2012-06-20 16:38:30 -070020381 WDI_ControlBlockType* pWDICtx,
20382 WDI_EventInfoType* pEventData
20383)
20384{
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 eHalStatus halStatus;
20386 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020387 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20388 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20389
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20391
20392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 -------------------------------------------------------------------------*/
20395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20396 ( NULL == pEventData->pEventData))
20397 {
20398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 }
20403
20404 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20405
20406 /*-------------------------------------------------------------------------
20407 Extract response and send it to UMAC
20408 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020409 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20410 {
20411 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20412 pEventData->pEventData,
20413 sizeof(halAddWowlBcastPtrRsp));
20414
20415 wdiWowlAddBcPtrRsp.wdiStatus =
20416 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20417 }
20418 else
20419 {
20420 halStatus = *((eHalStatus*)pEventData->pEventData);
20421 wdiWowlAddBcPtrRsp.wdiStatus =
20422 WDI_HAL_2_WDI_STATUS(halStatus);
20423 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020424
20425 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020426 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020427
Jeff Johnsone7245742012-09-05 17:12:55 -070020428 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020429}/*WDI_ProcessWowlAddBcPtrnRsp*/
20430
20431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020432 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020434
20435 @param pWDICtx: pointer to the WLAN DAL context
20436 pEventData: pointer to the event information structure
20437
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 @see
20439 @return Result of the function call
20440*/
20441WDI_Status
20442WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020443(
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 WDI_ControlBlockType* pWDICtx,
20445 WDI_EventInfoType* pEventData
20446)
20447{
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 eHalStatus halStatus;
20449 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020450 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20451 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20453
20454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 -------------------------------------------------------------------------*/
20457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20458 ( NULL == pEventData->pEventData))
20459 {
20460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 }
20465
20466 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20467
20468 /*-------------------------------------------------------------------------
20469 Extract response and send it to UMAC
20470 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020471 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20472 {
20473 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20474 pEventData->pEventData,
20475 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020477 wdiWowlDelBcstPtrRsp.wdiStatus =
20478 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20479 }
20480 else
20481 {
20482 halStatus = *((eHalStatus*)pEventData->pEventData);
20483 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20484 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020485 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020486 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020487
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020489}/*WDI_ProcessWowlDelBcPtrnRsp*/
20490
20491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020494
20495 @param pWDICtx: pointer to the WLAN DAL context
20496 pEventData: pointer to the event information structure
20497
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 @see
20499 @return Result of the function call
20500*/
20501WDI_Status
20502WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020503(
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 WDI_ControlBlockType* pWDICtx,
20505 WDI_EventInfoType* pEventData
20506)
20507{
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 eHalStatus halStatus;
20509 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020510 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20511 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20513
20514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 -------------------------------------------------------------------------*/
20517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20518 ( NULL == pEventData->pEventData))
20519 {
20520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 }
20525
20526 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20527
20528 /*-------------------------------------------------------------------------
20529 Extract response and send it to UMAC
20530 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020531 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20532 {
20533 wpalMemoryCopy( &halEnterWowlRspParams,
20534 (wpt_uint8*)pEventData->pEventData,
20535 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020536
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020537 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20538 wdiwowlEnterRsp.status =
20539 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20540 }
20541 else
20542 {
20543 halStatus = *((eHalStatus*)pEventData->pEventData);
20544 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20545 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020547 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020548
Jeff Johnsone7245742012-09-05 17:12:55 -070020549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020550}/*WDI_ProcessWowlEnterRsp*/
20551
20552/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020555
20556 @param pWDICtx: pointer to the WLAN DAL context
20557 pEventData: pointer to the event information structure
20558
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 @see
20560 @return Result of the function call
20561*/
20562WDI_Status
20563WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020564(
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 WDI_ControlBlockType* pWDICtx,
20566 WDI_EventInfoType* pEventData
20567)
20568{
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 eHalStatus halStatus;
20570 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020571 tHalExitWowlRspParams halExitWowlRspParams;
20572 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20573
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20575
20576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 -------------------------------------------------------------------------*/
20579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20580 ( NULL == pEventData->pEventData))
20581 {
20582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 }
20587
20588 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20589
20590 /*-------------------------------------------------------------------------
20591 Extract response and send it to UMAC
20592 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020593 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20594 {
20595 wpalMemoryCopy( &halExitWowlRspParams,
20596 pEventData->pEventData,
20597 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020598
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020599 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20600 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20601
20602 }
20603 else
20604 {
20605 halStatus = *((eHalStatus*)pEventData->pEventData);
20606 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20607 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020609 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020610
Jeff Johnsone7245742012-09-05 17:12:55 -070020611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020612}/*WDI_ProcessWowlExitRsp*/
20613
20614/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020615 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020616 (called when a response is being received over the bus
20617 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020618
20619 @param pWDICtx: pointer to the WLAN DAL context
20620 pEventData: pointer to the event information structure
20621
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 @see
20623 @return Result of the function call
20624*/
20625WDI_Status
20626WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020627(
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 WDI_ControlBlockType* pWDICtx,
20629 WDI_EventInfoType* pEventData
20630)
20631{
20632 WDI_Status wdiStatus;
20633 eHalStatus halStatus;
20634 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20636
20637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 -------------------------------------------------------------------------*/
20640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20641 ( NULL == pEventData->pEventData))
20642 {
20643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 }
20648
20649 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20650
20651 /*-------------------------------------------------------------------------
20652 Extract response and send it to UMAC
20653 -------------------------------------------------------------------------*/
20654 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020656
20657 /*Notify UMAC*/
20658 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20659
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20662
20663
20664/**
20665 @brief Process Nv download(called when a response
20666 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020667
20668 @param pWDICtx: pointer to the WLAN DAL context
20669 pEventData: pointer to the event information structure
20670
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 @see
20672 @return Result of the function call
20673*/
20674WDI_Status
20675WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020676(
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 WDI_ControlBlockType* pWDICtx,
20678 WDI_EventInfoType* pEventData
20679)
20680{
20681
20682 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20683 tHalNvImgDownloadRspParams halNvDownloadRsp;
20684 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20685
20686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 -------------------------------------------------------------------------*/
20689 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20690 ( NULL == pEventData->pEventData))
20691 {
20692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 }
20697
20698 /*-------------------------------------------------------------------------
20699 Extract response and send it to UMAC
20700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 wpalMemoryCopy( &halNvDownloadRsp,
20702 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020703 sizeof(halNvDownloadRsp));
20704
20705 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20706
20707 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20709 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 {
20711 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020712 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 }
20714 else
20715 {
20716 /*Reset the Nv related global information in WDI context information */
20717 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20718 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20719 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20720 /*call WDA callback function for last fragment */
20721 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20722 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20723 }
20724
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020726}
20727#ifdef WLAN_FEATURE_VOWIFI_11R
20728/**
20729 @brief Process Add TSpec Rsp function (called when a response
20730 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020731
20732 @param pWDICtx: pointer to the WLAN DAL context
20733 pEventData: pointer to the event information structure
20734
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 @see
20736 @return Result of the function call
20737*/
20738WDI_Status
20739WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020740(
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 WDI_ControlBlockType* pWDICtx,
20742 WDI_EventInfoType* pEventData
20743)
20744{
20745 WDI_Status wdiStatus;
20746 tAggrAddTsRspParams aggrAddTsRsp;
20747 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20749
20750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 -------------------------------------------------------------------------*/
20753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20754 ( NULL == pEventData->pEventData))
20755 {
20756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 }
20761
20762 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20763
20764 /*-------------------------------------------------------------------------
20765 Extract response and send it to UMAC
20766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 wpalMemoryCopy( &aggrAddTsRsp,
20768 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 sizeof(aggrAddTsRsp));
20770
20771 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020773
20774 /*Notify UMAC*/
20775 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20776
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020778}/*WDI_ProcessAddTSpecRsp*/
20779#endif /* WLAN_FEATURE_VOWIFI_11R */
20780
20781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020784
20785 @param pWDICtx: pointer to the WLAN DAL context
20786 pEventData: pointer to the event information structure
20787
Jeff Johnson295189b2012-06-20 16:38:30 -070020788 @see
20789 @return Result of the function call
20790*/
20791WDI_Status
20792WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020793(
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 WDI_ControlBlockType* pWDICtx,
20795 WDI_EventInfoType* pEventData
20796)
20797{
20798 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20799 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20800 tHalHostResumeRspParams hostResumeRspMsg;
20801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20802
20803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020805 -------------------------------------------------------------------------*/
20806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20807 ( NULL == pEventData->pEventData))
20808 {
20809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020810 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020813 }
20814
20815 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20816
20817 /*-------------------------------------------------------------------------
20818 Extract response and send it to UMAC
20819 -------------------------------------------------------------------------*/
20820
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 (wpt_uint8*)pEventData->pEventData,
20823 sizeof(hostResumeRspMsg));
20824
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 wdiResumeRspParams.wdiStatus =
20826 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020827
20828 /*Notify UMAC*/
20829 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20830
20831 return WDI_STATUS_SUCCESS;
20832}
20833
20834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020835 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020837
20838 @param pWDICtx: pointer to the WLAN DAL context
20839 pEventData: pointer to the event information structure
20840
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 @see
20842 @return Result of the function call
20843*/
20844WDI_Status
20845WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020846(
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 WDI_ControlBlockType* pWDICtx,
20848 WDI_EventInfoType* pEventData
20849)
20850{
20851 WDI_Status wdiStatus;
20852 eHalStatus halStatus;
20853 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20855
20856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 -------------------------------------------------------------------------*/
20859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20860 ( NULL == pEventData->pEventData))
20861 {
20862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
20868 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020869
20870 /*-------------------------------------------------------------------------
20871 Extract response and send it to UMAC
20872 -------------------------------------------------------------------------*/
20873 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020875
20876 /*Notify UMAC*/
20877 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20878
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020880}/*WDI_ProcessSetTxPerTrackingRsp*/
20881
20882/*==========================================================================
20883 Indications from HAL
20884 ==========================================================================*/
20885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 indication of this kind is being received over the bus
20888 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020889
20890 @param pWDICtx: pointer to the WLAN DAL context
20891 pEventData: pointer to the event information structure
20892
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 @see
20894 @return Result of the function call
20895*/
20896WDI_Status
20897WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020898(
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 WDI_ControlBlockType* pWDICtx,
20900 WDI_EventInfoType* pEventData
20901)
20902{
20903 WDI_LowLevelIndType wdiInd;
20904 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20906
20907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 -------------------------------------------------------------------------*/
20910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20911 ( NULL == pEventData->pEventData))
20912 {
20913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 }
20918
20919 /*-------------------------------------------------------------------------
20920 Extract indication and send it to UMAC
20921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20923 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 sizeof(tHalRSSINotification));
20925
20926 /*Fill in the indication parameters*/
20927 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20928 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20929 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20930 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20931 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20932 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20933 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20934 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20935 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20936 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20937 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20938 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20939 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020940 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20941 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020942
ltimariub77f24b2013-01-24 18:54:33 -080020943 if ( pWDICtx->wdiLowLevelIndCB )
20944 {
20945 /*Notify UMAC of indication*/
20946 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20947 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020948
20949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950}/*WDI_ProcessLowRSSIInd*/
20951
20952
20953/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 an indication of this kind is being received over the
20956 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020957
20958 @param pWDICtx: pointer to the WLAN DAL context
20959 pEventData: pointer to the event information structure
20960
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 @see
20962 @return Result of the function call
20963*/
20964WDI_Status
20965WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020966(
Jeff Johnson295189b2012-06-20 16:38:30 -070020967 WDI_ControlBlockType* pWDICtx,
20968 WDI_EventInfoType* pEventData
20969)
20970{
20971 WDI_Status wdiStatus;
20972 eHalStatus halStatus;
20973 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020974 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20976
20977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 -------------------------------------------------------------------------*/
20980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20981 ( NULL == pEventData->pEventData))
20982 {
20983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020988 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 /*-------------------------------------------------------------------------
20990 Extract indication and send it to UMAC
20991 -------------------------------------------------------------------------*/
20992 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20993 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020995
20996 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020998 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20999 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021000 if ( pWDICtx->wdiLowLevelIndCB )
21001 {
21002 /*Notify UMAC*/
21003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21004 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021005
21006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021007}/*WDI_ProcessMissedBeaconInd*/
21008
21009
21010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 an indication of this kind is being received over the
21013 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021014
21015 @param pWDICtx: pointer to the WLAN DAL context
21016 pEventData: pointer to the event information structure
21017
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 @see
21019 @return Result of the function call
21020*/
21021WDI_Status
21022WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021023(
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 WDI_ControlBlockType* pWDICtx,
21025 WDI_EventInfoType* pEventData
21026)
21027{
21028 WDI_Status wdiStatus;
21029 eHalStatus halStatus;
21030 WDI_LowLevelIndType wdiInd;
21031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21032
21033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 -------------------------------------------------------------------------*/
21036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21037 ( NULL == pEventData->pEventData))
21038 {
21039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 }
21044
21045 /*-------------------------------------------------------------------------
21046 Extract indication and send it to UMAC
21047 -------------------------------------------------------------------------*/
21048 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21049 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021050 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021051
21052 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021054 /* ! TO DO - fill in from HAL struct:
21055 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21056
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_ProcessUnkAddrFrameInd*/
21065
21066
21067/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 indication of this kind is being received over the bus
21070 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021071
21072 @param pWDICtx: pointer to the WLAN DAL context
21073 pEventData: pointer to the event information structure
21074
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 @see
21076 @return Result of the function call
21077*/
21078WDI_Status
21079WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021080(
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 WDI_ControlBlockType* pWDICtx,
21082 WDI_EventInfoType* pEventData
21083)
21084{
21085 WDI_LowLevelIndType wdiInd;
21086 tpSirMicFailureInd pHalMicFailureInd;
21087
21088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21089
21090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 -------------------------------------------------------------------------*/
21093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21094 ( NULL == pEventData->pEventData))
21095 {
21096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021101
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21103 /*-------------------------------------------------------------------------
21104 Extract indication and send it to UMAC
21105 -------------------------------------------------------------------------*/
21106
21107 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21110 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21111 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21112 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21113 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21114 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21115 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21116 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021118 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021121 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 pHalMicFailureInd->info.keyId;
21123 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21124 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21125 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21126 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021127
21128 if ( pWDICtx->wdiLowLevelIndCB )
21129 {
21130 /*Notify UMAC*/
21131 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21132 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021133
21134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021135}/*WDI_ProcessMicFailureInd*/
21136
21137
21138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021139 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021140 an indication of this kind is being received over the
21141 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021142
21143 @param pWDICtx: pointer to the WLAN DAL context
21144 pEventData: pointer to the event information structure
21145
Jeff Johnson295189b2012-06-20 16:38:30 -070021146 @see
21147 @return Result of the function call
21148*/
21149WDI_Status
21150WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021151(
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 WDI_ControlBlockType* pWDICtx,
21153 WDI_EventInfoType* pEventData
21154)
21155{
21156 WDI_Status wdiStatus;
21157 eHalStatus halStatus;
21158 WDI_LowLevelIndType wdiInd;
21159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21160
21161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 -------------------------------------------------------------------------*/
21164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21165 ( NULL == pEventData->pEventData))
21166 {
21167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 }
21172
21173 /*-------------------------------------------------------------------------
21174 Extract indication and send it to UMAC
21175 -------------------------------------------------------------------------*/
21176
21177 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21178 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021180
21181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21182 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021183
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21186 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021187
ltimariub77f24b2013-01-24 18:54:33 -080021188 if ( pWDICtx->wdiLowLevelIndCB )
21189 {
21190 /*Notify UMAC*/
21191 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21192 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021193
21194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021195}/*WDI_ProcessFatalErrorInd*/
21196
21197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021198 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021199 an indication of this kind is being received over the
21200 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021201
21202 @param pWDICtx: pointer to the WLAN DAL context
21203 pEventData: pointer to the event information structure
21204
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 @see
21206 @return Result of the function call
21207*/
21208WDI_Status
21209WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021210(
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 WDI_ControlBlockType* pWDICtx,
21212 WDI_EventInfoType* pEventData
21213)
21214{
21215 tDeleteStaContextParams halDelSTACtx;
21216 WDI_LowLevelIndType wdiInd;
21217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21218
21219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 -------------------------------------------------------------------------*/
21222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21223 ( NULL == pEventData->pEventData))
21224 {
21225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 }
21230
21231 /*-------------------------------------------------------------------------
21232 Extract indication and send it to UMAC
21233 -------------------------------------------------------------------------*/
21234
21235 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021236 wpalMemoryCopy( &halDelSTACtx,
21237 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 sizeof(halDelSTACtx));
21239
21240 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021242
21243 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21244 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21245 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21246 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21247
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021250 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21253 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021254
ltimariub77f24b2013-01-24 18:54:33 -080021255 if ( pWDICtx->wdiLowLevelIndCB )
21256 {
21257 /*Notify UMAC*/
21258 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21259 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021260
21261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021262}/*WDI_ProcessDelSTAInd*/
21263
21264/**
21265*@brief Process Coex Indication function (called when
21266 an indication of this kind is being received over the
21267 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021268
21269 @param pWDICtx: pointer to the WLAN DAL context
21270 pEventData: pointer to the event information structure
21271
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 @see
21273 @return Result of the function call
21274*/
21275WDI_Status
21276WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021277(
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 WDI_ControlBlockType* pWDICtx,
21279 WDI_EventInfoType* pEventData
21280)
21281{
21282 WDI_LowLevelIndType wdiInd;
21283 tCoexIndMsg halCoexIndMsg;
21284 wpt_uint32 index;
21285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21286
21287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 -------------------------------------------------------------------------*/
21290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21291 ( NULL == pEventData->pEventData ))
21292 {
21293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 }
21298
21299 /*-------------------------------------------------------------------------
21300 Extract indication and send it to UMAC
21301 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021302 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21303 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 sizeof(halCoexIndMsg.coexIndParams) );
21305
21306 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 wdiInd.wdiIndicationType = WDI_COEX_IND;
21308 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 }
21313
21314 // DEBUG
21315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21316 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21318 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21319 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21320 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21321 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021322
ltimariub77f24b2013-01-24 18:54:33 -080021323 if ( pWDICtx->wdiLowLevelIndCB )
21324 {
21325 /*Notify UMAC*/
21326 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21327 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021328
21329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021330}/*WDI_ProcessCoexInd*/
21331
21332/**
21333*@brief Process Tx Complete Indication function (called when
21334 an indication of this kind is being received over the
21335 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021336
21337 @param pWDICtx: pointer to the WLAN DAL context
21338 pEventData: pointer to the event information structure
21339
Jeff Johnson295189b2012-06-20 16:38:30 -070021340 @see
21341 @return Result of the function call
21342*/
21343WDI_Status
21344WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021345(
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 WDI_ControlBlockType* pWDICtx,
21347 WDI_EventInfoType* pEventData
21348)
21349{
21350 WDI_LowLevelIndType wdiInd;
21351 tTxComplIndMsg halTxComplIndMsg;
21352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21353
21354 /*-------------------------------------------------------------------------
21355 Sanity check
21356 -------------------------------------------------------------------------*/
21357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21358 ( NULL == pEventData->pEventData ))
21359 {
21360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021362 WDI_ASSERT( 0 );
21363 return WDI_STATUS_E_FAILURE;
21364 }
21365
21366 /*-------------------------------------------------------------------------
21367 Extract indication and send it to UMAC
21368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21370 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 sizeof(halTxComplIndMsg.txComplParams) );
21372
21373 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21375 wdiInd.wdiIndicationData.tx_complete_status
21376 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021377
ltimariub77f24b2013-01-24 18:54:33 -080021378 if ( pWDICtx->wdiLowLevelIndCB )
21379 {
21380 /*Notify UMAC*/
21381 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21382 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021383
21384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021385}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021386#ifdef FEATURE_WLAN_TDLS
21387/**
21388*@brief Process TDLS Indication function (called when
21389 an indication of this kind is being received over the
21390 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021391
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021392 @param pWDICtx: pointer to the WLAN DAL context
21393 pEventData: pointer to the event information structure
21394
21395 @see
21396 @return Result of the function call
21397*/
21398WDI_Status
21399WDI_ProcessTdlsInd
21400(
21401 WDI_ControlBlockType* pWDICtx,
21402 WDI_EventInfoType* pEventData
21403)
21404{
21405 WDI_LowLevelIndType wdiInd;
21406 tTdlsIndMsg halTdlsIndMsg;
21407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21408
21409 /*-------------------------------------------------------------------------
21410 Sanity check
21411 -------------------------------------------------------------------------*/
21412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21413 ( NULL == pEventData->pEventData ))
21414 {
21415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21416 "%s: Invalid parameters", __func__);
21417 WDI_ASSERT( 0 );
21418 return WDI_STATUS_E_FAILURE;
21419 }
21420
21421 /*-------------------------------------------------------------------------
21422 Extract indication and send it to UMAC
21423 -------------------------------------------------------------------------*/
21424 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21425 pEventData->pEventData,
21426 sizeof(halTdlsIndMsg.tdlsIndParams) );
21427
21428 /*Fill in the indication parameters*/
21429 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21430
21431 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21432 = halTdlsIndMsg.tdlsIndParams.status;
21433
21434 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21435 = halTdlsIndMsg.tdlsIndParams.staIdx;
21436
21437 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21438 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21439
Atul Mittalbb2aad02014-09-22 19:09:36 +053021440 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21441 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021442 /*Notify UMAC*/
21443 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21444
21445 return WDI_STATUS_SUCCESS;
21446}/*WDI_ProcessTdlsInd*/
21447#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021448/**
Viral Modid86bde22012-12-10 13:09:21 -080021449*@brief Process Noa Start Indication function (called when
21450 an indication of this kind is being received over the
21451 bus from HAL)
21452
21453 @param pWDICtx: pointer to the WLAN DAL context
21454 pEventData: pointer to the event information structure
21455
21456 @see
21457 @return Result of the function call
21458*/
21459WDI_Status
21460WDI_ProcessP2pNoaStartInd
21461(
21462 WDI_ControlBlockType* pWDICtx,
21463 WDI_EventInfoType* pEventData
21464)
21465{
21466 WDI_LowLevelIndType wdiInd;
21467 tNoaStartIndMsg halNoaStartIndMsg;
21468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21469
21470 /*-------------------------------------------------------------------------
21471 Sanity check
21472 -------------------------------------------------------------------------*/
21473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21474 ( NULL == pEventData->pEventData ))
21475 {
21476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21477 "%s: Invalid parameters", __func__);
21478 WDI_ASSERT( 0 );
21479 return WDI_STATUS_E_FAILURE;
21480 }
21481
21482 /*-------------------------------------------------------------------------
21483 Extract indication and send it to UMAC
21484 -------------------------------------------------------------------------*/
21485 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21486 pEventData->pEventData,
21487 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21488
21489 /*Fill in the indication parameters*/
21490 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21491
21492 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21493 = halNoaStartIndMsg.noaStartIndParams.status;
21494
21495 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21496 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21497
21498 /*Notify UMAC*/
21499 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21500
21501 return WDI_STATUS_SUCCESS;
21502}/*WDI_ProcessNoaAttrInd*/
21503
21504/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021505*@brief Process Noa Attr Indication function (called when
21506 an indication of this kind is being received over the
21507 bus from HAL)
21508
21509 @param pWDICtx: pointer to the WLAN DAL context
21510 pEventData: pointer to the event information structure
21511
21512 @see
21513 @return Result of the function call
21514*/
21515WDI_Status
21516WDI_ProcessP2pNoaAttrInd
21517(
21518 WDI_ControlBlockType* pWDICtx,
21519 WDI_EventInfoType* pEventData
21520)
21521{
21522 WDI_LowLevelIndType wdiInd;
21523 tNoaAttrIndMsg halNoaAttrIndMsg;
21524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21525
21526 /*-------------------------------------------------------------------------
21527 Sanity check
21528 -------------------------------------------------------------------------*/
21529 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21530 ( NULL == pEventData->pEventData ))
21531 {
21532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021533 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 WDI_ASSERT( 0 );
21535 return WDI_STATUS_E_FAILURE;
21536 }
21537
21538 /*-------------------------------------------------------------------------
21539 Extract indication and send it to UMAC
21540 -------------------------------------------------------------------------*/
21541 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21542 pEventData->pEventData,
21543 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21544
21545 /*Fill in the indication parameters*/
21546 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021547
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21549 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021550
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21552 = halNoaAttrIndMsg.noaAttrIndParams.index;
21553 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21554 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21555 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21556 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021557
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21559 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21560 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21561 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21562 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21563 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21564 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21565 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021566
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21568 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21569 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21570 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21571 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21572 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21573 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21574 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21575
ltimariub77f24b2013-01-24 18:54:33 -080021576 if ( pWDICtx->wdiLowLevelIndCB )
21577 {
21578 /*Notify UMAC*/
21579 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21580 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021581
21582 return WDI_STATUS_SUCCESS;
21583}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021584
21585/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 an indication of this kind is being received over the
21588 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021589
21590 @param pWDICtx: pointer to the WLAN DAL context
21591 pEventData: pointer to the event information structure
21592
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 @see
21594 @return Result of the function call
21595*/
21596WDI_Status
21597WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021598(
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 WDI_ControlBlockType* pWDICtx,
21600 WDI_EventInfoType* pEventData
21601)
21602{
21603 WDI_LowLevelIndType wdiInd;
21604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021605
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 /*-------------------------------------------------------------------------
21607 Extract indication and send it to UMAC
21608 -------------------------------------------------------------------------*/
21609 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21611
ltimariub77f24b2013-01-24 18:54:33 -080021612 if ( pWDICtx->wdiLowLevelIndCB )
21613 {
21614 /*Notify UMAC*/
21615 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21616 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021617
Jeff Johnsone7245742012-09-05 17:12:55 -070021618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021619}/*WDI_ProcessTxPerHitInd*/
21620
Jeff Johnson295189b2012-06-20 16:38:30 -070021621/**
Yue Mab9c86f42013-08-14 15:59:08 -070021622 @brief Process Periodic Tx Pattern Fw Indication function
21623
21624 @param pWDICtx: pointer to the WLAN DAL context
21625 pEventData: pointer to the event information structure
21626
21627 @see
21628 @return Result of the function call
21629*/
21630WDI_Status
21631WDI_ProcessPeriodicTxPtrnFwInd
21632(
21633 WDI_ControlBlockType* pWDICtx,
21634 WDI_EventInfoType* pEventData
21635)
21636{
21637 WDI_LowLevelIndType wdiInd;
21638
21639 /*-------------------------------------------------------------------------
21640 Sanity check
21641 -------------------------------------------------------------------------*/
21642 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21643 (NULL == pEventData->pEventData))
21644 {
21645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21646 "%s: Invalid parameters", __func__);
21647 WDI_ASSERT(0);
21648 return WDI_STATUS_E_FAILURE;
21649 }
21650
21651 /*-------------------------------------------------------------------------
21652 Extract indication and send it to UMAC
21653 -------------------------------------------------------------------------*/
21654 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21655 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21656 sizeof(tHalPeriodicTxPtrnFwInd));
21657
21658 if (pWDICtx->wdiLowLevelIndCB)
21659 {
21660 /*Notify UMAC*/
21661 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21662 }
21663
21664 return WDI_STATUS_SUCCESS;
21665}
21666
21667/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 @brief WDI_ProcessFTMCommandReq
21669 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021670
21671 @param pWDICtx: pointer to the WLAN DAL context
21672 pEventData: pointer to the event information structure
21673
Jeff Johnson295189b2012-06-20 16:38:30 -070021674 @see
21675 @return Result of the function call
21676*/
21677WDI_Status
21678WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021679(
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 WDI_ControlBlockType* pWDICtx,
21681 WDI_EventInfoType* pEventData
21682)
21683{
21684 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21685 wpt_uint8 *ftmCommandBuffer = NULL;
21686 wpt_uint16 dataOffset;
21687 wpt_uint16 bufferSize;
21688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 -------------------------------------------------------------------------*/
21691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21692 ( NULL == pEventData->pEventData))
21693
21694 {
21695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 }
21700
21701 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21702
21703 /* Get MSG Buffer */
21704 WDI_GetMessageBuffer(pWDICtx,
21705 WDI_FTM_CMD_REQ,
21706 ftmCommandReq->bodyLength,
21707 &ftmCommandBuffer,
21708 &dataOffset,
21709 &bufferSize);
21710
21711 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21712 ftmCommandReq->FTMCommandBody,
21713 ftmCommandReq->bodyLength);
21714
21715 /* Send MSG */
21716 return WDI_SendMsg(pWDICtx,
21717 ftmCommandBuffer,
21718 bufferSize,
21719 pEventData->pCBfnc,
21720 pEventData->pUserData,
21721 WDI_FTM_CMD_RESP);
21722}
21723
21724/**
21725 @brief WDI_ProcessFTMCommandRsp
21726 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021727
21728 @param pWDICtx: pointer to the WLAN DAL context
21729 pEventData: pointer to the event information structure
21730
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 @see
21732 @return Result of the function call
21733*/
21734WDI_Status
21735WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021736(
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 WDI_ControlBlockType* pWDICtx,
21738 WDI_EventInfoType* pEventData
21739)
21740{
21741 WDI_FTMCommandRspCb ftmCMDRspCb;
21742 tProcessPttRspParams *ftmCMDRspData = NULL;
21743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21744
21745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021746 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021747 -------------------------------------------------------------------------*/
21748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21749 ( NULL == pEventData->pEventData))
21750 {
21751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021752 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 }
21756
21757 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21758
21759 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21760
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21762 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21764
21765 /*Notify UMAC*/
21766 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21767
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769}
Jeff Johnson295189b2012-06-20 16:38:30 -070021770/**
21771 @brief WDI_ProcessHalDumpCmdReq
21772 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021773
21774 @param pWDICtx: pointer to the WLAN DAL context
21775 pEventData: pointer to the event information structure
21776
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 @see
21778 @return Result of the function call
21779*/
21780WDI_Status
21781WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021782(
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 WDI_ControlBlockType* pWDICtx,
21784 WDI_EventInfoType* pEventData
21785)
21786{
21787 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21788 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21789 wpt_uint16 usDataOffset = 0;
21790 wpt_uint16 usSendSize = 0;
21791 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021793
21794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 -------------------------------------------------------------------------*/
21797 if (( NULL == pEventData ) ||
21798 ( NULL == pEventData->pEventData) ||
21799 ( NULL == pEventData->pCBfnc ))
21800 {
21801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 }
21806
21807 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21808 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21809
21810 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021819 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021821
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 /*-----------------------------------------------------------------------
21823 Get message buffer
21824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21827 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21830 {
21831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021832 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021833 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 }
21837
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 wpalMemoryCopy( pSendBuffer+usDataOffset,
21839 &halDumpCmdReqMsg.dumpCmdReqParams,
21840 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021841
21842 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021844
21845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21849 wdiHALDumpCmdRspCb, pEventData->pUserData,
21850 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021851}
21852
21853/**
21854 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 Process hal Dump Command Response from HAL, simply route to HDD
21856
21857 @param pWDICtx: pointer to the WLAN DAL context
21858 pEventData: pointer to the event information structure
21859
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 @see
21861 @return Result of the function call
21862*/
21863WDI_Status
21864WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021865(
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 WDI_ControlBlockType* pWDICtx,
21867 WDI_EventInfoType* pEventData
21868)
21869{
21870 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021871 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021872 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21873
21874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021876 -------------------------------------------------------------------------*/
21877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21878 ( NULL == pEventData->pEventData))
21879 {
21880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 }
21885
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021887
21888 /*Initialize the WDI Response structure */
21889 wdiHALDumpCmdRsp.usBufferLen = 0;
21890 wdiHALDumpCmdRsp.pBuffer = NULL;
21891
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021892 wpalMemoryCopy( &halDumpCmdRspParams,
21893 pEventData->pEventData,
21894 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021895
21896 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021897 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021898
21899 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021900 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 {
21902 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021903 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21904 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21905
21906 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21907 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021908 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021910
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 /*Notify UMAC*/
21912 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21913
21914 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21915 {
21916 /* Free the allocated buffer */
21917 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21918 }
21919 return WDI_STATUS_SUCCESS;
21920}
21921
21922/*==========================================================================
21923 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021927==========================================================================*/
21928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 when it wishes to send up a notification like the ones
21931 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021932
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021934
21935 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021937 wctsNotifyCBData: the callback data of the user
21938
Jeff Johnson295189b2012-06-20 16:38:30 -070021939 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021940
21941 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021942*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021943void
Jeff Johnson295189b2012-06-20 16:38:30 -070021944WDI_NotifyMsgCTSCB
21945(
Jeff Johnsone7245742012-09-05 17:12:55 -070021946 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021947 WCTS_NotifyEventType wctsEvent,
21948 void* wctsNotifyCBData
21949)
21950{
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21953
21954 if (NULL == pWDICtx )
21955 {
21956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021959 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 }
21961
21962 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21963 {
21964 /* callback presumably occurred after close */
21965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021966 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 }
21969
21970 if ( WCTS_EVENT_OPEN == wctsEvent )
21971 {
21972 /*Flag must be set atomically as it is checked from incoming request
21973 functions*/
21974 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021976
21977 /*Nothing to do - so try to dequeue any pending request that may have
21978 occurred while we were trying to establish this*/
21979 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 {
21984 /*Flag must be set atomically as it is checked from incoming request
21985 functions*/
21986 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988
21989 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 wpalMutexRelease(&pWDICtx->wptMutex);
21992
21993 /*Notify that the Control Channel is closed */
21994 wpalEventSet(&pWDICtx->wctsActionEvent);
21995 }
21996
21997}/*WDI_NotifyMsgCTSCB*/
21998
21999
22000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 when it wishes to send up a packet received over the
22003 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022004
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022006
22007 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 pMsg: the packet
22009 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022010 wctsRxMsgCBData: the callback data of the user
22011
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022013
22014 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022015*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022016void
22017WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022018(
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 void* pMsg,
22021 wpt_uint32 uLen,
22022 void* wctsRxMsgCBData
22023)
22024{
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 tHalMsgHeader *pHalMsgHeader;
22026 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22029
22030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 ( uLen < sizeof(tHalMsgHeader)))
22035 {
22036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 }
22041
22042 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22043 {
22044 /* callback presumably occurred after close */
22045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022046 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 }
22049
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 context - so no serialization is necessary here
22052 ! - revisit this assumption */
22053
22054 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22055
22056 if ( uLen != pHalMsgHeader->msgLen )
22057 {
22058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22059 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022061 wpalWlanReload();
22062
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 }
22065
22066 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22067
22068 /*The message itself starts after the header*/
22069 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22070 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22071 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22072 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22073
22074
22075 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22076 {
22077 /*Stop the timer as the response was received */
22078 /*!UT - check for potential race conditions between stop and response */
22079 wpalTimerStop(&pWDICtx->wptResponseTimer);
22080 }
22081 /* Check if we receive a response message which is not expected */
22082 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22083 {
22084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22085 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22086 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022087 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22089 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022090
22091 if (gWDICb.bEnableSSR == false)
22092 {
22093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22094 "SSR is not enabled on WDI timeout");
22095 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22096 return;
22097 }
22098 wpalWcnssResetIntr();
22099 /* if this timer fires, it means Riva did not receive the FIQ */
22100 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22101
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 return;
22103 }
22104
22105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22106 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22107
22108 /*Post response event to the state machine*/
22109 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22110
22111}/*WDI_RXMsgCTSCB*/
22112
22113
22114/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022116========================================================================*/
22117
22118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022121
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 @param pWDICtx - pointer to the control block
22123
22124 @return Result of the function call
22125*/
22126WPT_INLINE WDI_Status
22127WDI_CleanCB
22128(
22129 WDI_ControlBlockType* pWDICtx
22130)
22131{
22132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22133
22134 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022135 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022136
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22139 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22140
22141 WDI_ResetAssocSessions( pWDICtx );
22142
22143 return WDI_STATUS_SUCCESS;
22144}/*WDI_CleanCB*/
22145
22146
22147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022149
Jeff Johnsone7245742012-09-05 17:12:55 -070022150
22151 @param pWDICtx: pointer to the WLAN DAL context
22152 pEventData: pointer to the event information structure
22153
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 @see
22155 @return Result of the function call
22156*/
22157WPT_INLINE WDI_Status
22158WDI_ProcessRequest
22159(
22160 WDI_ControlBlockType* pWDICtx,
22161 WDI_EventInfoType* pEventData
22162)
22163{
22164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22165
Jeff Johnsone7245742012-09-05 17:12:55 -070022166 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 already checked these pointers*/
22168
22169 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22170 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022173 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022174 WDI_getReqMsgString(pEventData->wdiRequest),
22175 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22176 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22177 }
22178 else
22179 {
22180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022182 pEventData->wdiRequest);
22183 return WDI_STATUS_E_NOT_IMPLEMENT;
22184 }
22185}/*WDI_ProcessRequest*/
22186
22187
22188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022189 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 prefixes it with a send message header
22192
22193 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 wdiReqType: type of the request being sent
22195 uBufferLen: message buffer len
22196 pMsgBuffer: resulting allocated buffer
22197 pusDataOffset: offset in the buffer where the caller
22198 can start copying its message data
22199 puBufferSize: the resulting buffer size (offset+buff
22200 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022201
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 @see
22203 @return Result of the function call
22204*/
22205WDI_Status
22206WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022207(
22208 WDI_ControlBlockType* pWDICtx,
22209 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 wpt_uint8** pMsgBuffer,
22212 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 wpt_uint16* pusBufferSize
22214)
22215{
22216 tHalMsgHeader halMsgHeader;
22217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22218
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 again*/
22221
22222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022223 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022225 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22227 if ( NULL == *pMsgBuffer )
22228 {
22229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22230 "Unable to allocate message buffer for req %s (%d)",
22231 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 }
22236
22237 /*-------------------------------------------------------------------------
22238 Fill in the message header
22239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022240 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22241 /* Fill msgVersion */
22242#ifdef WLAN_FEATURE_11AC
22243 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022244 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022245 else
22246#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022247 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022248
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22250 *pusDataOffset = sizeof(halMsgHeader);
22251 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22252
22253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022254}/*WDI_GetMessageBuffer*/
22255
22256
22257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 the CB
22261
22262 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022264
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 usSendSize size of the buffer to be sent
22266 pRspCb: response callback - save in the WDI
22267 CB
22268 pUserData: user data associated with the
22269 callback
22270 wdiExpectedResponse: the code of the response that is
22271 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022272
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 @see
22274 @return Result of the function call
22275*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022276WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022277WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022278(
22279 WDI_ControlBlockType* pWDICtx,
22280 wpt_uint8* pSendBuffer,
22281 wpt_uint32 usSendSize,
22282 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 void* pUserData,
22284 WDI_ResponseEnumType wdiExpectedResponse
22285)
22286{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022287 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022288 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22290
22291 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022293 ------------------------------------------------------------------------*/
22294 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 pWDICtx->pfncRspCB = pRspCb;
22296 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022297
22298 /*-----------------------------------------------------------------------
22299 Call the CTS to send this message over - free message afterwards
22300 - notify transport failure
22301 Note: CTS is reponsible for freeing the message buffer.
22302 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022303 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22304 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22305 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022308 "Failed to send message with expected response %s (%d)"
22309 " over the bus - catastrophic failure",
22310 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22311 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022312
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022313 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22314 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022316 else
22317 {
22318 /* even when message was placed in CTS deferred Q, we will treat it
22319 success but log this info
22320 */
22321 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22322 {
22323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22324 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22325 "response %s (%d)",
22326 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22327 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022328 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022329 }
22330 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022331
Jeff Johnsond13512a2012-07-17 11:42:19 -070022332 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 if ( NULL != pWDICtx->wdiReqStatusCB )
22334 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022335 /*Inform originator whether request went through or not*/
22336 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22337 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 pWDICtx->wdiReqStatusCB = NULL;
22339 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022340 callback(wdiStatus, callbackContext);
22341
22342 /*For WDI requests which have registered a request callback,
22343 inform the WDA caller of the same via setting the return value
22344 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22345 end up repeating the functonality in the req callback for the
22346 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022347 if (wdiStatus != WDI_STATUS_SUCCESS)
22348 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022349 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022350 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 }
22352
Jeff Johnsond13512a2012-07-17 11:42:19 -070022353 if ( wdiStatus == WDI_STATUS_SUCCESS )
22354 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 /*Start timer for the expected response */
22356 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022357
22358 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022359 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022360 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022361 }
22362 else
22363 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022364 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022365 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22366 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022367
Jeff Johnsond13512a2012-07-17 11:42:19 -070022368 return wdiStatus;
22369
Jeff Johnson295189b2012-06-20 16:38:30 -070022370}/*WDI_SendMsg*/
22371
22372
22373
22374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 the bus using the control transport and saves some info
22377 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022378
22379 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 pSendBuffer: buffer to be sent
22381 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022382
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 @see
22384 @return Result of the function call
22385*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022386WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022387WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022388(
22389 WDI_ControlBlockType* pWDICtx,
22390 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 wpt_uint32 usSendSize
22392)
22393{
22394 wpt_uint32 uStatus ;
22395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22396
22397 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 Note: CTS is reponsible for freeing the message buffer.
22400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 (void*)pSendBuffer, usSendSize );
22403
22404 /*Inform Upper MAC about the outcome of the request*/
22405 if ( NULL != pWDICtx->wdiReqStatusCB )
22406 {
22407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22408 "Send indication status : %d", uStatus);
22409
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022410 /* even if CTS placed indication into its deferred Q, we treat it
22411 * as success and let CTS drain its queue as per smd interrupt to CTS
22412 */
22413 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 -070022414 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 }
22416
22417 /*If sending of the message failed - it is considered catastrophic and
22418 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022419 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22420 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22421
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 {
22423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022425
22426 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22427 return WDI_STATUS_E_FAILURE;
22428 }
22429
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022431}/*WDI_SendIndication*/
22432
22433
22434/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022435 @brief WDI_DetectedDeviceError - called internally by DAL when
22436 it has detected a failure in the device
22437
22438 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 usErrorCode: error code detected by WDI or received
22440 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022441
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022444*/
22445void
22446WDI_DetectedDeviceError
22447(
22448 WDI_ControlBlockType* pWDICtx,
22449 wpt_uint16 usErrorCode
22450)
22451{
22452 WDI_LowLevelIndType wdiInd;
22453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22454
22455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22456 "Device Error detected code: %d - transitioning to stopped state",
22457 usErrorCode);
22458
Katya Nigamf02ad012014-05-05 16:12:49 +053022459 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22460
Jeff Johnson295189b2012-06-20 16:38:30 -070022461 wpalMutexAcquire(&pWDICtx->wptMutex);
22462
22463 WDI_STATableStop(pWDICtx);
22464
22465 WDI_ResetAssocSessions(pWDICtx);
22466
22467 /*Set the expected state transition to stopped - because the device
22468 experienced a failure*/
22469 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22470
22471 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022473
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022475
22476 /*TO DO: - there should be an attempt to reset the device here*/
22477
22478 wpalMutexRelease(&pWDICtx->wptMutex);
22479
22480 /*------------------------------------------------------------------------
22481 Notify UMAC if a handler is registered
22482 ------------------------------------------------------------------------*/
22483 if (pWDICtx->wdiLowLevelIndCB)
22484 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22486 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022487
22488 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22489 }
22490}/*WDI_DetectedDeviceError*/
22491
22492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 we started on send message has expire - this should
22495 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 reply - trigger catastrophic failure
22497 @param
22498
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022500
22501 @see
22502 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022503*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022504void
Jeff Johnson295189b2012-06-20 16:38:30 -070022505WDI_ResponseTimerCB
22506(
22507 void *pUserData
22508)
22509{
22510 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22512
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022513 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022519 }
22520
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022521 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022522 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022523 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022524
22525 /* If response timer is running at this time that means this timer
22526 * event is not for the last request but rather last-to-last request and
22527 * this timer event has come after we recevied respone for last-to-last
22528 * message
22529 */
22530 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22531 {
22532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22533 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022534 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022535 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22537 "uArchTimeStampTmrStart: %llu seconds, "
22538 "uArchTimeStampTmrExp: %llu seconds",
22539 pWDICtx->uArchTimeStampRspTmrStart,
22540 pWDICtx->uArchTimeStampRspTmrExp);
22541
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022542 return;
22543 }
22544
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022545 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 {
22547
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022550 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022552 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22553 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22555 "uArchTimeStampTmrStart: %llu seconds, "
22556 "uArchTimeStampTmrExp: %llu seconds",
22557 pWDICtx->uArchTimeStampRspTmrStart,
22558 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022559
22560 /* WDI timeout means Riva is not responding or SMD communication to Riva
22561 * is not happening. The only possible way to recover from this error
22562 * is to initiate SSR from APPS.
22563 * There is also an option to re-enable wifi, which will eventually
22564 * trigger SSR
22565 */
22566 if (gWDICb.bEnableSSR == false)
22567 {
22568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22569 "SSR is not enabled on WDI timeout");
22570 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22571 return;
22572 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022573#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022574 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022575 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022576 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022577 if(wpalIsSsrPanicOnFailure())
22578 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022579 } else {
22580 /* if this timer fires, it means Riva did not receive the FIQ */
22581 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022582 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022583#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022584 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22585 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022586#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 }
22588 else
22589 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022591 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022592 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022593 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22594 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22596 "uArchTimeStampTmrStart: %llu seconds, "
22597 "uArchTimeStampTmrExp: %llu seconds",
22598 pWDICtx->uArchTimeStampRspTmrStart,
22599 pWDICtx->uArchTimeStampRspTmrExp);
22600
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 }
22602
22603 return;
22604
22605}/*WDI_ResponseTimerCB*/
22606
22607
22608/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022610
Jeff Johnsone7245742012-09-05 17:12:55 -070022611
22612 @param pWDICtx: pointer to the WLAN DAL context
22613 pEventData: pointer to the event information structure
22614
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 @see
22616 @return Result of the function call
22617*/
22618WPT_INLINE WDI_Status
22619WDI_ProcessResponse
22620(
22621 WDI_ControlBlockType* pWDICtx,
22622 WDI_EventInfoType* pEventData
22623)
22624{
22625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22626
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 already checked these pointers
22629 ! - revisit this assumption */
22630 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22631 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022634 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 WDI_getRespMsgString(pEventData->wdiResponse),
22636 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22637 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22638 }
22639 else
22640 {
22641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 pEventData->wdiResponse);
22644 return WDI_STATUS_E_NOT_IMPLEMENT;
22645 }
22646}/*WDI_ProcessResponse*/
22647
22648
22649/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022651=========================================================================*/
22652
22653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 @brief Utility function used by the DAL Core to help queue a
22655 request that cannot be processed right away.
22656 @param
22657
Jeff Johnson295189b2012-06-20 16:38:30 -070022658 pWDICtx: - pointer to the WDI control block
22659 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022660 queued
22661
22662 @see
22663 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022664*/
22665WDI_Status
22666WDI_QueuePendingReq
22667(
22668 WDI_ControlBlockType* pWDICtx,
22669 WDI_EventInfoType* pEventData
22670)
22671{
Jeff Johnsone7245742012-09-05 17:12:55 -070022672 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022673 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22676
22677 if ( NULL == pEventDataQueue )
22678 {
22679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 WDI_ASSERT(0);
22682 return WDI_STATUS_MEM_FAILURE;
22683 }
22684
22685 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22686 pEventDataQueue->pUserData = pEventData->pUserData;
22687 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22688 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690
22691 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22692 {
22693 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022694
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 if ( NULL == pEventInfo )
22696 {
22697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 WDI_ASSERT(0);
22700 wpalMemoryFree(pEventDataQueue);
22701 return WDI_STATUS_MEM_FAILURE;
22702 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022703
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22705
22706 }
22707 pEventDataQueue->pEventData = pEventInfo;
22708
22709 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022711
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022712 if (eWLAN_PAL_STATUS_E_FAILURE ==
22713 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22714 {
22715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22716 "pEventDataQueue wpal_list_insert_back failed");
22717 WDI_ASSERT(0);
22718 wpalMemoryFree(pEventDataQueue);
22719 wpalMemoryFree(pEventInfo);
22720 return WDI_STATUS_MEM_FAILURE;
22721 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022722
22723 return WDI_STATUS_SUCCESS;
22724}/*WDI_QueuePendingReq*/
22725
22726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 @param
22730
22731 pMsg - pointer to the message
22732
22733 @see
22734 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022735*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022736void
Jeff Johnson295189b2012-06-20 16:38:30 -070022737WDI_PALCtrlMsgCB
22738(
22739 wpt_msg *pMsg
22740)
22741{
22742 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022743 WDI_ControlBlockType* pWDICtx = NULL;
22744 WDI_Status wdiStatus;
22745 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 void* pUserData;
22747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22748
22749 if (( NULL == pMsg )||
22750 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22751 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22752 {
22753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 }
22758
22759 /*Transition back to the state that we had before serialization
22760 - serialization transitions us to BUSY to stop any incomming requests
22761 ! TO DO L: possible race condition here if a request comes in between the
22762 state transition and the post function*/
22763
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022765
22766 /*-----------------------------------------------------------------------
22767 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022768 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 -----------------------------------------------------------------------*/
22770 switch ( pEventData->wdiRequest )
22771 {
22772
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22775 break;
22776
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 case WDI_NV_DOWNLOAD_REQ:
22778 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22779 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22780 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22781 {
22782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022783 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22785 }
22786 else
22787 {
22788 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22789 }
22790
22791 break;
22792
22793 default:
22794 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22795 break;
22796 }/*switch ( pEventData->wdiRequest )*/
22797
22798 if ( WDI_STATUS_SUCCESS != wdiStatus )
22799 {
22800 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22801
22802 if ( NULL != pfnReqStatusCB )
22803 {
22804 /*Fail the request*/
22805 pfnReqStatusCB( wdiStatus, pUserData);
22806 }
22807 }
22808
22809 /* Free data - that was allocated when queueing*/
22810 if( pEventData != NULL )
22811 {
22812 if( pEventData->pEventData != NULL )
22813 {
22814 wpalMemoryFree(pEventData->pEventData);
22815 }
22816 wpalMemoryFree(pEventData);
22817 }
22818
22819 if( pMsg != NULL )
22820 {
22821 wpalMemoryFree(pMsg);
22822 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022823
Jeff Johnson295189b2012-06-20 16:38:30 -070022824}/*WDI_PALCtrlMsgCB*/
22825
22826/**
22827 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 and schedule for execution a pending request
22829 @param
22830
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 pWDICtx: - pointer to the WDI control block
22832 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022833 queued
22834
22835 @see
22836 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022837*/
22838WDI_Status
22839WDI_DequeuePendingReq
22840(
22841 WDI_ControlBlockType* pWDICtx
22842)
22843{
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22848
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022850
22851 if ( NULL == pNode )
22852 {
22853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 return WDI_STATUS_SUCCESS;
22856 }
22857
22858 /*The node actually points to the 1st element inside the Event Data struct -
22859 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022861
22862 /*Serialize processing in the control thread
22863 !TO DO: - check to see if these are all the messages params that need
22864 to be filled in*/
22865 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22866
22867 if ( NULL == palMsg )
22868 {
22869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022870 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022872 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022875 palMsg->callback = WDI_PALCtrlMsgCB;
22876 palMsg->ptr = pEventData;
22877
22878 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022880 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022881
Jeff Johnson295189b2012-06-20 16:38:30 -070022882 /*Transition back to BUSY as we need to handle a queued request*/
22883 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022884
Jeff Johnson295189b2012-06-20 16:38:30 -070022885 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22886
22887 return WDI_STATUS_PENDING;
22888}/*WDI_DequeuePendingReq*/
22889
22890
22891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022893 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022894 away.- The assoc requests will be queued by BSSID
22895 @param
22896
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 pWDICtx: - pointer to the WDI control block
22898 pEventData: pointer to the evnt info that needs to be queued
22899 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022900
22901 @see
22902 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022903*/
22904WDI_Status
22905WDI_QueueNewAssocRequest
22906(
22907 WDI_ControlBlockType* pWDICtx,
22908 WDI_EventInfoType* pEventData,
22909 wpt_macAddr macBSSID
22910)
22911{
Jeff Johnsone7245742012-09-05 17:12:55 -070022912 wpt_uint8 i;
22913 WDI_BSSSessionType* pSession = NULL;
22914 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022915 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 void* pEventInfo;
22917 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022919
Jeff Johnsone7245742012-09-05 17:12:55 -070022920
22921 /*------------------------------------------------------------------------
22922 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 ------------------------------------------------------------------------*/
22924 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22925 {
22926 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22927 {
22928 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 pSession = &pWDICtx->aBSSSessions[i];
22930 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 }
22932 }
22933
22934 if ( i >= WDI_MAX_BSS_SESSIONS )
22935 {
22936 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022939
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 /*------------------------------------------------------------------------
22941 Fill in the BSSID for this session and set the usage flag
22942 ------------------------------------------------------------------------*/
22943 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945
22946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022947 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022948 ------------------------------------------------------------------------*/
22949 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22950 if ( NULL == pEventDataQueue )
22951 {
22952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022953 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022954 WDI_ASSERT(0);
22955 return WDI_STATUS_MEM_FAILURE;
22956 }
22957
22958 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22959 if ( NULL == pSessionIdElement )
22960 {
22961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022962 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 WDI_ASSERT(0);
22964 wpalMemoryFree(pEventDataQueue);
22965 return WDI_STATUS_MEM_FAILURE;
22966 }
22967
22968 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22969 if ( NULL == pEventInfo )
22970 {
22971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022972 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 WDI_ASSERT(0);
22974 wpalMemoryFree(pSessionIdElement);
22975 wpalMemoryFree(pEventDataQueue);
22976 return WDI_STATUS_MEM_FAILURE;
22977 }
22978
22979 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22980 pEventDataQueue->pUserData = pEventData->pUserData;
22981 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22982 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984
22985 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22986 pEventDataQueue->pEventData = pEventInfo;
22987
22988 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022989 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022990
22991 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022993
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022994 if (eWLAN_PAL_STATUS_E_FAILURE ==
22995 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22996 {
22997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22998 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22999 WDI_ASSERT(0);
23000 wpalMemoryFree(pSessionIdElement);
23001 wpalMemoryFree(pEventDataQueue);
23002 wpalMemoryFree(pEventInfo);
23003 return WDI_STATUS_MEM_FAILURE;
23004 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023005
23006 /*We need to maintain a separate list that keeps track of the order in which
23007 the new assoc requests are being queued such that we can start processing
23008 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 pSessionIdElement->ucIndex = i;
23010 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023011
23012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23013 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023014 if (eWLAN_PAL_STATUS_E_FAILURE ==
23015 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23016 {
23017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23018 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23019 WDI_ASSERT(0);
23020 wpalMemoryFree(pSessionIdElement);
23021 wpalMemoryFree(pEventDataQueue);
23022 wpalMemoryFree(pEventInfo);
23023 return WDI_STATUS_MEM_FAILURE;
23024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023025
23026 /*Return pending as this is what the status of the request is since it has
23027 been queued*/
23028 return WDI_STATUS_PENDING;
23029}/*WDI_QueueNewAssocRequest*/
23030
23031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 away.- The assoc requests will be queued by BSSID
23035 @param
23036
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 pWDICtx: - pointer to the WDI control block
23038 pSession: - session in which to queue
23039 pEventData: pointer to the event info that needs to be
23040 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023041
23042 @see
23043 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023044*/
23045WDI_Status
23046WDI_QueueAssocRequest
23047(
23048 WDI_ControlBlockType* pWDICtx,
23049 WDI_BSSSessionType* pSession,
23050 WDI_EventInfoType* pEventData
23051)
23052{
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023057
23058 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 Sanity check
23060 ------------------------------------------------------------------------*/
23061 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23062 {
23063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023065
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 }
23068
23069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 ------------------------------------------------------------------------*/
23072 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23073 if ( NULL == pEventDataQueue )
23074 {
23075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023076 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 WDI_ASSERT(0);
23078 return WDI_STATUS_MEM_FAILURE;
23079 }
23080
23081 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23082 if ( NULL == pEventInfo )
23083 {
23084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23085 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023086 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 WDI_ASSERT(0);
23088 wpalMemoryFree(pEventDataQueue);
23089 return WDI_STATUS_MEM_FAILURE;
23090 }
23091
23092 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23093 pEventDataQueue->pUserData = pEventData->pUserData;
23094 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23095 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 pEventDataQueue->pEventData = pEventInfo;
23098
23099 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23100
23101 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023103
23104 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023106
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023107 if (eWLAN_PAL_STATUS_E_FAILURE ==
23108 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23109 {
23110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23111 "%s: Cannot allocate memory for queueing event data info",
23112 __func__);
23113 WDI_ASSERT(0);
23114 wpalMemoryFree(pEventDataQueue);
23115 wpalMemoryFree(pEventInfo);
23116 return WDI_STATUS_MEM_FAILURE;
23117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023118
23119 /*The result of this operation is pending because the request has been
23120 queued and it will be processed at a later moment in time */
23121 return WDI_STATUS_PENDING;
23122}/*WDI_QueueAssocRequest*/
23123
23124/**
23125 @brief Utility function used by the DAL Core to help dequeue
23126 an association request that was pending
23127 The request will be queued up in front of the main
23128 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 @param
23130
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023132
23133
23134 @see
23135 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023136*/
23137WDI_Status
23138WDI_DequeueAssocRequest
23139(
23140 WDI_ControlBlockType* pWDICtx
23141)
23142{
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 wpt_list_node* pNode = NULL;
23144 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 WDI_BSSSessionType* pSession;
23146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023147
23148 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 Sanity check
23150 ------------------------------------------------------------------------*/
23151 if ( NULL == pWDICtx )
23152 {
23153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023155
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 }
23158
23159 /*------------------------------------------------------------------------
23160 An association has been completed => a new association can occur
23161 Check to see if there are any pending associations ->
23162 If so , transfer all the pending requests into the busy queue for
23163 processing
23164 These requests have arrived prior to the requests in the busy queue
23165 (bc they needed to be processed in order to be placed in this queue)
23166 => they will be placed at the front of the busy queue
23167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023169
23170 if ( NULL == pNode )
23171 {
23172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 return WDI_STATUS_SUCCESS;
23175 }
23176
23177 /*The node actually points to the 1st element inside the Session Id struct -
23178 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023179 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023180
23181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23182 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23183
23184 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23185 {
23186 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023187
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 the front of the main waiting queue for subsequent execution*/
23190 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 while ( NULL != pNode )
23192 {
23193 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023194 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23195 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023197 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 }
23199 else
23200 {
23201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023202 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023203 WPAL_ASSERT(0);
23204 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023207
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23209 wpalMemoryFree(pSessionIdElement);
23210 return WDI_STATUS_SUCCESS;
23211}/*WDI_DequeueAssocRequest*/
23212
23213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 pending requests - all req cb will be called with
23216 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 @param
23218
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023220
23221 @see
23222 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023223*/
23224WDI_Status
23225WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023226(
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 WDI_ControlBlockType* pWDICtx
23228)
23229{
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 void* pUserData;
23234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23235
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023237
23238 /*------------------------------------------------------------------------
23239 Go through all the requests and fail them - this will only be called
23240 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 ------------------------------------------------------------------------*/
23243 while( pNode )
23244 {
23245 /*The node actually points to the 1st element inside the Event Data struct -
23246 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 pEventDataQueue = (WDI_EventInfoType*)pNode;
23248
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23250 if ( NULL != pfnReqStatusCB )
23251 {
23252 /*Fail the request*/
23253 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23254 }
23255 /* Free data - that was allocated when queueing */
23256 if ( pEventDataQueue->pEventData != NULL )
23257 {
23258 wpalMemoryFree(pEventDataQueue->pEventData);
23259 }
23260 wpalMemoryFree(pEventDataQueue);
23261
23262 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23263 {
23264 break;
23265 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 }
23267
Jeff Johnson295189b2012-06-20 16:38:30 -070023268 return WDI_STATUS_SUCCESS;
23269}/*WDI_ClearPendingRequests*/
23270
23271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 @brief Helper routine used to init the BSS Sessions in the WDI control block
23273
23274
23275 @param pWDICtx: pointer to the WLAN DAL context
23276
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 @see
23278*/
23279void
23280WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023281(
Jeff Johnson295189b2012-06-20 16:38:30 -070023282 WDI_ControlBlockType* pWDICtx
23283)
23284{
Jeff Johnsone7245742012-09-05 17:12:55 -070023285 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23287
23288 /*-------------------------------------------------------------------------
23289 No Sanity check
23290 -------------------------------------------------------------------------*/
23291 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23295 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23296 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23297 }
23298}/*WDI_ResetAssocSessions*/
23299
23300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 @brief Helper routine used to find a session based on the BSSID
23302
23303
23304 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 pSession: pointer to the session (if found)
23307
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023309 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023310*/
23311wpt_uint8
23312WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023313(
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 WDI_ControlBlockType* pWDICtx,
23315 wpt_macAddr macBSSID,
23316 WDI_BSSSessionType** ppSession
23317)
23318{
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23321
23322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 -------------------------------------------------------------------------*/
23325 if ( NULL == ppSession )
23326 {
23327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023328 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 }
23331
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 /*------------------------------------------------------------------------
23335 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023336 ------------------------------------------------------------------------*/
23337 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23338 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023339 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23340 (eWLAN_PAL_TRUE ==
23341 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23342 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 {
23344 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023346 return i;
23347 }
23348 }
23349
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351}/*WDI_FindAssocSession*/
23352
23353/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 @brief Helper routine used to find a session based on the BSSID
23355
23356
23357 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 ucBSSIdx: BSS Index of the session
23359 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023360
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023363*/
23364wpt_uint8
23365WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023366(
Jeff Johnson295189b2012-06-20 16:38:30 -070023367 WDI_ControlBlockType* pWDICtx,
23368 wpt_uint16 ucBSSIdx,
23369 WDI_BSSSessionType** ppSession
23370)
23371{
Jeff Johnsone7245742012-09-05 17:12:55 -070023372 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23374
23375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 -------------------------------------------------------------------------*/
23378 if ( NULL == ppSession )
23379 {
23380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023381 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 }
23384
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 /*------------------------------------------------------------------------
23388 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 ------------------------------------------------------------------------*/
23390 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23391 {
23392 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23393 {
23394 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 return i;
23397 }
23398 }
23399
Jeff Johnsone7245742012-09-05 17:12:55 -070023400 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023401}/*WDI_FindAssocSessionByBSSIdx*/
23402
23403/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 @brief Helper routine used to find a session based on the BSSID
23405
23406
23407 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 ucBSSIdx: BSS Index of the session
23409 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023410
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023413*/
23414wpt_uint8
23415WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023416(
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 WDI_ControlBlockType* pWDICtx,
23418 wpt_uint16 usIdx,
23419 WDI_BSSSessionType** ppSession
23420)
23421{
23422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23423
23424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 -------------------------------------------------------------------------*/
23427 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23428 {
23429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023430 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023431 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 }
23433
23434 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023435 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023436
23437 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023438
Jeff Johnson295189b2012-06-20 16:38:30 -070023439}/*WDI_FindAssocSessionByBSSIdx*/
23440
23441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023444
23445
23446 @param pWDICtx: pointer to the WLAN DAL context
23447 pSession: pointer to the session (if found)
23448
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023450 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023451*/
23452wpt_uint8
23453WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023454(
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 WDI_ControlBlockType* pWDICtx,
23456 WDI_BSSSessionType** ppSession
23457)
23458{
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023463 -------------------------------------------------------------------------*/
23464 if ( NULL == ppSession )
23465 {
23466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023467 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 }
23470
Jeff Johnsone7245742012-09-05 17:12:55 -070023471 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 /*------------------------------------------------------------------------
23474 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 ------------------------------------------------------------------------*/
23476 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23477 {
23478 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23479 {
23480 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 return i;
23483 }
23484 }
23485
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487}/*WDI_FindEmptySession*/
23488
23489
23490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023491 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023493
23494
23495 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023496 macBSSID: pointer to BSSID. If NULL, get all the session.
23497 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23498 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23499 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 @see
23501 @return Number of sessions in use
23502*/
23503wpt_uint8
23504WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023505(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023506 WDI_ControlBlockType* pWDICtx,
23507 wpt_macAddr macBSSID,
23508 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023509)
23510{
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023513
23514 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 Count all sessions in use
23516 ------------------------------------------------------------------------*/
23517 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23518 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023519 if ( macBSSID && skipBSSID &&
23520 (eWLAN_PAL_TRUE ==
23521 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23522 WDI_MAC_ADDR_LEN)))
23523 {
23524 continue;
23525 }
23526 else if ( pWDICtx->aBSSSessions[i].bInUse )
23527 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023529 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 }
23531
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023533}/*WDI_GetActiveSessionsCount*/
23534
23535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023538
23539
23540 @param pWDICtx: pointer to the WLAN DAL context
23541 pSession: pointer to the session (if found)
23542
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023545*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023546void
Jeff Johnson295189b2012-06-20 16:38:30 -070023547WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023548(
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 WDI_ControlBlockType* pWDICtx,
23550 WDI_BSSSessionType* ppSession
23551)
23552{
23553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 -------------------------------------------------------------------------*/
23556 if ( NULL == ppSession )
23557 {
23558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023559 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023560 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023561 }
23562
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 /*------------------------------------------------------------------------
23564 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 ------------------------------------------------------------------------*/
23566 wpal_list_destroy(&ppSession->wptPendingQueue);
23567 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23569 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23571 wpal_list_init(&ppSession->wptPendingQueue);
23572
23573}/*WDI_DeleteSession*/
23574
23575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023577 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023578 @param
23579
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 WDI_AddStaParams: - pointer to the WDI Add STA params
23581 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023582
23583 @see
23584 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023585*/
23586void
23587WDI_AddBcastSTAtoSTATable
23588(
23589 WDI_ControlBlockType* pWDICtx,
23590 WDI_AddStaParams * staParams,
23591 wpt_uint16 usBcastStaIdx
23592)
23593{
23594 WDI_AddStaParams wdiAddSTAParam = {0};
23595 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23597
23598 /*---------------------------------------------------------------------
23599 Sanity check
23600 ---------------------------------------------------------------------*/
23601 if ( NULL == staParams )
23602 {
23603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023604 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023605
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 }
23608
23609 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23610 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23611 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23612 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23613 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23614 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23615 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23616 WDI_MAC_ADDR_LEN );
23617 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23618 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23619 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23620 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23621 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23622 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23623 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023624
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23626}
23627
23628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 @brief NV blob will be divided into fragments of size 4kb and
23630 Sent to HAL
23631
23632 @param pWDICtx: pointer to the WLAN DAL context
23633 pEventData: pointer to the event information structure
23634
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 @see
23636 @return Result of the function call
23637 */
23638
23639WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023640(
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 WDI_ControlBlockType* pWDICtx,
23642 WDI_EventInfoType* pEventData
23643)
23644{
23645
23646 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23647 wpt_uint8* pSendBuffer = NULL;
23648 wpt_uint16 usDataOffset = 0;
23649 wpt_uint16 usSendSize = 0;
23650 wpt_uint16 usCurrentFragmentSize =0;
23651 wpt_uint8* pSrcBuffer = NULL;
23652 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23653 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23654
23655 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23656 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23657 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23658
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23661
23662 /* Update the current Fragment Number */
23663 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23664
23665 /*Update the HAL REQ structure */
23666 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23667 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23668 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23669
23670 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 image will be sent to HAL*/
23673
Jeff Johnsone7245742012-09-05 17:12:55 -070023674 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023676 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023677 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23680 usCurrentFragmentSize = FRAGMENT_SIZE;
23681
23682 /*Update the HAL REQ structure */
23683 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23684 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23685
23686 }
23687 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 usCurrentFragmentSize = FRAGMENT_SIZE;
23690
23691 /*Update the HAL REQ structure */
23692 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23693 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23694 }
23695
23696 /*-----------------------------------------------------------------------
23697 Get message buffer
23698 -----------------------------------------------------------------------*/
23699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23700 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23701 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23704 {
23705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023706 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 pEventData, pwdiNvDownloadReqParams);
23708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 }
23711
23712 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023714 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23715
23716 /* Appending the NV image fragment */
23717 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23718 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23719 usCurrentFragmentSize);
23720
23721 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23725 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 WDI_NV_DOWNLOAD_RESP);
23727
23728}
Jeff Johnsone7245742012-09-05 17:12:55 -070023729/*============================================================================
23730 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 ============================================================================*/
23732/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 @brief Helper routine used to find a session based on the BSSID
23734 @param pContext: pointer to the WLAN DAL context
23735 @param pDPContext: pointer to the Datapath context
23736
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023739*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023740WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023741WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23742{
23743 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23744
23745 pCB->pDPContext = pDPContext;
23746 return;
23747}
23748
23749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023750 @brief Helper routine used to find a session based on the BSSID
23751
23752
23753 @param pContext: pointer to the WLAN DAL context
23754
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 @see
23756 @return pointer to Datapath context
23757*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023758WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023759WDI_DS_GetDatapathContext (void *pContext)
23760{
23761 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23762 return pCB->pDPContext;
23763}
23764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 @brief Helper routine used to find a session based on the BSSID
23766
23767
23768 @param pContext: pointer to the WLAN DAL context
23769 @param pDTDriverContext: pointer to the Transport Driver context
23770
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 @see
23772 @return void
23773*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023774WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023775WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23776{
23777 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23778
23779 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023780 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023781}
23782
23783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023784 @brief Helper routine used to find a session based on the BSSID
23785
23786
23787 @param pWDICtx: pointer to the WLAN DAL context
23788
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023791*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023792WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023793WDT_GetTransportDriverContext (void *pContext)
23794{
23795 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023797}
23798
Jeff Johnsone7245742012-09-05 17:12:55 -070023799/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 Helper inline converters
23801 ============================================================================*/
23802/*Convert WDI driver type into HAL driver type*/
23803WPT_STATIC WPT_INLINE WDI_Status
23804WDI_HAL_2_WDI_STATUS
23805(
23806 eHalStatus halStatus
23807)
23808{
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 the chances of getting inlined*/
23811 switch( halStatus )
23812 {
23813 case eHAL_STATUS_SUCCESS:
23814 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23815 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23816 return WDI_STATUS_SUCCESS;
23817 case eHAL_STATUS_FAILURE:
23818 return WDI_STATUS_E_FAILURE;
23819 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 return WDI_STATUS_MEM_FAILURE;
23821 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 default:
23824 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23825 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023826
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828}/*WDI_HAL_2_WDI_STATUS*/
23829
23830/*Convert WDI request type into HAL request type*/
23831WPT_STATIC WPT_INLINE tHalHostMsgType
23832WDI_2_HAL_REQ_TYPE
23833(
23834 WDI_RequestEnumType wdiReqType
23835)
23836{
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 the chances of getting inlined*/
23839 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023840 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023846 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023847 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023851 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023862 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023863 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023864 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 return WLAN_HAL_RMV_STAKEY_REQ;
23876 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 case WDI_DEL_BA_REQ:
23885 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023886#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 case WDI_TSM_STATS_REQ:
23888 return WLAN_HAL_TSM_STATS_REQ;
23889#endif
23890 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023892 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023893 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023897 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023898 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023899 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 case WDI_ADD_BA_SESSION_REQ:
23901 return WLAN_HAL_ADD_BA_SESSION_REQ;
23902 case WDI_TRIGGER_BA_REQ:
23903 return WLAN_HAL_TRIGGER_BA_REQ;
23904 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23909 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23910 case WDI_SET_MAX_TX_POWER_REQ:
23911 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023912 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23913 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023914 case WDI_SET_TX_POWER_REQ:
23915 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23917 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023918#ifdef FEATURE_WLAN_TDLS
23919 case WDI_TDLS_LINK_ESTABLISH_REQ:
23920 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023921 case WDI_TDLS_CHAN_SWITCH_REQ:
23922 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023923#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023927 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023928 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023941 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023943 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 case WDI_REM_BEACON_FILTER_REQ:
23945 return WLAN_HAL_REM_BCN_FILTER_REQ;
23946 case WDI_SET_RSSI_THRESHOLDS_REQ:
23947 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23948 case WDI_HOST_OFFLOAD_REQ:
23949 return WLAN_HAL_HOST_OFFLOAD_REQ;
23950 case WDI_WOWL_ADD_BC_PTRN_REQ:
23951 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23952 case WDI_WOWL_DEL_BC_PTRN_REQ:
23953 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23954 case WDI_WOWL_ENTER_REQ:
23955 return WLAN_HAL_ENTER_WOWL_REQ;
23956 case WDI_WOWL_EXIT_REQ:
23957 return WLAN_HAL_EXIT_WOWL_REQ;
23958 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23959 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23960 case WDI_NV_DOWNLOAD_REQ:
23961 return WLAN_HAL_DOWNLOAD_NV_REQ;
23962 case WDI_FLUSH_AC_REQ:
23963 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23964 case WDI_BTAMP_EVENT_REQ:
23965 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23966#ifdef WLAN_FEATURE_VOWIFI_11R
23967 case WDI_AGGR_ADD_TS_REQ:
23968 return WLAN_HAL_AGGR_ADD_TS_REQ;
23969#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 case WDI_FTM_CMD_REQ:
23971 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 case WDI_ADD_STA_SELF_REQ:
23973 return WLAN_HAL_ADD_STA_SELF_REQ;
23974 case WDI_DEL_STA_SELF_REQ:
23975 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023976#ifdef FEATURE_OEM_DATA_SUPPORT
23977 case WDI_START_OEM_DATA_REQ:
23978 return WLAN_HAL_START_OEM_DATA_REQ;
23979#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 case WDI_HOST_RESUME_REQ:
23981 return WLAN_HAL_HOST_RESUME_REQ;
23982 case WDI_HOST_SUSPEND_IND:
23983 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023984 case WDI_TRAFFIC_STATS_IND:
23985 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023986#ifdef WLAN_FEATURE_11W
23987 case WDI_EXCLUDE_UNENCRYPTED_IND:
23988 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23989#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023990 case WDI_KEEP_ALIVE_REQ:
23991 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023992#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023993 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23994 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023995#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023996#ifdef FEATURE_WLAN_SCAN_PNO
23997 case WDI_SET_PREF_NETWORK_REQ:
23998 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23999 case WDI_SET_RSSI_FILTER_REQ:
24000 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24001 case WDI_UPDATE_SCAN_PARAMS_REQ:
24002 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24003#endif // FEATURE_WLAN_SCAN_PNO
24004 case WDI_SET_TX_PER_TRACKING_REQ:
24005 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24006#ifdef WLAN_FEATURE_PACKET_FILTERING
24007 case WDI_8023_MULTICAST_LIST_REQ:
24008 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24009 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24012 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24013 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24014 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24015#endif // WLAN_FEATURE_PACKET_FILTERING
24016 case WDI_HAL_DUMP_CMD_REQ:
24017 return WLAN_HAL_DUMP_COMMAND_REQ;
24018#ifdef WLAN_FEATURE_GTK_OFFLOAD
24019 case WDI_GTK_OFFLOAD_REQ:
24020 return WLAN_HAL_GTK_OFFLOAD_REQ;
24021 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24022 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24023#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24024
24025 case WDI_INIT_SCAN_CON_REQ:
24026 return WLAN_HAL_INIT_SCAN_CON_REQ;
24027 case WDI_SET_POWER_PARAMS_REQ:
24028 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24029 case WDI_SET_TM_LEVEL_REQ:
24030 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24031 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24032 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024033#ifdef WLAN_FEATURE_11AC
24034 case WDI_UPDATE_VHT_OP_MODE_REQ:
24035 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24036#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024037 case WDI_GET_ROAM_RSSI_REQ:
24038 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024039 case WDI_DHCP_START_IND:
24040 return WLAN_HAL_DHCP_START_IND;
24041 case WDI_DHCP_STOP_IND:
24042 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024043#ifdef FEATURE_WLAN_LPHB
24044 case WDI_LPHB_CFG_REQ:
24045 return WLAN_HAL_LPHB_CFG_REQ;
24046#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024047 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24048 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24049 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24050 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24051
Rajeev79dbe4c2013-10-05 11:03:42 +053024052#ifdef FEATURE_WLAN_BATCH_SCAN
24053 case WDI_SET_BATCH_SCAN_REQ:
24054 return WLAN_HAL_BATCHSCAN_SET_REQ;
24055 case WDI_STOP_BATCH_SCAN_IND:
24056 return WLAN_HAL_BATCHSCAN_STOP_IND;
24057 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24058 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24059#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024060 case WDI_RATE_UPDATE_IND:
24061 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024062 case WDI_START_HT40_OBSS_SCAN_IND:
24063 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24064 case WDI_STOP_HT40_OBSS_SCAN_IND:
24065 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024066 case WDI_UPDATE_CHAN_REQ:
24067 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024068 case WDI_CH_SWITCH_REQ_V1:
24069 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024070 case WDI_GET_BCN_MISS_RATE_REQ:
24071 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024072
24073#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24074 case WDI_LL_STATS_SET_REQ:
24075 return WLAN_HAL_LL_SET_STATS_REQ;
24076 case WDI_LL_STATS_GET_REQ:
24077 return WLAN_HAL_LL_GET_STATS_REQ;
24078 case WDI_LL_STATS_CLEAR_REQ:
24079 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24080#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024081#ifdef WLAN_FEATURE_EXTSCAN
24082 case WDI_EXTSCAN_START_REQ:
24083 return WLAN_HAL_EXT_SCAN_START_REQ;
24084 case WDI_EXTSCAN_STOP_REQ:
24085 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24086 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24087 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24088 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24089 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24090 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24091 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24092 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24093 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24094 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24095 return WLAN_HAL_SIG_RSSI_SET_REQ;
24096 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24097 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24098#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024099 case WDI_SPOOF_MAC_ADDR_REQ:
24100 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024101 case WDI_GET_FW_STATS_REQ:
24102 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024103 case WDI_ENCRYPT_MSG_REQ:
24104 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024105 case WDI_MGMT_LOGGING_INIT_REQ:
24106 return WLAN_HAL_MGMT_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024107 case WDI_GET_FRAME_LOG_REQ:
24108 return WLAN_HAL_GET_FRAME_LOG_REQ;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024109
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024113
Jeff Johnson295189b2012-06-20 16:38:30 -070024114}/*WDI_2_HAL_REQ_TYPE*/
24115
24116/*Convert WDI response type into HAL response type*/
24117WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24118HAL_2_WDI_RSP_TYPE
24119(
24120 tHalHostMsgType halMsg
24121)
24122{
Jeff Johnsone7245742012-09-05 17:12:55 -070024123 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 the chances of getting inlined*/
24125 switch( halMsg )
24126 {
24127 case WLAN_HAL_START_RSP:
24128 return WDI_START_RESP;
24129 case WLAN_HAL_STOP_RSP:
24130 return WDI_STOP_RESP;
24131 case WLAN_HAL_INIT_SCAN_RSP:
24132 return WDI_INIT_SCAN_RESP;
24133 case WLAN_HAL_START_SCAN_RSP:
24134 return WDI_START_SCAN_RESP;
24135 case WLAN_HAL_END_SCAN_RSP:
24136 return WDI_END_SCAN_RESP;
24137 case WLAN_HAL_FINISH_SCAN_RSP:
24138 return WDI_FINISH_SCAN_RESP;
24139 case WLAN_HAL_CONFIG_STA_RSP:
24140 return WDI_CONFIG_STA_RESP;
24141 case WLAN_HAL_DELETE_STA_RSP:
24142 return WDI_DEL_STA_RESP;
24143 case WLAN_HAL_CONFIG_BSS_RSP:
24144 return WDI_CONFIG_BSS_RESP;
24145 case WLAN_HAL_DELETE_BSS_RSP:
24146 return WDI_DEL_BSS_RESP;
24147 case WLAN_HAL_JOIN_RSP:
24148 return WDI_JOIN_RESP;
24149 case WLAN_HAL_POST_ASSOC_RSP:
24150 return WDI_POST_ASSOC_RESP;
24151 case WLAN_HAL_SET_BSSKEY_RSP:
24152 return WDI_SET_BSS_KEY_RESP;
24153 case WLAN_HAL_SET_STAKEY_RSP:
24154 return WDI_SET_STA_KEY_RESP;
24155 case WLAN_HAL_RMV_BSSKEY_RSP:
24156 return WDI_RMV_BSS_KEY_RESP;
24157 case WLAN_HAL_RMV_STAKEY_RSP:
24158 return WDI_RMV_STA_KEY_RESP;
24159 case WLAN_HAL_SET_BCASTKEY_RSP:
24160 return WDI_SET_STA_BCAST_KEY_RESP;
24161 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24162 // return WDI_RMV_STA_BCAST_KEY_RESP;
24163 case WLAN_HAL_ADD_TS_RSP:
24164 return WDI_ADD_TS_RESP;
24165 case WLAN_HAL_DEL_TS_RSP:
24166 return WDI_DEL_TS_RESP;
24167 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24168 return WDI_UPD_EDCA_PRMS_RESP;
24169 case WLAN_HAL_ADD_BA_RSP:
24170 return WDI_ADD_BA_RESP;
24171 case WLAN_HAL_DEL_BA_RSP:
24172 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024173#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024174 case WLAN_HAL_TSM_STATS_RSP:
24175 return WDI_TSM_STATS_RESP;
24176#endif
24177 case WLAN_HAL_CH_SWITCH_RSP:
24178 return WDI_CH_SWITCH_RESP;
24179 case WLAN_HAL_SET_LINK_ST_RSP:
24180 return WDI_SET_LINK_ST_RESP;
24181 case WLAN_HAL_GET_STATS_RSP:
24182 return WDI_GET_STATS_RESP;
24183 case WLAN_HAL_UPDATE_CFG_RSP:
24184 return WDI_UPDATE_CFG_RESP;
24185 case WLAN_HAL_ADD_BA_SESSION_RSP:
24186 return WDI_ADD_BA_SESSION_RESP;
24187 case WLAN_HAL_TRIGGER_BA_RSP:
24188 return WDI_TRIGGER_BA_RESP;
24189 case WLAN_HAL_UPDATE_BEACON_RSP:
24190 return WDI_UPD_BCON_PRMS_RESP;
24191 case WLAN_HAL_SEND_BEACON_RSP:
24192 return WDI_SND_BCON_RESP;
24193 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24194 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24195 /*Indications*/
24196 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24197 return WDI_HAL_RSSI_NOTIFICATION_IND;
24198 case WLAN_HAL_MISSED_BEACON_IND:
24199 return WDI_HAL_MISSED_BEACON_IND;
24200 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24201 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24202 case WLAN_HAL_MIC_FAILURE_IND:
24203 return WDI_HAL_MIC_FAILURE_IND;
24204 case WLAN_HAL_FATAL_ERROR_IND:
24205 return WDI_HAL_FATAL_ERROR_IND;
24206 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24207 return WDI_HAL_DEL_STA_IND;
24208 case WLAN_HAL_COEX_IND:
24209 return WDI_HAL_COEX_IND;
24210 case WLAN_HAL_OTA_TX_COMPL_IND:
24211 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024212 case WLAN_HAL_P2P_NOA_ATTR_IND:
24213 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024214 case WLAN_HAL_P2P_NOA_START_IND:
24215 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024216 case WLAN_HAL_DEL_BA_IND:
24217 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 case WLAN_HAL_TX_PER_HIT_IND:
24219 return WDI_HAL_TX_PER_HIT_IND;
24220 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24221 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024222 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24223 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024224 case WLAN_HAL_SET_TX_POWER_RSP:
24225 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226 case WLAN_HAL_SET_P2P_GONOA_RSP:
24227 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024228#ifdef FEATURE_WLAN_TDLS
24229 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24230 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024231 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24232 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024233 case WLAN_HAL_TDLS_IND:
24234 return WDI_HAL_TDLS_IND;
24235#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024253 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24255 return WDI_SET_BEACON_FILTER_RESP;
24256 case WLAN_HAL_REM_BCN_FILTER_RSP:
24257 return WDI_REM_BEACON_FILTER_RESP;
24258 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24259 return WDI_SET_RSSI_THRESHOLDS_RESP;
24260 case WLAN_HAL_HOST_OFFLOAD_RSP:
24261 return WDI_HOST_OFFLOAD_RESP;
24262 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24263 return WDI_WOWL_ADD_BC_PTRN_RESP;
24264 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24265 return WDI_WOWL_DEL_BC_PTRN_RESP;
24266 case WLAN_HAL_ENTER_WOWL_RSP:
24267 return WDI_WOWL_ENTER_RESP;
24268 case WLAN_HAL_EXIT_WOWL_RSP:
24269 return WDI_WOWL_EXIT_RESP;
24270 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24271 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24272 case WLAN_HAL_DOWNLOAD_NV_RSP:
24273 return WDI_NV_DOWNLOAD_RESP;
24274 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24275 return WDI_FLUSH_AC_RESP;
24276 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24277 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 case WLAN_HAL_PROCESS_PTT_RSP:
24279 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 case WLAN_HAL_ADD_STA_SELF_RSP:
24281 return WDI_ADD_STA_SELF_RESP;
24282case WLAN_HAL_DEL_STA_SELF_RSP:
24283 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024284#ifdef FEATURE_OEM_DATA_SUPPORT
24285 case WLAN_HAL_START_OEM_DATA_RSP:
24286 return WDI_START_OEM_DATA_RESP;
24287#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 case WLAN_HAL_HOST_RESUME_RSP:
24289 return WDI_HOST_RESUME_RESP;
24290 case WLAN_HAL_KEEP_ALIVE_RSP:
24291 return WDI_KEEP_ALIVE_RESP;
24292#ifdef FEATURE_WLAN_SCAN_PNO
24293 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24294 return WDI_SET_PREF_NETWORK_RESP;
24295 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24298 return WDI_UPDATE_SCAN_PARAMS_RESP;
24299 case WLAN_HAL_PREF_NETW_FOUND_IND:
24300 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24301#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024302#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024303 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24304 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024305#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24307 return WDI_SET_TX_PER_TRACKING_RESP;
24308#ifdef WLAN_FEATURE_PACKET_FILTERING
24309 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24310 return WDI_8023_MULTICAST_LIST_RESP;
24311 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24312 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24313 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24314 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24315 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24316 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24317#endif // WLAN_FEATURE_PACKET_FILTERING
24318
24319 case WLAN_HAL_DUMP_COMMAND_RSP:
24320 return WDI_HAL_DUMP_CMD_RESP;
24321 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24322 return WDI_SET_POWER_PARAMS_RESP;
24323#ifdef WLAN_FEATURE_VOWIFI_11R
24324 case WLAN_HAL_AGGR_ADD_TS_RSP:
24325 return WDI_AGGR_ADD_TS_RESP;
24326#endif
24327
24328#ifdef WLAN_FEATURE_GTK_OFFLOAD
24329 case WLAN_HAL_GTK_OFFLOAD_RSP:
24330 return WDI_GTK_OFFLOAD_RESP;
24331 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24332 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24333#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24334#ifdef WLAN_WAKEUP_EVENTS
24335 case WLAN_HAL_WAKE_REASON_IND:
24336 return WDI_HAL_WAKE_REASON_IND;
24337#endif // WLAN_WAKEUP_EVENTS
24338
24339 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24340 return WDI_SET_TM_LEVEL_RESP;
24341 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24342 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024343#ifdef WLAN_FEATURE_11AC
24344 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24345 return WDI_UPDATE_VHT_OP_MODE_RESP;
24346#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024347#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024348 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24349 return WDI_GET_ROAM_RSSI_RESP;
24350#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024351
Leo Chang9056f462013-08-01 19:21:11 -070024352#ifdef FEATURE_WLAN_LPHB
24353 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024354 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024355 case WLAN_HAL_LPHB_CFG_RSP:
24356 return WDI_LPHB_CFG_RESP;
24357#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024358
24359 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24360 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024361 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24362 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024363
Rajeev79dbe4c2013-10-05 11:03:42 +053024364#ifdef FEATURE_WLAN_BATCH_SCAN
24365 case WLAN_HAL_BATCHSCAN_SET_RSP:
24366 return WDI_SET_BATCH_SCAN_RESP;
24367 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24368 return WDI_BATCHSCAN_RESULT_IND;
24369#endif // FEATURE_WLAN_BATCH_SCAN
24370
Leo Chang0b0e45a2013-12-15 15:18:55 -080024371#ifdef FEATURE_WLAN_CH_AVOID
24372 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24373 return WDI_HAL_CH_AVOID_IND;
24374#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024375 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24376 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024377 case WLAN_HAL_PRINT_REG_INFO_IND:
24378 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024379 case WLAN_HAL_CH_SWITCH_V1_RSP:
24380 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024381 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24382 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024383#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24384 case WLAN_HAL_LL_SET_STATS_RSP:
24385 return WDI_LL_STATS_SET_RSP;
24386 case WLAN_HAL_LL_GET_STATS_RSP:
24387 return WDI_LL_STATS_GET_RSP;
24388 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24389 return WDI_LL_STATS_CLEAR_RSP;
24390 case WLAN_HAL_LL_NOTIFY_STATS:
24391 return WDI_HAL_LL_STATS_RESULTS_IND;
24392#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024393#ifdef WLAN_FEATURE_EXTSCAN
24394 case WLAN_HAL_EXT_SCAN_START_RSP:
24395 return WDI_EXTSCAN_START_RSP;
24396 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24397 return WDI_EXTSCAN_STOP_RSP;
24398 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24399 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24400 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24401 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24402 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24403 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24404 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24405 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24406 case WLAN_HAL_SIG_RSSI_SET_RSP:
24407 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24408 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24409 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24410 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24411 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24412 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24413 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24414 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24415 return WDI_HAL_EXTSCAN_RESULT_IND;
24416 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24417 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24418 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24419 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24420#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024421 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24422 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024423 case WLAN_HAL_FW_STATS_RSP:
24424 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024425 case WLAN_HAL_ENCRYPT_DATA_RSP:
24426 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053024427 case WLAN_HAL_MGMT_LOGGING_INIT_RSP:
24428 return WDI_MGMT_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024429 case WLAN_HAL_GET_FRAME_LOG_RSP:
24430 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024431
Jeff Johnson295189b2012-06-20 16:38:30 -070024432 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024433 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 }
24435
24436}/*HAL_2_WDI_RSP_TYPE*/
24437
24438
24439/*Convert WDI driver type into HAL driver type*/
24440WPT_STATIC WPT_INLINE tDriverType
24441WDI_2_HAL_DRV_TYPE
24442(
24443 WDI_DriverType wdiDriverType
24444)
24445{
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024447 the chances of getting inlined*/
24448 switch( wdiDriverType )
24449 {
24450 case WDI_DRIVER_TYPE_PRODUCTION:
24451 return eDRIVER_TYPE_PRODUCTION;
24452 case WDI_DRIVER_TYPE_MFG:
24453 return eDRIVER_TYPE_MFG;
24454 case WDI_DRIVER_TYPE_DVT:
24455 return eDRIVER_TYPE_DVT;
24456 }
24457
Jeff Johnsone7245742012-09-05 17:12:55 -070024458 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024459}/*WDI_2_HAL_DRV_TYPE*/
24460
24461
24462/*Convert WDI stop reason into HAL stop reason*/
24463WPT_STATIC WPT_INLINE tHalStopType
24464WDI_2_HAL_STOP_REASON
24465(
24466 WDI_StopType wdiDriverType
24467)
24468{
Jeff Johnsone7245742012-09-05 17:12:55 -070024469 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 the chances of getting inlined*/
24471 switch( wdiDriverType )
24472 {
24473 case WDI_STOP_TYPE_SYS_RESET:
24474 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024475 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24476 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 case WDI_STOP_TYPE_RF_KILL:
24478 return HAL_STOP_TYPE_RF_KILL;
24479 }
24480
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024482}/*WDI_2_HAL_STOP_REASON*/
24483
24484
24485/*Convert WDI scan mode type into HAL scan mode type*/
24486WPT_STATIC WPT_INLINE eHalSysMode
24487WDI_2_HAL_SCAN_MODE
24488(
24489 WDI_ScanMode wdiScanMode
24490)
24491{
Jeff Johnsone7245742012-09-05 17:12:55 -070024492 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024493 the chances of getting inlined*/
24494 switch( wdiScanMode )
24495 {
24496 case WDI_SCAN_MODE_NORMAL:
24497 return eHAL_SYS_MODE_NORMAL;
24498 case WDI_SCAN_MODE_LEARN:
24499 return eHAL_SYS_MODE_LEARN;
24500 case WDI_SCAN_MODE_SCAN:
24501 return eHAL_SYS_MODE_SCAN;
24502 case WDI_SCAN_MODE_PROMISC:
24503 return eHAL_SYS_MODE_PROMISC;
24504 case WDI_SCAN_MODE_SUSPEND_LINK:
24505 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024506 case WDI_SCAN_MODE_ROAM_SCAN:
24507 return eHAL_SYS_MODE_ROAM_SCAN;
24508 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24509 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024510 }
24511
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513}/*WDI_2_HAL_SCAN_MODE*/
24514
24515/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024516WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024517WDI_2_HAL_SEC_CH_OFFSET
24518(
24519 WDI_HTSecondaryChannelOffset wdiSecChOffset
24520)
24521{
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 the chances of getting inlined*/
24524 switch( wdiSecChOffset )
24525 {
24526 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024527 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024529 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024530 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24532#ifdef WLAN_FEATURE_11AC
24533 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24534 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24535 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24536 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24537 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24538 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24539 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24540 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24541 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24542 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24543 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24544 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24545 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24546 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24547#endif
24548 default:
24549 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 }
24551
Jeff Johnsone7245742012-09-05 17:12:55 -070024552 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024553}/*WDI_2_HAL_SEC_CH_OFFSET*/
24554
24555/*Convert WDI BSS type into HAL BSS type*/
24556WPT_STATIC WPT_INLINE tSirBssType
24557WDI_2_HAL_BSS_TYPE
24558(
24559 WDI_BssType wdiBSSType
24560)
24561{
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 the chances of getting inlined*/
24564 switch( wdiBSSType )
24565 {
24566 case WDI_INFRASTRUCTURE_MODE:
24567 return eSIR_INFRASTRUCTURE_MODE;
24568 case WDI_INFRA_AP_MODE:
24569 return eSIR_INFRA_AP_MODE;
24570 case WDI_IBSS_MODE:
24571 return eSIR_IBSS_MODE;
24572 case WDI_BTAMP_STA_MODE:
24573 return eSIR_BTAMP_STA_MODE;
24574 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024575 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 case WDI_BSS_AUTO_MODE:
24577 return eSIR_AUTO_MODE;
24578 }
24579
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024581}/*WDI_2_HAL_BSS_TYPE*/
24582
24583/*Convert WDI NW type into HAL NW type*/
24584WPT_STATIC WPT_INLINE tSirNwType
24585WDI_2_HAL_NW_TYPE
24586(
24587 WDI_NwType wdiNWType
24588)
24589{
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024591 the chances of getting inlined*/
24592 switch( wdiNWType )
24593 {
24594 case WDI_11A_NW_TYPE:
24595 return eSIR_11A_NW_TYPE;
24596 case WDI_11B_NW_TYPE:
24597 return eSIR_11B_NW_TYPE;
24598 case WDI_11G_NW_TYPE:
24599 return eSIR_11G_NW_TYPE;
24600 case WDI_11N_NW_TYPE:
24601 return eSIR_11N_NW_TYPE;
24602 }
24603
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024605}/*WDI_2_HAL_NW_TYPE*/
24606
24607/*Convert WDI chanel bonding type into HAL cb type*/
24608WPT_STATIC WPT_INLINE ePhyChanBondState
24609WDI_2_HAL_CB_STATE
24610(
24611 WDI_PhyChanBondState wdiCbState
24612)
24613{
Jeff Johnsone7245742012-09-05 17:12:55 -070024614 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024615 the chances of getting inlined*/
24616 switch ( wdiCbState )
24617 {
24618 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24619 return PHY_SINGLE_CHANNEL_CENTERED;
24620 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24621 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24622 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24623 return PHY_DOUBLE_CHANNEL_CENTERED;
24624 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24625 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024626#ifdef WLAN_FEATURE_11AC
24627 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24628 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24629 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24630 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24631 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24632 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24633 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24634 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24635 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24636 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24637 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24638 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24639 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24640 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24641#endif
24642 case WDI_MAX_CB_STATE:
24643 default:
24644 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024646
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 return PHY_CHANNEL_BONDING_STATE_MAX;
24648}/*WDI_2_HAL_CB_STATE*/
24649
24650/*Convert WDI chanel bonding type into HAL cb type*/
24651WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24652WDI_2_HAL_HT_OPER_MODE
24653(
24654 WDI_HTOperatingMode wdiHTOperMode
24655)
24656{
Jeff Johnsone7245742012-09-05 17:12:55 -070024657 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 the chances of getting inlined*/
24659 switch ( wdiHTOperMode )
24660 {
24661 case WDI_HT_OP_MODE_PURE:
24662 return eSIR_HT_OP_MODE_PURE;
24663 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24664 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24665 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24666 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24667 case WDI_HT_OP_MODE_MIXED:
24668 return eSIR_HT_OP_MODE_MIXED;
24669 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024670
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 return eSIR_HT_OP_MODE_MAX;
24672}/*WDI_2_HAL_HT_OPER_MODE*/
24673
24674/*Convert WDI mimo PS type into HAL mimo PS type*/
24675WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24676WDI_2_HAL_MIMO_PS
24677(
24678 WDI_HTMIMOPowerSaveState wdiHTOperMode
24679)
24680{
Jeff Johnsone7245742012-09-05 17:12:55 -070024681 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 the chances of getting inlined*/
24683 switch ( wdiHTOperMode )
24684 {
24685 case WDI_HT_MIMO_PS_STATIC:
24686 return eSIR_HT_MIMO_PS_STATIC;
24687 case WDI_HT_MIMO_PS_DYNAMIC:
24688 return eSIR_HT_MIMO_PS_DYNAMIC;
24689 case WDI_HT_MIMO_PS_NA:
24690 return eSIR_HT_MIMO_PS_NA;
24691 case WDI_HT_MIMO_PS_NO_LIMIT:
24692 return eSIR_HT_MIMO_PS_NO_LIMIT;
24693 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024694
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 return eSIR_HT_MIMO_PS_MAX;
24696}/*WDI_2_HAL_MIMO_PS*/
24697
24698/*Convert WDI ENC type into HAL ENC type*/
24699WPT_STATIC WPT_INLINE tAniEdType
24700WDI_2_HAL_ENC_TYPE
24701(
24702 WDI_EncryptType wdiEncType
24703)
24704{
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 the chances of getting inlined*/
24707 switch ( wdiEncType )
24708 {
24709 case WDI_ENCR_NONE:
24710 return eSIR_ED_NONE;
24711
24712 case WDI_ENCR_WEP40:
24713 return eSIR_ED_WEP40;
24714
24715 case WDI_ENCR_WEP104:
24716 return eSIR_ED_WEP104;
24717
24718 case WDI_ENCR_TKIP:
24719 return eSIR_ED_TKIP;
24720
24721 case WDI_ENCR_CCMP:
24722 return eSIR_ED_CCMP;
24723
24724 case WDI_ENCR_AES_128_CMAC:
24725 return eSIR_ED_AES_128_CMAC;
24726#if defined(FEATURE_WLAN_WAPI)
24727 case WDI_ENCR_WPI:
24728 return eSIR_ED_WPI;
24729#endif
24730 default:
24731 return eSIR_ED_NOT_IMPLEMENTED;
24732 }
24733
24734}/*WDI_2_HAL_ENC_TYPE*/
24735
24736/*Convert WDI WEP type into HAL WEP type*/
24737WPT_STATIC WPT_INLINE tAniWepType
24738WDI_2_HAL_WEP_TYPE
24739(
24740 WDI_WepType wdiWEPType
24741)
24742{
Jeff Johnsone7245742012-09-05 17:12:55 -070024743 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024744 the chances of getting inlined*/
24745 switch ( wdiWEPType )
24746 {
24747 case WDI_WEP_STATIC:
24748 return eSIR_WEP_STATIC;
24749
24750 case WDI_WEP_DYNAMIC:
24751 return eSIR_WEP_DYNAMIC;
24752 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024753
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 return eSIR_WEP_MAX;
24755}/*WDI_2_HAL_WEP_TYPE*/
24756
24757WPT_STATIC WPT_INLINE tSirLinkState
24758WDI_2_HAL_LINK_STATE
24759(
24760 WDI_LinkStateType wdiLinkState
24761)
24762{
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 the chances of getting inlined*/
24765 switch ( wdiLinkState )
24766 {
24767 case WDI_LINK_IDLE_STATE:
24768 return eSIR_LINK_IDLE_STATE;
24769
24770 case WDI_LINK_PREASSOC_STATE:
24771 return eSIR_LINK_PREASSOC_STATE;
24772
24773 case WDI_LINK_POSTASSOC_STATE:
24774 return eSIR_LINK_POSTASSOC_STATE;
24775
24776 case WDI_LINK_AP_STATE:
24777 return eSIR_LINK_AP_STATE;
24778
24779 case WDI_LINK_IBSS_STATE:
24780 return eSIR_LINK_IBSS_STATE;
24781
24782 case WDI_LINK_BTAMP_PREASSOC_STATE:
24783 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24784
24785 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24786 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24787
24788 case WDI_LINK_BTAMP_AP_STATE:
24789 return eSIR_LINK_BTAMP_AP_STATE;
24790
24791 case WDI_LINK_BTAMP_STA_STATE:
24792 return eSIR_LINK_BTAMP_STA_STATE;
24793
24794 case WDI_LINK_LEARN_STATE:
24795 return eSIR_LINK_LEARN_STATE;
24796
24797 case WDI_LINK_SCAN_STATE:
24798 return eSIR_LINK_SCAN_STATE;
24799
24800 case WDI_LINK_FINISH_SCAN_STATE:
24801 return eSIR_LINK_FINISH_SCAN_STATE;
24802
24803 case WDI_LINK_INIT_CAL_STATE:
24804 return eSIR_LINK_INIT_CAL_STATE;
24805
24806 case WDI_LINK_FINISH_CAL_STATE:
24807 return eSIR_LINK_FINISH_CAL_STATE;
24808
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 case WDI_LINK_LISTEN_STATE:
24810 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024811
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024812 case WDI_LINK_SEND_ACTION_STATE:
24813 return eSIR_LINK_SEND_ACTION_STATE;
24814
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 default:
24816 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024817 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024818}
24819
Jeff Johnsone7245742012-09-05 17:12:55 -070024820/*Translate a STA Context from WDI into HAL*/
24821WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024822void
24823WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024824(
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 tConfigStaParams* phalConfigSta,
24826 WDI_ConfigStaReqInfoType* pwdiConfigSta
24827)
24828{
24829 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024830#ifdef WLAN_FEATURE_11AC
24831 /* Get the Version 1 Handler */
24832 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24833 if (WDI_getFwWlanFeatCaps(DOT11AC))
24834 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024835 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024836 }
24837#endif
24838 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024840
Jeff Johnsone7245742012-09-05 17:12:55 -070024841 wpalMemoryCopy(phalConfigSta->bssId,
24842 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24843
24844 wpalMemoryCopy(phalConfigSta->staMac,
24845 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024846
24847 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24848 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24849 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24850 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24851 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24852 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24853 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24854 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24855 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24856 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24857 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24858 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24859 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24860 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24861 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24862 phalConfigSta->action = pwdiConfigSta->wdiAction;
24863 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24864 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24865 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24866 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24867 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24868 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24869 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053024870
Jeff Johnson295189b2012-06-20 16:38:30 -070024871 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24872
Jeff Johnsone7245742012-09-05 17:12:55 -070024873 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 pwdiConfigSta->wdiSupportedRates.opRateMode;
24875 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24876 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024877 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024878 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24879 }
24880 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24881 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024882 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24884 }
24885 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24886 {
24887 phalConfigSta->supportedRates.aniLegacyRates[i] =
24888 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24889 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24892 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24893 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024894 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024895 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24896 }
24897 phalConfigSta->supportedRates.rxHighestDataRate =
24898 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24899
Jeff Johnsone7245742012-09-05 17:12:55 -070024900#ifdef WLAN_FEATURE_11AC
24901 if(phalConfigSta_V1 != NULL)
24902 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024903 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24904 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24905 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24906 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 }
24908#endif
24909
Jeff Johnson295189b2012-06-20 16:38:30 -070024910 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024911
Jeff Johnsone7245742012-09-05 17:12:55 -070024912#ifdef WLAN_FEATURE_11AC
24913 if(phalConfigSta_V1 != NULL)
24914 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024915 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24916 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024917 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024918 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024919 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24920 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24921
Jeff Johnsone7245742012-09-05 17:12:55 -070024922 }
24923#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024924}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024925
24926/*Translate a Rate set info from WDI into HAL*/
24927WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024928WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024929(
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 tSirMacRateSet* pHalRateSet,
24931 WDI_RateSet* pwdiRateSet
24932)
24933{
Jeff Johnsone7245742012-09-05 17:12:55 -070024934 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24936
24937 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24938 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24939
24940 for ( i = 0; i < pHalRateSet->numRates; i++ )
24941 {
24942 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24943 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024944
Jeff Johnson295189b2012-06-20 16:38:30 -070024945}/*WDI_CopyWDIRateSetToHALRateSet*/
24946
24947
24948/*Translate an EDCA Parameter Record from WDI into HAL*/
24949WPT_STATIC WPT_INLINE void
24950WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024951(
Jeff Johnson295189b2012-06-20 16:38:30 -070024952 tSirMacEdcaParamRecord* phalEdcaParam,
24953 WDI_EdcaParamRecord* pWDIEdcaParam
24954)
24955{
Jeff Johnsone7245742012-09-05 17:12:55 -070024956 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024957 the chances of getting inlined*/
24958
24959 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24960 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24961 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24962 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24963
24964 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24965 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24966 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24967}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24968
24969
24970/*Copy a management frame header from WDI fmt into HAL fmt*/
24971WPT_STATIC WPT_INLINE void
24972WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24973(
24974 tSirMacMgmtHdr* pmacMgmtHdr,
24975 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24976)
24977{
24978 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24979 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24980 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24981 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24982 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24983 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24984 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24985 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24986 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24987 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24988 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24989
24990 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24991 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24992
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 pwdiMacMgmtHdr->bssId, 6);
24999
25000 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25001 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25002 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25003
25004}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25005
25006
25007/*Copy config bss parameters from WDI fmt into HAL fmt*/
25008WPT_STATIC WPT_INLINE void
25009WDI_CopyWDIConfigBSSToHALConfigBSS
25010(
25011 tConfigBssParams* phalConfigBSS,
25012 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25013)
25014{
25015
25016 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025017#ifdef WLAN_FEATURE_11AC
25018 /* Get the Version 1 Handler */
25019 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25020 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025021 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025022#endif
25023
Jeff Johnson295189b2012-06-20 16:38:30 -070025024 wpalMemoryCopy( phalConfigBSS->bssId,
25025 pwdiConfigBSS->macBSSID,
25026 WDI_MAC_ADDR_LEN);
25027
25028#ifdef HAL_SELF_STA_PER_BSS
25029 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25030 pwdiConfigBSS->macSelfAddr,
25031 WDI_MAC_ADDR_LEN);
25032#endif
25033
25034 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25035
25036 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25037 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25038
Jeff Johnsone7245742012-09-05 17:12:55 -070025039 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025040 pwdiConfigBSS->ucShortSlotTimeSupported;
25041 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25042 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25043 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25044 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25045 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025046 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025047 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25048 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25049 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25050 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25051 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25052 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25053 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25054 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25055 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25056 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25057 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25058
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 phalConfigBSS->htOperMode =
25060 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025061
25062 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25063 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25064 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25065 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25066
25067#ifdef WLAN_FEATURE_VOWIFI
25068 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25069#endif
25070
25071 /*! Used 32 as magic number because that is how the ssid is declared inside the
25072 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25075 pwdiConfigBSS->wdiSSID.ucLength : 32;
25076 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 pwdiConfigBSS->wdiSSID.sSSID,
25078 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025079
25080 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25081 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025082
Jeff Johnson295189b2012-06-20 16:38:30 -070025083 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25084 &pwdiConfigBSS->wdiRateSet);
25085
25086 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25087
25088 if(phalConfigBSS->edcaParamsValid)
25089 {
25090 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25091 &pwdiConfigBSS->wdiBEEDCAParams);
25092 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25093 &pwdiConfigBSS->wdiBKEDCAParams);
25094 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25095 &pwdiConfigBSS->wdiVIEDCAParams);
25096 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25097 &pwdiConfigBSS->wdiVOEDCAParams);
25098 }
25099
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025101
25102 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25103
25104#ifdef WLAN_FEATURE_VOWIFI_11R
25105
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025108
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 if( phalConfigBSS->extSetStaKeyParamValid )
25110 {
25111 /*-----------------------------------------------------------------------
25112 Copy the STA Key parameters into the HAL message
25113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025114 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025115 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25116
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25119
25120 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25121
25122 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25123
25124 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25125
Jeff Johnson295189b2012-06-20 16:38:30 -070025126 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25127 keyIndex++)
25128 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025129 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25131 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25132 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25133 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25134 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25135 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25142 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025143 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025144 WDI_MAX_KEY_LENGTH);
25145 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 }
25147 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25148 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 sizeof(phalConfigBSS->extSetStaKeyParam) );
25151 }
25152
25153#endif /*WLAN_FEATURE_VOWIFI_11R*/
25154
Jeff Johnsone7245742012-09-05 17:12:55 -070025155#ifdef WLAN_FEATURE_11AC
25156 if(phalConfigBSS_V1 != NULL)
25157 {
25158 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25159 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25160 }
25161#endif
25162
Jeff Johnson295189b2012-06-20 16:38:30 -070025163}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25164
25165
Jeff Johnsone7245742012-09-05 17:12:55 -070025166/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025167 pointed to by user data */
25168WPT_STATIC WPT_INLINE void
25169WDI_ExtractRequestCBFromEvent
25170(
25171 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 void** ppUserData
25174)
25175{
25176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25177 switch ( pEvent->wdiRequest )
25178 {
25179 case WDI_START_REQ:
25180 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25181 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25182 break;
25183 case WDI_STOP_REQ:
25184 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25185 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25186 break;
25187 case WDI_INIT_SCAN_REQ:
25188 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25189 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25190 break;
25191 case WDI_START_SCAN_REQ:
25192 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25193 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25194 break;
25195 case WDI_END_SCAN_REQ:
25196 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25197 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25198 break;
25199 case WDI_FINISH_SCAN_REQ:
25200 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25201 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25202 break;
25203 case WDI_JOIN_REQ:
25204 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25205 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25206 break;
25207 case WDI_CONFIG_BSS_REQ:
25208 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25209 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25210 break;
25211 case WDI_DEL_BSS_REQ:
25212 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25213 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25214 break;
25215 case WDI_POST_ASSOC_REQ:
25216 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25217 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25218 break;
25219 case WDI_DEL_STA_REQ:
25220 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25221 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25222 break;
25223 case WDI_DEL_STA_SELF_REQ:
25224 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25225 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25226 break;
25227
25228 case WDI_SET_BSS_KEY_REQ:
25229 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25230 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25231 break;
25232 case WDI_RMV_BSS_KEY_REQ:
25233 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25234 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25235 break;
25236 case WDI_SET_STA_KEY_REQ:
25237 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25238 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25239 break;
25240 case WDI_RMV_STA_KEY_REQ:
25241 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25242 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25243 break;
25244 case WDI_ADD_TS_REQ:
25245 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25246 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25247 break;
25248 case WDI_DEL_TS_REQ:
25249 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25250 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25251 break;
25252 case WDI_UPD_EDCA_PRMS_REQ:
25253 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25254 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25255 break;
25256 case WDI_ADD_BA_SESSION_REQ:
25257 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25258 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25259 break;
25260 case WDI_DEL_BA_REQ:
25261 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25262 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25263 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025264#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025265 case WDI_TSM_STATS_REQ:
25266 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25267 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25268 break;
25269#endif
25270 case WDI_CH_SWITCH_REQ:
25271 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25272 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25273 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025274 case WDI_CH_SWITCH_REQ_V1:
25275 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25276 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25277 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 case WDI_CONFIG_STA_REQ:
25279 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25280 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25281 break;
25282 case WDI_SET_LINK_ST_REQ:
25283 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25284 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25285 break;
25286 case WDI_GET_STATS_REQ:
25287 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25288 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25289 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025290#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025291 case WDI_GET_ROAM_RSSI_REQ:
25292 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25293 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25294 break;
25295#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025296 case WDI_UPDATE_CFG_REQ:
25297 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25298 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25299 break;
25300 case WDI_ADD_BA_REQ:
25301 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25302 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25303 break;
25304 case WDI_TRIGGER_BA_REQ:
25305 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25306 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25307 break;
25308 case WDI_UPD_BCON_PRMS_REQ:
25309 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25310 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25311 break;
25312 case WDI_SND_BCON_REQ:
25313 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25314 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25315 break;
25316 case WDI_ENTER_BMPS_REQ:
25317 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25318 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25319 break;
25320 case WDI_EXIT_BMPS_REQ:
25321 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25322 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25323 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025324 case WDI_ENTER_IMPS_REQ:
25325 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25326 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25327 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025328 case WDI_ENTER_UAPSD_REQ:
25329 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25330 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25331 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025332 case WDI_EXIT_UAPSD_REQ:
25333 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25334 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25335 break;
25336 case WDI_SET_UAPSD_PARAM_REQ:
25337 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25338 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25339 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 case WDI_UPDATE_UAPSD_PARAM_REQ:
25341 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25342 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25343 break;
25344 case WDI_CONFIGURE_RXP_FILTER_REQ:
25345 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25346 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25347 break;
25348 case WDI_SET_BEACON_FILTER_REQ:
25349 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25350 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25351 break;
25352 case WDI_REM_BEACON_FILTER_REQ:
25353 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25354 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025356 case WDI_SET_RSSI_THRESHOLDS_REQ:
25357 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25358 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25359 break;
25360 case WDI_HOST_OFFLOAD_REQ:
25361 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25362 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25363 break;
25364 case WDI_WOWL_ADD_BC_PTRN_REQ:
25365 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25366 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25367 break;
25368 case WDI_WOWL_DEL_BC_PTRN_REQ:
25369 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25370 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25371 break;
25372 case WDI_WOWL_ENTER_REQ:
25373 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25374 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25375 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025376 case WDI_WOWL_EXIT_REQ:
25377 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25378 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25379 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025380 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25381 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25382 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25383 break;
25384 case WDI_FLUSH_AC_REQ:
25385 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25386 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25387 break;
25388 case WDI_BTAMP_EVENT_REQ:
25389 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25390 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25391 break;
25392 case WDI_KEEP_ALIVE_REQ:
25393 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25394 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25395 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025396#if defined FEATURE_WLAN_SCAN_PNO
25397 case WDI_SET_PREF_NETWORK_REQ:
25398 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25399 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25400 break;
25401 case WDI_SET_RSSI_FILTER_REQ:
25402 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25404 break;
25405 case WDI_UPDATE_SCAN_PARAMS_REQ:
25406 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25407 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25408 break;
25409#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 case WDI_SET_TX_PER_TRACKING_REQ:
25411 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25412 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025413 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025414#if defined WLAN_FEATURE_PACKET_FILTERING
25415 case WDI_8023_MULTICAST_LIST_REQ:
25416 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25417 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25418 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025419 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25420 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25421 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25422 break;
25423 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25424 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25425 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25426 break;
25427 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25428 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25429 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25430 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025431#endif
25432 case WDI_SET_POWER_PARAMS_REQ:
25433 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25434 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25435 break;
25436#if defined WLAN_FEATURE_GTK_OFFLOAD
25437 case WDI_GTK_OFFLOAD_REQ:
25438 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25439 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25440 break;
25441 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25442 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25443 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25444 break;
25445#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025446
Jeff Johnson295189b2012-06-20 16:38:30 -070025447 default:
25448 *ppfnReqCB = NULL;
25449 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025450 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 }
25452}/*WDI_ExtractRequestCBFromEvent*/
25453
25454
25455/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025456 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025457 frame xtl is enabled for a particular STA.
25458
25459 WDI_PostAssocReq must have been called.
25460
Jeff Johnsone7245742012-09-05 17:12:55 -070025461 @param uSTAIdx: STA index
25462
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 @see WDI_PostAssocReq
25464 @return Result of the function call
25465*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025466wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025467WDI_IsHwFrameTxTranslationCapable
25468(
25469 wpt_uint8 uSTAIdx
25470)
25471{
Jeff Johnsone7245742012-09-05 17:12:55 -070025472 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 uma value*/
25474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 ------------------------------------------------------------------------*/
25477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25478 {
25479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25480 "WDI API call before module is initialized - Fail request");
25481
Jeff Johnsone7245742012-09-05 17:12:55 -070025482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025483 }
25484
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025485#ifdef WLAN_SOFTAP_VSTA_FEATURE
25486 if (IS_VSTA_IDX(uSTAIdx))
25487 {
25488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25489 "STA %d is a Virtual STA, "
25490 "HW frame translation disabled", uSTAIdx);
25491 return eWLAN_PAL_FALSE;
25492 }
25493#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025494
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 return gWDICb.bFrameTransEnabled;
25496}/*WDI_IsHwFrameTxTranslationCapable*/
25497
Katya Nigam6201c3e2014-05-27 17:51:42 +053025498
25499/**
25500 @brief WDI_IsSelfSTA - check if staid is self sta index
25501
25502
25503 @param pWDICtx: pointer to the WLAN DAL context
25504 ucSTAIdx: station index
25505
25506 @return Result of the function call
25507*/
25508wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25509{
25510 wpt_uint8 ucSTAType;
25511
25512 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25513 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25514 {
25515 if( ucSTAType == WDI_STA_ENTRY_SELF )
25516 return eWLAN_PAL_TRUE;
25517 }
25518
25519 return eWLAN_PAL_FALSE;
25520}
25521
25522
25523
Jeff Johnson295189b2012-06-20 16:38:30 -070025524#ifdef FEATURE_WLAN_SCAN_PNO
25525/**
25526 @brief WDI_SetPreferredNetworkList
25527
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025530
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 wdiPNOScanCb: callback for passing back the response
25532 of the Set PNO operation received from the
25533 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025534
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 callback
25537
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 @return Result of the function call
25539*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025541WDI_SetPreferredNetworkReq
25542(
25543 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25544 WDI_PNOScanCb wdiPNOScanCb,
25545 void* pUserData
25546)
25547{
25548 WDI_EventInfoType wdiEventData = {{0}};
25549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25550
25551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 ------------------------------------------------------------------------*/
25554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25555 {
25556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25557 "WDI API call before module is initialized - Fail request");
25558
Jeff Johnsone7245742012-09-05 17:12:55 -070025559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 }
25561
25562 /*------------------------------------------------------------------------
25563 Fill in Event data and post to the Main FSM
25564 ------------------------------------------------------------------------*/
25565 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025568 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 wdiEventData.pUserData = pUserData;
25570
25571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25572}
25573
25574
25575/**
25576 @brief WDI_SetRssiFilterReq
25577
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025580
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 wdiRssiFilterCb: callback for passing back the response
25582 of the Set RSSI Filter operation received from the
25583 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025584
Jeff Johnson295189b2012-06-20 16:38:30 -070025585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 callback
25587
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 @return Result of the function call
25589*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025590WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025591WDI_SetRssiFilterReq
25592(
25593 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25594 WDI_RssiFilterCb wdiRssiFilterCb,
25595 void* pUserData
25596)
25597{
25598 WDI_EventInfoType wdiEventData = {{0}};
25599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25600
25601 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 ------------------------------------------------------------------------*/
25604 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25605 {
25606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25607 "WDI API call before module is initialized - Fail request");
25608
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 }
25611
25612 /*------------------------------------------------------------------------
25613 Fill in Event data and post to the Main FSM
25614 ------------------------------------------------------------------------*/
25615 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 wdiEventData.pUserData = pUserData;
25620
25621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25622}/*WDI_SetRssiFilterReq*/
25623
25624/**
25625 @brief WDI_UpdateScanParamsReq
25626
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025629
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 wdiUpdateScanParamsCb: callback for passing back the response
25631 of the Set PNO operation received from the
25632 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025633
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 callback
25636
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 @return Result of the function call
25638*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025640WDI_UpdateScanParamsReq
25641(
25642 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25643 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25644 void* pUserData
25645)
25646{
25647 WDI_EventInfoType wdiEventData = {{0}};
25648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25649
25650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 ------------------------------------------------------------------------*/
25653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25654 {
25655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25656 "WDI API call before module is initialized - Fail request");
25657
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 }
25660
25661 /*------------------------------------------------------------------------
25662 Fill in Event data and post to the Main FSM
25663 ------------------------------------------------------------------------*/
25664 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025667 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 wdiEventData.pUserData = pUserData;
25669
25670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25671}
25672
25673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025674 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025675 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025676
25677 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 pwdiPNOScanReqParams: pointer to the info received
25679 from upper layers
25680 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025681 and its size
25682
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 @return Result of the function call
25684*/
25685
25686WDI_Status
25687WDI_PackPreferredNetworkList
25688(
25689 WDI_ControlBlockType* pWDICtx,
25690 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25691 wpt_uint8** ppSendBuffer,
25692 wpt_uint16* pSize
25693)
25694{
Jeff Johnsone7245742012-09-05 17:12:55 -070025695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025696 wpt_uint16 usDataOffset = 0;
25697 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025698 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 /*-----------------------------------------------------------------------
25701 Get message buffer
25702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025704 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025706 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025707 {
25708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025709 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025710 pwdiPNOScanReqParams);
25711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 }
25714
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025715 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25716
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 /*-------------------------------------------------------------------------
25718 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25719 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025720 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025722 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25724
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025725 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025726 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025728 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25730
25731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025732 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25734 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25735 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25736
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025737 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025738 {
25739 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025740 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25742
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025743 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025744 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025745 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025746
25747 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025748 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750
25751 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025752 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025753 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025754
Jeff Johnsone7245742012-09-05 17:12:55 -070025755 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025757 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025758 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25759 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25760 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25761 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025762
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025763 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025765 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025766
25767 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025768 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025769 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25770
25771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025772 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025773 pPrefNetwListParams->aNetworks[i].ssId.length,
25774 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 }
25776
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025777 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025778 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025779 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25780 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25781 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25782
25783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025784 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025785 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25787 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25788
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025789 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025791 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025793 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025794 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25795 }
25796
25797 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025798 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25800 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25801 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025804 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025806 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025807
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025808 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025809 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25810 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25811 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025812 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025813
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025814 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025816 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025817
25818 /*Set the output values*/
25819 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025820 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025821
25822 return WDI_STATUS_SUCCESS;
25823}/*WDI_PackPreferredNetworkList*/
25824
25825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025827 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025828
25829 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 pwdiPNOScanReqParams: pointer to the info received
25831 from upper layers
25832 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 and its size
25834
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 @return Result of the function call
25836*/
25837
25838WDI_Status
25839WDI_PackPreferredNetworkListNew
25840(
25841 WDI_ControlBlockType* pWDICtx,
25842 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25843 wpt_uint8** ppSendBuffer,
25844 wpt_uint16* pSize
25845)
25846{
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 wpt_uint16 usDataOffset = 0;
25849 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025850 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025852
25853 /*-----------------------------------------------------------------------
25854 Get message buffer
25855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025857 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025859 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 {
25861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025862 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 pwdiPNOScanReqParams);
25864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 }
25867
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025868 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25869
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 /*-------------------------------------------------------------------------
25871 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25872 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025873 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025874 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025875 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025876 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25877
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025878 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25883
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25887 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25888 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25889
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025890 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 {
25892 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025893 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025894 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25895
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025896 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025897 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025898 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025899
25900 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025901 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025902 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025903
25904 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025906 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025907
25908 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025910 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911
Jeff Johnsone7245742012-09-05 17:12:55 -070025912 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025913 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025914 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25916
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025917 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025919 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025920
25921 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025922 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025923 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25924
25925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025926 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025927 pPrefNetwListParams->aNetworks[i].ssId.length,
25928 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 }
25930
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025931 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025932 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025933 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25934 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25935 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25936
25937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025938 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025939 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25941 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25942
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025945 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025947 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025948 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25949 }
25950
25951 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025952 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25954 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25955 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025957
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025958 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025960 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025961
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025962 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025963 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25964 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25965 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025967
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025968 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025969 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025970 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025971
Jeff Johnson295189b2012-06-20 16:38:30 -070025972
25973 /*Set the output values*/
25974 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
25977 return WDI_STATUS_SUCCESS;
25978}/*WDI_PackPreferredNetworkListNew*/
25979
25980/**
25981 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025982
25983 @param pWDICtx: pointer to the WLAN DAL context
25984 pEventData: pointer to the event information structure
25985
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 @return Result of the function call
25987*/
25988WDI_Status
25989WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025990(
Jeff Johnson295189b2012-06-20 16:38:30 -070025991 WDI_ControlBlockType* pWDICtx,
25992 WDI_EventInfoType* pEventData
25993)
25994{
25995 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25996 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025997 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025998 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025999 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026000
26001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 -------------------------------------------------------------------------*/
26004 if (( NULL == pEventData ) ||
26005 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26006 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26007 {
26008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 }
26013
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026014 /*----------------------------------------------------------------------
26015 Avoid Enable PNO during any active session or an ongoing session
26016 ----------------------------------------------------------------------*/
26017 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26018 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26019 {
26020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26021 "%s:(Active/Ongoing Session) - Fail request", __func__);
26022
26023 return WDI_STATUS_E_FAILURE;
26024 }
26025
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 /*-------------------------------------------------------------------------
26027 Pack the PNO request structure based on version
26028 -------------------------------------------------------------------------*/
26029 if ( pWDICtx->wdiPNOVersion > 0 )
26030 {
26031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026032 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 pWDICtx->wdiPNOVersion);
26034
26035 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26036 &pSendBuffer, &usSendSize);
26037 }
26038 else
26039 {
26040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026041 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026042 pWDICtx->wdiPNOVersion);
26043
26044 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26045 &pSendBuffer, &usSendSize);
26046 }
26047
26048 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26049 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26050 {
26051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026052 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026054 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 }
26056
26057 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026058 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026059
26060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26064 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026065}
26066
26067/**
26068 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026069
26070 @param pWDICtx: pointer to the WLAN DAL context
26071 pEventData: pointer to the event information structure
26072
Jeff Johnson295189b2012-06-20 16:38:30 -070026073 @see
26074 @return Result of the function call
26075*/
26076WDI_Status
26077WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026078(
Jeff Johnson295189b2012-06-20 16:38:30 -070026079 WDI_ControlBlockType* pWDICtx,
26080 WDI_EventInfoType* pEventData
26081)
26082{
26083 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26084 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 wpt_uint16 usDataOffset = 0;
26087 wpt_uint16 usSendSize = 0;
26088 wpt_uint8 ucRssiThreshold;
26089
26090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 -------------------------------------------------------------------------*/
26093 if (( NULL == pEventData ) ||
26094 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26095 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26096 {
26097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 }
26102
26103 /*-----------------------------------------------------------------------
26104 Get message buffer
26105 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026107 sizeof(ucRssiThreshold),
26108 &pSendBuffer, &usDataOffset, &usSendSize))||
26109 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26110 {
26111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026112 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 }
26117
26118 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26119
Jeff Johnsone7245742012-09-05 17:12:55 -070026120 wpalMemoryCopy( pSendBuffer+usDataOffset,
26121 &ucRssiThreshold,
26122 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026123
26124 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026126
26127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26131 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026132}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026133#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26134/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026135 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026136
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026137 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026138 by the Device Interface
26139
26140 wdiRoamOffloadScancb: callback for passing back the response
26141 of the Roam Candidate Lookup Req operation received from the
26142 device
26143
26144 pUserData: user data will be passed back with the
26145 callback
26146 @return Result of the function call
26147*/
26148WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026149WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026150(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026151 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026152 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26153 void* pUserData
26154)
26155{
26156 WDI_EventInfoType wdiEventData = {{0}};
26157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26158
26159 /*------------------------------------------------------------------------
26160 Sanity Check
26161 ------------------------------------------------------------------------*/
26162 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26163 {
26164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26165 "WDI API call before module is initialized - Fail request");
26166
26167 return WDI_STATUS_E_NOT_ALLOWED;
26168 }
26169
26170 /*------------------------------------------------------------------------
26171 Fill in Event data and post to the Main FSM
26172 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026173 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26174 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26175 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026176 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26177 wdiEventData.pUserData = pUserData;
26178
26179 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26180}
26181
26182void
26183WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26184{
26185 switch (wdiEdType)
26186 {
26187 case WDI_ED_NONE:
26188 *EdType = eED_NONE;
26189 break;
26190 case WDI_ED_WEP40:
26191 case WDI_ED_WEP104:
26192 *EdType = eED_WEP;
26193 break;
26194 case WDI_ED_TKIP:
26195 *EdType = eED_TKIP;
26196 break;
26197 case WDI_ED_CCMP:
26198#ifdef WLAN_FEATURE_11W
26199 case WDI_ED_AES_128_CMAC:
26200#endif
26201 *EdType = eED_CCMP;
26202 break;
26203#ifdef FEATURE_WLAN_WAPI
26204 case WDI_ED_WPI:
26205 *EdType = eED_WPI;
26206 break;
26207#endif
26208 case WDI_ED_ANY:
26209 *EdType = eED_ANY;
26210 break;
26211
26212 default:
26213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26214 "%s: Unknown Encryption Type", __func__);
26215 break;
26216 }
26217}
26218
26219/**
26220 @brief Helper function to pack Start Roam Candidate Lookup
26221 Request parameters
26222
26223 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026224 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026225 from upper layers
26226 ppSendBuffer, pSize - out pointers of the packed buffer
26227 and its size
26228
26229 @return Result of the function call
26230*/
26231
26232WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026233WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026234(
26235 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026236 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026237 wpt_uint8** ppSendBuffer,
26238 wpt_uint16* pSize
26239)
26240{
26241 wpt_uint8* pSendBuffer = NULL;
26242 wpt_uint16 usDataOffset = 0;
26243 wpt_uint16 usSendSize = 0;
26244 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26245 wpt_uint8 i;
26246 /*-----------------------------------------------------------------------
26247 Get message buffer
26248 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026250 sizeof(tRoamCandidateListParams),
26251 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026252 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026253 {
26254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026255 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026256 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026257 WDI_ASSERT(0);
26258 return WDI_STATUS_E_FAILURE;
26259 }
26260 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026261 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026262 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026263 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026264 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026265 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026266 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026267 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026268 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026269 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026270 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026271
26272 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026273 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026274 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026275 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026276 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26277 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026278 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26279 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26280 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26281 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26282 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026283 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026284 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026285 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026286 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26287 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26288 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26289 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26290 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26291 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26292 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026293 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026294 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026295 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26296 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26297 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026298
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26300 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26301 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26302 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26303 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26304 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026305 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026306 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26307 pRoamCandidateListParams->RoamScanOffloadEnabled,
26308 pRoamCandidateListParams->Command,
26309 pRoamCandidateListParams->StartScanReason,
26310 pRoamCandidateListParams->NeighborScanTimerPeriod,
26311 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26312 pRoamCandidateListParams->NeighborScanChannelMinTime,
26313 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26314 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26315 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26316 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26317 pRoamCandidateListParams->ConnectedNetwork.authentication,
26318 pRoamCandidateListParams->ConnectedNetwork.encryption,
26319 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26320 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26321 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026322 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026323 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026324 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026325 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026326 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26327 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026328 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026329 pRoamCandidateListParams->us24GProbeSize);
26330 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026331 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026332 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026333 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026334 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26335 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026336 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026337 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026338 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26339 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26340 pRoamCandidateListParams->nProbes =
26341 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26342 pRoamCandidateListParams->HomeAwayTime =
26343 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026345 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26346 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026348 }
26349
26350
26351 /*Set the output values*/
26352 *ppSendBuffer = pSendBuffer;
26353 *pSize = usSendSize;
26354 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026355}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026356
26357/**
26358 @brief Process Start Roam Candidate Lookup Request function
26359
26360 @param pWDICtx: pointer to the WLAN DAL context
26361 pEventData: pointer to the event information structure
26362
26363 @return Result of the function call
26364*/
26365WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026366WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026367(
26368 WDI_ControlBlockType* pWDICtx,
26369 WDI_EventInfoType* pEventData
26370)
26371{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026372 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026373 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26374 wpt_uint8* pSendBuffer = NULL;
26375 wpt_uint16 usSendSize = 0;
26376 WDI_Status wdiStatus;
26377 /*-------------------------------------------------------------------------
26378 Sanity check
26379 -------------------------------------------------------------------------*/
26380 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026381 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026382 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26383 {
26384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26385 "%s: Invalid parameters", __func__);
26386 WDI_ASSERT(0);
26387 return WDI_STATUS_E_FAILURE;
26388 }
26389
26390 /*-------------------------------------------------------------------------
26391 Pack the Start Roam Candidate Lookup request structure based on version
26392 -------------------------------------------------------------------------*/
26393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26394 "%s: Packing Roam Candidate Lookup request ", __func__);
26395
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026396 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026397 &pSendBuffer, &usSendSize);
26398
26399 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26400 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26401 {
26402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26403 "%s: failed to pack request parameters", __func__);
26404 WDI_ASSERT(0);
26405 return wdiStatus;
26406 }
26407
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026408 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26409 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026410
26411 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026412 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026413 -------------------------------------------------------------------------*/
26414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026415 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026416}
26417
26418/**
26419 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26420 response is being received over the bus from HAL)
26421
26422 @param pWDICtx: pointer to the WLAN DAL context
26423 pEventData: pointer to the event information structure
26424
26425 @see
26426 @return Result of the function call
26427*/
26428WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026429WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026430(
26431 WDI_ControlBlockType* pWDICtx,
26432 WDI_EventInfoType* pEventData
26433)
26434{
26435 WDI_Status wdiStatus;
26436 eHalStatus halStatus;
26437 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26438
26439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26440
26441 /*-------------------------------------------------------------------------
26442 Sanity check
26443 -------------------------------------------------------------------------*/
26444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26445 ( NULL == pEventData->pEventData ))
26446 {
26447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26448 "%s: Invalid parameters", __func__);
26449 WDI_ASSERT(0);
26450 return WDI_STATUS_E_FAILURE;
26451 }
26452
26453 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26454
26455 /*-------------------------------------------------------------------------
26456 Extract response and send it to UMAC
26457 -------------------------------------------------------------------------*/
26458 halStatus = *((eHalStatus*)pEventData->pEventData);
26459 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26460
26461 /*Notify UMAC*/
26462 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26463
26464 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026465}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026466#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026467
26468/**
26469 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026470
26471 @param pWDICtx: pointer to the WLAN DAL context
26472 pEventData: pointer to the event information structure
26473
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 @see
26475 @return Result of the function call
26476*/
26477WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026478WDI_PackUpdateScanParamsReq
26479(
26480 WDI_ControlBlockType* pWDICtx,
26481 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26482 wpt_uint8** ppSendBuffer,
26483 wpt_uint16* pSize
26484)
26485{
26486 wpt_uint8* pSendBuffer = NULL;
26487 wpt_uint16 usDataOffset = 0;
26488 wpt_uint16 usSendSize = 0;
26489 tUpdateScanParams updateScanParams = {0};
26490
26491
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026493 "Begin WDI Update Scan Parameters Old Style Params");
26494 /*-----------------------------------------------------------------------
26495 Get message buffer
26496 -----------------------------------------------------------------------*/
26497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26498 sizeof(updateScanParams),
26499 &pSendBuffer, &usDataOffset, &usSendSize))||
26500 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26501 {
26502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026503 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026504 pwdiUpdateScanParams);
26505 WDI_ASSERT(0);
26506 return WDI_STATUS_E_FAILURE;
26507 }
26508
26509 //
26510 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26511 //
26512
26513 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26514 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26515
26516 updateScanParams.ucChannelCount =
26517 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26518 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26519 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26520 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26521
26522 wpalMemoryCopy( updateScanParams.aChannels,
26523 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26524 updateScanParams.ucChannelCount);
26525
26526
26527 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26528 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26529 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26530 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26531 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26532
26533 wpalMemoryCopy( pSendBuffer+usDataOffset,
26534 &updateScanParams,
26535 sizeof(updateScanParams));
26536
26537 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26538 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26539
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026541 "End Update Scan Parameters Old Style");
26542
26543 /*Set the output values*/
26544 *ppSendBuffer = pSendBuffer;
26545 *pSize = usSendSize;
26546
26547 return WDI_STATUS_SUCCESS;
26548}
26549
26550/**
26551 @brief Process Update Scan Params function
26552
26553 @param pWDICtx: pointer to the WLAN DAL context
26554 pEventData: pointer to the event information structure
26555
26556 @see
26557 @return Result of the function call
26558*/
26559WDI_Status
26560WDI_PackUpdateScanParamsReqEx
26561(
26562 WDI_ControlBlockType* pWDICtx,
26563 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26564 wpt_uint8** ppSendBuffer,
26565 wpt_uint16* pSize
26566)
26567{
26568 wpt_uint8* pSendBuffer = NULL;
26569 wpt_uint16 usDataOffset = 0;
26570 wpt_uint16 usSendSize = 0;
26571 tUpdateScanParamsEx updateScanParams = {0};
26572
26573
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026574 /*-----------------------------------------------------------------------
26575 Get message buffer
26576 -----------------------------------------------------------------------*/
26577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26578 sizeof(updateScanParams),
26579 &pSendBuffer, &usDataOffset, &usSendSize))||
26580 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26581 {
26582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026583 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026584 pwdiUpdateScanParams);
26585 WDI_ASSERT(0);
26586 return WDI_STATUS_E_FAILURE;
26587 }
26588
26589 //
26590 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26591 //
26592
26593 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26594 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26595
26596 updateScanParams.ucChannelCount =
26597 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26598 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26599 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26600 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26601
26602 wpalMemoryCopy( updateScanParams.aChannels,
26603 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26604 updateScanParams.ucChannelCount);
26605
26606
26607 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26608 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26609 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26610 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26611 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26612
26613 wpalMemoryCopy( pSendBuffer+usDataOffset,
26614 &updateScanParams,
26615 sizeof(updateScanParams));
26616
26617 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26618 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26619
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026620 /*Set the output values*/
26621 *ppSendBuffer = pSendBuffer;
26622 *pSize = usSendSize;
26623
26624 return WDI_STATUS_SUCCESS;
26625}
26626
26627/**
26628 @brief Process Update Scan Params function
26629
26630 @param pWDICtx: pointer to the WLAN DAL context
26631 pEventData: pointer to the event information structure
26632
26633 @see
26634 @return Result of the function call
26635*/
26636WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026637WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026638(
Jeff Johnson295189b2012-06-20 16:38:30 -070026639 WDI_ControlBlockType* pWDICtx,
26640 WDI_EventInfoType* pEventData
26641)
26642{
26643 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26644 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026645 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026646 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026647 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026648
26649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 -------------------------------------------------------------------------*/
26652 if (( NULL == pEventData ) ||
26653 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26654 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26655 {
26656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026660 }
26661
26662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26663 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026664
26665 //
26666 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26667 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026668 if ( pWDICtx->wlanVersion.revision < 1 )
26669 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026670 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026671 &pSendBuffer, &usSendSize);
26672 }
26673 else
26674 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026675 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26676 &pSendBuffer, &usSendSize);
26677 }
26678
26679 if(WDI_STATUS_SUCCESS != wdiStatus)
26680 {
26681 //memory allocation failed
26682 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026683 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026684
Jeff Johnson295189b2012-06-20 16:38:30 -070026685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026686 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026689 wdiUpdateScanParamsCb, pEventData->pUserData,
26690 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026691}
26692
26693/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026694 @brief Process Update Channel Params function
26695
26696 @param pWDICtx: pointer to the WLAN DAL context
26697 pEventData: pointer to the event information structure
26698
26699 @see
26700 @return Result of the function call
26701*/
26702WDI_Status
26703WDI_ProcessUpdateChannelParamsReq
26704(
26705 WDI_ControlBlockType* pWDICtx,
26706 WDI_EventInfoType* pEventData
26707)
26708{
26709 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26710 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26711 wpt_uint8* pSendBuffer = NULL;
26712 wpt_uint16 usDataOffset = 0;
26713 wpt_uint16 usSendSize = 0;
26714 tUpdateChannelReqType *updateChannelParams;
26715 wpt_uint32 usUpdateChanParamSize;
26716 wpt_uint8 num_channels = 0;
26717
26718 /*-------------------------------------------------------------------------
26719 Sanity check
26720 -------------------------------------------------------------------------*/
26721 if (( NULL == pEventData ) ||
26722 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26723 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26724 {
26725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26726 "%s: Invalid parameters", __func__);
26727 WDI_ASSERT(0);
26728 return WDI_STATUS_E_FAILURE;
26729 }
26730 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026731 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026732
26733 /*-----------------------------------------------------------------------
26734 Get message buffer
26735 -----------------------------------------------------------------------*/
26736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26737 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26738 &pSendBuffer, &usDataOffset, &usSendSize))||
26739 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26740 {
26741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26742 "Unable to get send buffer in Update Channel Params req %p",
26743 pwdiUpdateChanListParams);
26744 WDI_ASSERT(0);
26745 return WDI_STATUS_E_FAILURE;
26746 }
26747 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26748
26749 updateChannelParams->numChan = num_channels;
26750 wpalMemoryCopy(&updateChannelParams->chanParam,
26751 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26752 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26753
26754 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26755 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26756
26757 /*-------------------------------------------------------------------------
26758 Send Update channel request to fw
26759 -------------------------------------------------------------------------*/
26760 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26761 wdiUpdateChanParamsCb, pEventData->pUserData,
26762 WDI_UPDATE_CHAN_RESP);
26763}
26764
26765/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026766 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026767
26768 @param pWDICtx: pointer to the WLAN DAL context
26769 pEventData: pointer to the event information structure
26770
Jeff Johnson295189b2012-06-20 16:38:30 -070026771 @see
26772 @return Result of the function call
26773*/
26774WDI_Status
26775WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026776(
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 WDI_ControlBlockType* pWDICtx,
26778 WDI_EventInfoType* pEventData
26779)
26780{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026781 WDI_LowLevelIndType wdiInd;
26782 tpPrefNetwFoundParams pNetwFoundParams;
26783 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026784
26785
26786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 -------------------------------------------------------------------------*/
26789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26790 ( NULL == pEventData->pEventData ))
26791 {
26792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026794 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 }
26797
26798 /*-------------------------------------------------------------------------
26799 Extract indication and send it to UMAC
26800 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026801 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26802
26803 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26804 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26805 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26806
26807 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26808 {
26809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26810 "%s: fail to allocate memory", __func__);
26811 return WDI_STATUS_MEM_FAILURE;
26812 }
26813
26814 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26815 (pNetwFoundParams->ssId.length < 32 )?
26816 pNetwFoundParams->ssId.length : 32;
26817 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26818 pNetwFoundParams->ssId.ssId,
26819 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26820 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26821 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26822 pNetwFoundParams->frameLength;
26823 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26824 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26825 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026826
26827 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026828 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026829
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 // DEBUG
26831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026832 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026833 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026834 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026835 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026836 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026837 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26838
ltimariub77f24b2013-01-24 18:54:33 -080026839 if ( pWDICtx->wdiLowLevelIndCB )
26840 {
26841 /*Notify UMAC*/
26842 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26843 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026844
26845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026846}
26847
26848/**
26849 @brief Process PNO Rsp function (called when a
26850 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026851
26852 @param pWDICtx: pointer to the WLAN DAL context
26853 pEventData: pointer to the event information structure
26854
Jeff Johnson295189b2012-06-20 16:38:30 -070026855 @see
26856 @return Result of the function call
26857*/
26858WDI_Status
26859WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026860(
Jeff Johnson295189b2012-06-20 16:38:30 -070026861 WDI_ControlBlockType* pWDICtx,
26862 WDI_EventInfoType* pEventData
26863)
26864{
26865 WDI_Status wdiStatus;
26866 eHalStatus halStatus;
26867 WDI_PNOScanCb wdiPNOScanCb = NULL;
26868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26869
26870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026872 -------------------------------------------------------------------------*/
26873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26874 ( NULL == pEventData->pEventData ))
26875 {
26876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026880 }
26881
26882
Jeff Johnsone7245742012-09-05 17:12:55 -070026883 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026884
26885 /*-------------------------------------------------------------------------
26886 Extract response and send it to UMAC
26887 -------------------------------------------------------------------------*/
26888 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026889 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026890
26891 /*Notify UMAC*/
26892 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26893
Jeff Johnsone7245742012-09-05 17:12:55 -070026894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895}/*WDI_ProcessSetPreferredNetworkRsp*/
26896
26897/**
26898 @brief Process RSSI Filter Rsp function (called when a
26899 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026900
26901 @param pWDICtx: pointer to the WLAN DAL context
26902 pEventData: pointer to the event information structure
26903
Jeff Johnson295189b2012-06-20 16:38:30 -070026904 @see
26905 @return Result of the function call
26906*/
26907WDI_Status
26908WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026909(
Jeff Johnson295189b2012-06-20 16:38:30 -070026910 WDI_ControlBlockType* pWDICtx,
26911 WDI_EventInfoType* pEventData
26912)
26913{
26914 WDI_Status wdiStatus;
26915 eHalStatus halStatus;
26916 WDI_RssiFilterCb wdiRssiFilterCb;
26917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26918
26919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026921 -------------------------------------------------------------------------*/
26922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26923 ( NULL == pEventData->pEventData ))
26924 {
26925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026929 }
26930
Jeff Johnsone7245742012-09-05 17:12:55 -070026931 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026932
26933 /*-------------------------------------------------------------------------
26934 Extract response and send it to UMAC
26935 -------------------------------------------------------------------------*/
26936 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026937 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026938
26939 /*Notify UMAC*/
26940 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26941
Jeff Johnsone7245742012-09-05 17:12:55 -070026942 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026943}/*WDI_ProcessSetRssiFilterRsp*/
26944
26945/**
26946 @brief Process Update Scan Params Rsp function (called when a
26947 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026948
26949 @param pWDICtx: pointer to the WLAN DAL context
26950 pEventData: pointer to the event information structure
26951
Jeff Johnson295189b2012-06-20 16:38:30 -070026952 @see
26953 @return Result of the function call
26954*/
26955WDI_Status
26956WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026957(
Jeff Johnson295189b2012-06-20 16:38:30 -070026958 WDI_ControlBlockType* pWDICtx,
26959 WDI_EventInfoType* pEventData
26960)
26961{
26962 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026963 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026964 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026965 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26967
26968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026970 -------------------------------------------------------------------------*/
26971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26972 ( NULL == pEventData->pEventData ))
26973 {
26974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026978 }
26979
26980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026981 "%s: Process UPD scan params ptr : %p",
26982 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026983
Jeff Johnsone7245742012-09-05 17:12:55 -070026984 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026985
26986 /*-------------------------------------------------------------------------
26987 Extract response and send it to UMAC
26988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026989 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26990 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026991 sizeof(halUpdScanParams.status));
26992
26993 uStatus = halUpdScanParams.status;
26994
26995 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026996 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026997
26998 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026999 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027000
Jeff Johnsone7245742012-09-05 17:12:55 -070027001 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027002
27003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027004 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027005 halUpdScanParams.status);
27006
27007 /*Notify UMAC*/
27008 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27009
Jeff Johnsone7245742012-09-05 17:12:55 -070027010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027011}
27012#endif // FEATURE_WLAN_SCAN_PNO
27013
27014#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027015WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027016WDI_8023MulticastListReq
27017(
27018 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27019 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27020 void* pUserData
27021)
27022{
27023 WDI_EventInfoType wdiEventData;
27024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27025
27026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027027 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027028
27029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027030 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027031 ------------------------------------------------------------------------*/
27032 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27033 {
27034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27035 "WDI API call before module is initialized - Fail request");
27036
Jeff Johnsone7245742012-09-05 17:12:55 -070027037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027038 }
27039
27040 /*------------------------------------------------------------------------
27041 Fill in Event data and post to the Main FSM
27042 ------------------------------------------------------------------------*/
27043 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027044 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027045 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027046 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 wdiEventData.pUserData = pUserData;
27048
27049 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27050}
27051
Jeff Johnsone7245742012-09-05 17:12:55 -070027052WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027053WDI_ReceiveFilterSetFilterReq
27054(
27055 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27056 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27057 void* pUserData
27058)
27059{
27060 WDI_EventInfoType wdiEventData;
27061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27062
27063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027064 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027065
27066 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027067 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027068 ------------------------------------------------------------------------*/
27069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27070 {
27071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27072 "WDI API call before module is initialized - Fail request");
27073
Jeff Johnsone7245742012-09-05 17:12:55 -070027074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027075 }
27076
27077 /*------------------------------------------------------------------------
27078 Fill in Event data and post to the Main FSM
27079 ------------------------------------------------------------------------*/
27080 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027081 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27082 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027083 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27084 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027085 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027086 wdiEventData.pUserData = pUserData;
27087
27088
27089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27090}
27091
Jeff Johnsone7245742012-09-05 17:12:55 -070027092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027093WDI_FilterMatchCountReq
27094(
27095 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27096 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27097 void* pUserData
27098)
27099{
27100 WDI_EventInfoType wdiEventData;
27101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27102
27103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027104 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027105
27106 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027107 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 ------------------------------------------------------------------------*/
27109 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27110 {
27111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27112 "WDI API call before module is initialized - Fail request");
27113
Jeff Johnsone7245742012-09-05 17:12:55 -070027114 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027115 }
27116
27117 /*------------------------------------------------------------------------
27118 Fill in Event data and post to the Main FSM
27119 ------------------------------------------------------------------------*/
27120 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027121 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027122 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027123 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027124 wdiEventData.pUserData = pUserData;
27125
27126
27127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27128}
27129
Jeff Johnsone7245742012-09-05 17:12:55 -070027130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027131WDI_ReceiveFilterClearFilterReq
27132(
27133 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27134 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27135 void* pUserData
27136)
27137{
27138 WDI_EventInfoType wdiEventData;
27139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27140
27141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027142 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027143
27144 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027146 ------------------------------------------------------------------------*/
27147 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27148 {
27149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27150 "WDI API call before module is initialized - Fail request");
27151
Jeff Johnsone7245742012-09-05 17:12:55 -070027152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027153 }
27154
27155 /*------------------------------------------------------------------------
27156 Fill in Event data and post to the Main FSM
27157 ------------------------------------------------------------------------*/
27158 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027159 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027160 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027161 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 wdiEventData.pUserData = pUserData;
27163
27164
27165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27166}
27167
27168/**
27169 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027170
27171 @param pWDICtx: pointer to the WLAN DAL context
27172 pEventData: pointer to the event information structure
27173
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 @see
27175 @return Result of the function call
27176*/
27177WDI_Status
27178WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027179(
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 WDI_ControlBlockType* pWDICtx,
27181 WDI_EventInfoType* pEventData
27182)
27183{
27184 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27185 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027186 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 wpt_uint16 usDataOffset = 0;
27188 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027189 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027190 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027191 wpt_uint8 ucCurrentBSSSesIdx = 0;
27192 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027193
27194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027195 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027196
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027197 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27198 if( NULL == pRcvFltMcAddrListType )
27199 {
27200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27201 "Failed to alloc in WDI_Process8023MulticastListReq");
27202 return WDI_STATUS_E_FAILURE;
27203 }
27204
Jeff Johnson295189b2012-06-20 16:38:30 -070027205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027207 -------------------------------------------------------------------------*/
27208 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027209 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027210 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027211 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027212 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27213 {
27214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027215 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027216 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027218 return WDI_STATUS_E_FAILURE;
27219 }
27220
27221 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27222 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27223 &pBSSSes);
27224 if ( NULL == pBSSSes )
27225 {
27226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027227 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027228 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 }
27231
27232 /*-----------------------------------------------------------------------
27233 Get message buffer
27234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27236 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027237 sizeof(tHalRcvFltMcAddrListType),
27238 &pSendBuffer, &usDataOffset, &usSendSize))||
27239 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27240 {
27241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27242 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027243 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027244 pEventData, pwdiFltPktSetMcListReqParamsType,
27245 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027246 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 }
27250
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027251 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027253 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027254 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027255 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27257 sizeof(tSirMacAddr));
27258 }
27259
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027260 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027262 pRcvFltMcAddrListType,
27263 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027264
27265 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027266 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027267
27268
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027269 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027271 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027274 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027275 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027276}
27277
27278/**
27279 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027280
27281 @param pWDICtx: pointer to the WLAN DAL context
27282 pEventData: pointer to the event information structure
27283
Jeff Johnson295189b2012-06-20 16:38:30 -070027284 @see
27285 @return Result of the function call
27286*/
27287WDI_Status
27288WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027289(
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 WDI_ControlBlockType* pWDICtx,
27291 WDI_EventInfoType* pEventData
27292)
27293{
27294 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27295 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 wpt_uint16 usDataOffset = 0;
27298 wpt_uint16 usSendSize = 0;
27299 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027300 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027301 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027302 wpt_uint8 ucCurrentBSSSesIdx = 0;
27303 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027304 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27305 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027306
27307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027308 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027309
27310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027312 -------------------------------------------------------------------------*/
27313 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027314 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027315 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027316 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27318 {
27319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027322 return WDI_STATUS_E_FAILURE;
27323 }
27324
27325 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27326 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27327 &pBSSSes);
27328 if ( NULL == pBSSSes )
27329 {
27330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027331 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 }
27334
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027335 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27336 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027337
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027338 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27339 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27340 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27341
27342 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27343 usSessRcvPktFilterCfgSize);
27344
27345 if(NULL == pSessRcvPktFilterCfg)
27346 {
27347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27348 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027349 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027350 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027351 WDI_ASSERT(0);
27352 return WDI_STATUS_E_FAILURE;
27353 }
27354
27355 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27356
27357 /*-----------------------------------------------------------------------
27358 Get message buffer
27359 -----------------------------------------------------------------------*/
27360
27361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27362 usSessRcvPktFilterCfgSize,
27363 &pSendBuffer, &usDataOffset, &usSendSize))||
27364 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27365 {
27366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27367 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027368 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027369 pEventData, pwdiSetRcvPktFilterReqInfo,
27370 wdiReceiveFilterSetFilterCb);
27371 WDI_ASSERT(0);
27372 wpalMemoryFree(pSessRcvPktFilterCfg);
27373 return WDI_STATUS_E_FAILURE;
27374 }
27375
27376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027377 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027378 usSendSize,pSessRcvPktFilterCfg);
27379
27380 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27381 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27382 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27383 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27384
27385 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27386
27387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27388 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27389 pSessRcvPktFilterCfg->filterType);
27390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27391 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27392 pSessRcvPktFilterCfg->coleasceTime);
27393
27394 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27395 {
27396 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27397 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27398 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27399 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27400 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27401 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27402 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27403 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27404
27405 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27406 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27407 8);
27408 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27409 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27410 8);
27411
27412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027413 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027414 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27415 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27416
27417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027418 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027419 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27420 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27421
27422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027423 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027424 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27425 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27426 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27427 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27428 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27429 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27430
27431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027432 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027433 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27434 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27435 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27436 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27437 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27438 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27439 }
27440
27441 wpalMemoryCopy( pSendBuffer+usDataOffset,
27442 pSessRcvPktFilterCfg,
27443 usSessRcvPktFilterCfgSize);
27444
27445
27446 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27447 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27448
27449 wpalMemoryFree(pSessRcvPktFilterCfg);
27450
27451 }
27452 /*If SLM_SESSIONIZATION is not supported then do this */
27453 else
27454 {
27455 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27456 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27457 * sizeof(tHalRcvPktFilterParams));
27458
27459 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 usRcvPktFilterCfgSize);
27461
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027462 if(NULL == pRcvPktFilterCfg)
27463 {
27464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27465 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027466 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027467 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027468 WDI_ASSERT(0);
27469 return WDI_STATUS_E_FAILURE;
27470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027472 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027474 /*-----------------------------------------------------------------------
27475 Get message buffer
27476 -----------------------------------------------------------------------*/
27477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 usRcvPktFilterCfgSize,
27479 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027480 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27481 {
27482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027484 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027485 pEventData, pwdiSetRcvPktFilterReqInfo,
27486 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 WDI_ASSERT(0);
27488 wpalMemoryFree(pRcvPktFilterCfg);
27489 return WDI_STATUS_E_FAILURE;
27490 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027491
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027493 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027494 usSendSize,usRcvPktFilterCfgSize);
27495
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027496 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27497 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27498 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27499 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027500
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027505 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027508 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27509 {
27510 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27511 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27512 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27513 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27514 pRcvPktFilterCfg->paramsData[i].dataOffset =
27515 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27516 pRcvPktFilterCfg->paramsData[i].dataLength =
27517 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027518
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027519 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27521 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027522 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027523 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27524 8);
27525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027527 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027528 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027529 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27530
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027532 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027533 pRcvPktFilterCfg->paramsData[i].dataOffset,
27534 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027535
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027537 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027538 pRcvPktFilterCfg->paramsData[i].compareData[0],
27539 pRcvPktFilterCfg->paramsData[i].compareData[1],
27540 pRcvPktFilterCfg->paramsData[i].compareData[2],
27541 pRcvPktFilterCfg->paramsData[i].compareData[3],
27542 pRcvPktFilterCfg->paramsData[i].compareData[4],
27543 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027546 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027547 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27548 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27549 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27550 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27551 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27552 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27553 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027554
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027555 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027556 pRcvPktFilterCfg,
27557 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027558
27559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027560 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27561 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027564 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027565 wpalMemoryFree(pRcvPktFilterCfg);
27566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027568 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027571 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027572 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027573}
27574
27575/**
27576 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027577
27578 @param pWDICtx: pointer to the WLAN DAL context
27579 pEventData: pointer to the event information structure
27580
Jeff Johnson295189b2012-06-20 16:38:30 -070027581 @see
27582 @return Result of the function call
27583*/
27584WDI_Status
27585WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027586(
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 WDI_ControlBlockType* pWDICtx,
27588 WDI_EventInfoType* pEventData
27589)
27590{
27591 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27592 NULL;
27593 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27594 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027595 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027596 wpt_uint16 usDataOffset = 0;
27597 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027598 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27599 wpt_uint8 ucCurrentBSSSesIdx = 0;
27600 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027601
27602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027603 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027604
27605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027607 -------------------------------------------------------------------------*/
27608 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027611 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027612 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27613 {
27614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027618 }
27619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027620 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27621 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27622 &pBSSSes);
27623 if ( NULL == pBSSSes )
27624 {
27625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027626 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027627 return WDI_STATUS_E_FAILURE;
27628 }
27629
Jeff Johnson295189b2012-06-20 16:38:30 -070027630 /*-----------------------------------------------------------------------
27631 Get message buffer
27632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27634 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027635 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027636 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027637 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027638 {
27639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27640 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027641 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027642 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27643 wdiFilterMatchCountCb);
27644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027646 }
27647
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027648 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27649 wpalMemoryCopy( pSendBuffer+usDataOffset,
27650 &rcvFltPktMatchCntReqParam,
27651 sizeof(rcvFltPktMatchCntReqParam));
27652
Jeff Johnson295189b2012-06-20 16:38:30 -070027653 //
27654 // Don't need to fill send buffer other than header
27655 //
27656 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658
27659
27660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027661 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027663 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27664 wdiFilterMatchCountCb,
27665 pEventData->pUserData,
27666 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027667}
27668
27669/**
27670 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027671
27672 @param pWDICtx: pointer to the WLAN DAL context
27673 pEventData: pointer to the event information structure
27674
Jeff Johnson295189b2012-06-20 16:38:30 -070027675 @see
27676 @return Result of the function call
27677*/
27678WDI_Status
27679WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027680(
Jeff Johnson295189b2012-06-20 16:38:30 -070027681 WDI_ControlBlockType* pWDICtx,
27682 WDI_EventInfoType* pEventData
27683)
Jeff Johnsone7245742012-09-05 17:12:55 -070027684{
Jeff Johnson295189b2012-06-20 16:38:30 -070027685 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27686 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027687 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 wpt_uint16 usDataOffset = 0;
27689 wpt_uint16 usSendSize = 0;
27690 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027691 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027692 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027693
27694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027695 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027696
27697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027699 -------------------------------------------------------------------------*/
27700 if (( NULL == pEventData ) ||
27701 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27702 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027703 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027704 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27705 {
27706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027709 return WDI_STATUS_E_FAILURE;
27710 }
27711
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027712 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027713 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27714 &pBSSSes);
27715 if ( NULL == pBSSSes )
27716 {
27717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027718 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027720 }
27721
27722 /*-----------------------------------------------------------------------
27723 Get message buffer
27724 -----------------------------------------------------------------------*/
27725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027726 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027727 sizeof(tHalRcvFltPktClearParam),
27728 &pSendBuffer, &usDataOffset, &usSendSize))||
27729 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27730 {
27731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27732 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027733 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027734 pEventData, pwdiRcvFltPktClearReqParamsType,
27735 wdiRcvFltPktClearFilterCb);
27736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027738 }
27739
27740
27741 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027742 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027744 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027745
Jeff Johnsone7245742012-09-05 17:12:55 -070027746 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27747 wpalMemoryCopy( pSendBuffer+usDataOffset,
27748 &rcvFltPktClearParam,
27749 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027750
27751 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027752 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027753
27754
27755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027756 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027761}
27762
27763/**
27764 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027765
27766 @param pWDICtx: pointer to the WLAN DAL context
27767 pEventData: pointer to the event information structure
27768
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 @see
27770 @return Result of the function call
27771*/
27772WDI_Status
27773WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027774(
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 WDI_ControlBlockType* pWDICtx,
27776 WDI_EventInfoType* pEventData
27777)
27778{
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 eHalStatus halStatus;
27780 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027781 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27782 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27784
27785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027786 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027787
27788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 -------------------------------------------------------------------------*/
27791 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27792 ( NULL == pEventData->pEventData ))
27793 {
27794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027798 }
27799
Jeff Johnsone7245742012-09-05 17:12:55 -070027800 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027801
27802 /*-------------------------------------------------------------------------
27803 Extract response and send it to UMAC
27804 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027805 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27806 {
27807 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27808 pEventData->pEventData,
27809 sizeof(halRcvFltPktSetMcListRsp));
27810
27811 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27812 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27813 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27814 halRcvFltPktSetMcListRsp.bssIdx;
27815 }
27816 else
27817 {
27818 halStatus = *((eHalStatus*)pEventData->pEventData);
27819 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027821
27822 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027823 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027824
Jeff Johnsone7245742012-09-05 17:12:55 -070027825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027826}
27827
27828/**
27829 @brief Process Set Rsp function (called when a
27830 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027831
27832 @param pWDICtx: pointer to the WLAN DAL context
27833 pEventData: pointer to the event information structure
27834
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 @see
27836 @return Result of the function call
27837*/
27838WDI_Status
27839WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027840(
Jeff Johnson295189b2012-06-20 16:38:30 -070027841 WDI_ControlBlockType* pWDICtx,
27842 WDI_EventInfoType* pEventData
27843)
27844{
Jeff Johnson295189b2012-06-20 16:38:30 -070027845 eHalStatus halStatus;
27846 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027847 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27848 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27850
27851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027852 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027853
27854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027856 -------------------------------------------------------------------------*/
27857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27858 ( NULL == pEventData->pEventData ))
27859 {
27860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027864 }
27865
27866 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027867 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027868
27869 /*-------------------------------------------------------------------------
27870 Extract response and send it to UMAC
27871 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027872 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27873 {
27874 wpalMemoryCopy( &halSetPktFilterRspParams,
27875 pEventData->pEventData,
27876 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027877
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027878 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27879 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27880 }
27881 else
27882 {
27883 halStatus = *((eHalStatus*)pEventData->pEventData);
27884 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27885 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027886 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027887 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027888
Jeff Johnsone7245742012-09-05 17:12:55 -070027889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027890}
27891
27892/**
27893 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027894
27895 @param pWDICtx: pointer to the WLAN DAL context
27896 pEventData: pointer to the event information structure
27897
Jeff Johnson295189b2012-06-20 16:38:30 -070027898 @see
27899 @return Result of the function call
27900*/
27901WDI_Status
27902WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027903(
Jeff Johnson295189b2012-06-20 16:38:30 -070027904 WDI_ControlBlockType* pWDICtx,
27905 WDI_EventInfoType* pEventData
27906)
27907{
Jeff Johnson295189b2012-06-20 16:38:30 -070027908 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027909 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027910 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27911 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027912
27913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27914
27915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027916 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027917
27918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027920 -------------------------------------------------------------------------*/
27921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27922 ( NULL == pEventData->pEventData ))
27923 {
27924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 }
27929
Jeff Johnsone7245742012-09-05 17:12:55 -070027930 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027931
27932 /*-------------------------------------------------------------------------
27933 Extract response and send it to UMAC
27934 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027935 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27936 {
27937 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27938 pEventData->pEventData,
27939 sizeof(halRcvFltrPktMatachRsp));
27940
27941 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27942 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27943 }
27944 else
27945 {
27946 halStatus = *((eHalStatus*)pEventData->pEventData);
27947 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27948 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027949
27950 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027951 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027952
Jeff Johnsone7245742012-09-05 17:12:55 -070027953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027954}
27955
27956/**
27957 @brief Process Receive Filter Clear Filter Response 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_ProcessReceiveFilterClearFilterRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070027972 eHalStatus halStatus;
27973 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027974 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27975 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27977
27978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027979 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027980
27981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027983 -------------------------------------------------------------------------*/
27984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27985 ( NULL == pEventData->pEventData ))
27986 {
27987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027991 }
27992
27993 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027994 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027995
27996 /*-------------------------------------------------------------------------
27997 Extract response and send it to UMAC
27998 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027999 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28000 {
28001 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28002 pEventData->pEventData,
28003 sizeof(halRcvFltPktClearRspMsg));
28004
28005 wdiRcvFltPktClearRspParamsType.wdiStatus =
28006 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28007 wdiRcvFltPktClearRspParamsType.bssIdx =
28008 halRcvFltPktClearRspMsg.bssIdx;
28009 }
28010 else
28011 {
28012 halStatus = *((eHalStatus*)pEventData->pEventData);
28013 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28014 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028015
28016 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028017 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028018
Jeff Johnsone7245742012-09-05 17:12:55 -070028019 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028020}
28021#endif // WLAN_FEATURE_PACKET_FILTERING
28022
28023/**
28024 @brief Process Shutdown Rsp function
28025 There is no shutdown response comming from HAL
28026 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028027
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028029 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028030
28031 @see
28032 @return Result of the function call
28033*/
28034WDI_Status
28035WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028036(
Jeff Johnson295189b2012-06-20 16:38:30 -070028037 WDI_ControlBlockType* pWDICtx,
28038 WDI_EventInfoType* pEventData
28039)
28040{
28041 /*There is no shutdown response comming from HAL - function just kept for
28042 simmetry */
28043 WDI_ASSERT(0);
28044 return WDI_STATUS_SUCCESS;
28045}/*WDI_ProcessShutdownRsp*/
28046
28047/**
28048 @brief WDI_SetPowerParamsReq
28049
Jeff Johnsone7245742012-09-05 17:12:55 -070028050 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028051 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028052
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 wdiPowerParamsCb: callback for passing back the response
28054 of the Set Power Params operation received from the
28055 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028056
Jeff Johnson295189b2012-06-20 16:38:30 -070028057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028058 callback
28059
Jeff Johnson295189b2012-06-20 16:38:30 -070028060 @return Result of the function call
28061*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028062WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028063WDI_SetPowerParamsReq
28064(
28065 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28066 WDI_SetPowerParamsCb wdiPowerParamsCb,
28067 void* pUserData
28068)
28069{
28070 WDI_EventInfoType wdiEventData;
28071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28072
28073 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028074 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028075 ------------------------------------------------------------------------*/
28076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28077 {
28078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28079 "WDI API call before module is initialized - Fail request");
28080
Jeff Johnsone7245742012-09-05 17:12:55 -070028081 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028082 }
28083
28084 /*------------------------------------------------------------------------
28085 Fill in Event data and post to the Main FSM
28086 ------------------------------------------------------------------------*/
28087 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028088 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028089 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028090 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028091 wdiEventData.pUserData = pUserData;
28092
28093 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28094}/*WDI_SetPowerParamsReq*/
28095
28096/**
28097 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028098
28099 @param pWDICtx: pointer to the WLAN DAL context
28100 pEventData: pointer to the event information structure
28101
Jeff Johnson295189b2012-06-20 16:38:30 -070028102 @see
28103 @return Result of the function call
28104*/
28105WDI_Status
28106WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028107(
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 WDI_ControlBlockType* pWDICtx,
28109 WDI_EventInfoType* pEventData
28110)
28111{
28112 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28113 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028114 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 wpt_uint16 usDataOffset = 0;
28116 wpt_uint16 usSendSize = 0;
28117 tSetPowerParamsType powerParams;
28118
28119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 -------------------------------------------------------------------------*/
28122 if (( NULL == pEventData ) ||
28123 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28124 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28125 {
28126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028130 }
28131
28132 /*-----------------------------------------------------------------------
28133 Get message buffer
28134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028136 sizeof(powerParams),
28137 &pSendBuffer, &usDataOffset, &usSendSize))||
28138 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28139 {
28140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028141 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028145 }
28146
28147 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028148 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028149 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28150
28151 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028152 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028153 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28154
28155 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028156 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028157 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28158
28159 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028160 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028161 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28162
28163 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028164 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028165 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28166
28167 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028168 powerParams.uBETInterval =
28169 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028170
Yue Mac24062f2013-05-13 17:01:29 -070028171 /* MAX LI for modulated DTIM */
28172 powerParams.uMaxLIModulatedDTIM =
28173 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028174
28175 wpalMemoryCopy( pSendBuffer+usDataOffset,
28176 &powerParams,
28177 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028178
28179 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028180 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028181
28182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028183 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28186 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028187}
28188
28189/**
28190 @brief Process Power Params Rsp function (called when a
28191 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028192
28193 @param pWDICtx: pointer to the WLAN DAL context
28194 pEventData: pointer to the event information structure
28195
Jeff Johnson295189b2012-06-20 16:38:30 -070028196 @see
28197 @return Result of the function call
28198*/
28199WDI_Status
28200WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028201(
Jeff Johnson295189b2012-06-20 16:38:30 -070028202 WDI_ControlBlockType* pWDICtx,
28203 WDI_EventInfoType* pEventData
28204)
28205{
28206 WDI_Status wdiStatus;
28207 eHalStatus halStatus;
28208 WDI_SetPowerParamsCb wdiPowerParamsCb;
28209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28210
28211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028213 -------------------------------------------------------------------------*/
28214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28215 ( NULL == pEventData->pEventData ))
28216 {
28217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028221 }
28222
Jeff Johnsone7245742012-09-05 17:12:55 -070028223 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028224
28225 /*-------------------------------------------------------------------------
28226 Extract response and send it to UMAC
28227 -------------------------------------------------------------------------*/
28228 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028229 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028230
28231 /*Notify UMAC*/
28232 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28233
Jeff Johnsone7245742012-09-05 17:12:55 -070028234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028235}/*WDI_ProcessSetPowerParamsRsp*/
28236
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028237/**
28238 @brief WDI_dhcpStartInd
28239 Host will send an event to the FW when DHCP is initiated
28240
28241 @param
28242 WDI_DHCPInd: DHCP Indication
28243 @see
28244 @return Result of the function call
28245*/
28246WDI_Status
28247WDI_dhcpStartInd
28248(
28249 WDI_DHCPInd *wdiDHCPInd
28250)
28251{
28252 WDI_EventInfoType wdiEventData;
28253
28254 /*------------------------------------------------------------------------
28255 Sanity Check
28256 ------------------------------------------------------------------------*/
28257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28258 {
28259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28260 "WDI API call before module is initialized - Fail request");
28261
28262 return WDI_STATUS_E_NOT_ALLOWED;
28263 }
28264
28265 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28266 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028267 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028268 wdiEventData.pCBfnc = NULL;
28269 wdiEventData.pUserData = NULL;
28270
28271 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28272}
28273
28274
28275/**
28276 @brief WDI_dhcpStopInd
28277 Host will send an event to the FW when DHCP is completed
28278
28279 @param
28280 WDI_DHCPInd: DHCP Indication
28281 @see
28282 @return Result of the function call
28283*/
28284WDI_Status
28285WDI_dhcpStopInd
28286(
28287 WDI_DHCPInd *wdiDHCPInd
28288)
28289{
28290 WDI_EventInfoType wdiEventData;
28291
28292 /*------------------------------------------------------------------------
28293 Sanity Check
28294 ------------------------------------------------------------------------*/
28295 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28296 {
28297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28298 "WDI API call before module is initialized - Fail request");
28299
28300 return WDI_STATUS_E_NOT_ALLOWED;
28301 }
28302
28303 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28304 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028305 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028306 wdiEventData.pCBfnc = NULL;
28307 wdiEventData.pUserData = NULL;
28308
28309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28310}
28311
28312
28313/**
28314 @brief Process DHCP Start Indication message and post it to HAL
28315
28316 @param pWDICtx: pointer to the WLAN DAL context
28317 pEventData: pointer to the event information structure
28318
28319 @see
28320 @return Result of the function call
28321*/
28322WDI_Status
28323WDI_ProcessDHCPStartInd
28324(
28325 WDI_ControlBlockType* pWDICtx,
28326 WDI_EventInfoType* pEventData
28327)
28328{
28329 wpt_uint8* pSendBuffer = NULL;
28330 wpt_uint16 usDataOffset = 0;
28331 wpt_uint16 usSendSize = 0;
28332 wpt_uint16 usLen = 0;
28333 WDI_DHCPInd* pwdiDHCPInd = NULL;
28334 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028335 WDI_Status wdiStatus;
28336
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028337
28338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28339
28340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28341 "%s", __func__);
28342
28343 /*-------------------------------------------------------------------------
28344 Sanity check
28345 -------------------------------------------------------------------------*/
28346 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28347 {
28348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28349 "%s: Invalid parameters", __func__);
28350 WDI_ASSERT(0);
28351 return WDI_STATUS_E_FAILURE;
28352 }
28353 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28354 /*-----------------------------------------------------------------------
28355 Get message buffer
28356 -----------------------------------------------------------------------*/
28357
28358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28359 WDI_DHCP_START_IND,
28360 sizeof(tDHCPInfo),
28361 &pSendBuffer, &usDataOffset, &usSendSize))||
28362 ( usSendSize < (usDataOffset + usLen )))
28363 {
28364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28365 "Unable to get send buffer in DHCP Start req %p ",
28366 pEventData);
28367 WDI_ASSERT(0);
28368 return WDI_STATUS_E_FAILURE;
28369 }
28370
Sandeep Puligillaee789512014-02-13 19:14:52 +053028371 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028372 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28373 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28374 WDI_MAC_ADDR_LEN);
28375
28376 pWDICtx->pReqStatusUserData = NULL;
28377 pWDICtx->pfncRspCB = NULL;
28378
28379 /*-------------------------------------------------------------------------
28380 Send DHCP Start Indication to HAL
28381 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028382 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28383 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028384}/*WDI_ProcessDHCPStartInd*/
28385
28386/**
28387 @brief Process DHCP Stop indication message and post it to HAL
28388
28389 @param pWDICtx: pointer to the WLAN DAL context
28390 pEventData: pointer to the event information structure
28391
28392 @see
28393 @return Result of the function call
28394*/
28395WDI_Status
28396WDI_ProcessDHCPStopInd
28397(
28398 WDI_ControlBlockType* pWDICtx,
28399 WDI_EventInfoType* pEventData
28400)
28401{
28402 wpt_uint8* pSendBuffer = NULL;
28403 wpt_uint16 usDataOffset = 0;
28404 wpt_uint16 usSendSize = 0;
28405 wpt_uint16 usLen = 0;
28406 WDI_DHCPInd* pwdiDHCPInd = NULL;
28407 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028408 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028409
28410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28411
28412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28413 "%s", __func__);
28414
28415 /*-------------------------------------------------------------------------
28416 Sanity check
28417 -------------------------------------------------------------------------*/
28418
28419 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28420 {
28421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28422 "%s: Invalid parameters", __func__);
28423 WDI_ASSERT(0);
28424 return WDI_STATUS_E_FAILURE;
28425 }
28426 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28427 /*-----------------------------------------------------------------------
28428 Get message buffer
28429 -----------------------------------------------------------------------*/
28430
28431 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28432 WDI_DHCP_STOP_IND,
28433 sizeof(tDHCPInfo),
28434 &pSendBuffer, &usDataOffset, &usSendSize))||
28435 ( usSendSize < (usDataOffset + usLen )))
28436 {
28437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28438 "Unable to get send buffer in DHCP Start req %p ",
28439 pEventData);
28440 WDI_ASSERT(0);
28441 return WDI_STATUS_E_FAILURE;
28442 }
28443
Sandeep Puligillaee789512014-02-13 19:14:52 +053028444 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028445 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28446 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28447 WDI_MAC_ADDR_LEN);
28448
28449 pWDICtx->pReqStatusUserData = NULL;
28450 pWDICtx->pfncRspCB = NULL;
28451 /*-------------------------------------------------------------------------
28452 Send DHCP Stop indication to HAL
28453 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028454 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28455 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028456
28457}/*WDI_ProcessDHCPStopInd*/
28458
28459
Jeff Johnson295189b2012-06-20 16:38:30 -070028460#ifdef WLAN_FEATURE_GTK_OFFLOAD
28461/**
28462 @brief WDI_GTKOffloadReq will be called when the upper MAC
28463 wants to set GTK Rekey Counter while in power save. Upon
28464 the call of this API the WLAN DAL will pack and send a
28465 HAL GTK offload request message to the lower RIVA
28466 sub-system if DAL is in state STARTED.
28467
28468 In state BUSY this request will be queued. Request won't
28469 be allowed in any other state.
28470
28471 WDI_PostAssocReq must have been called.
28472
28473 @param pwdiGtkOffloadParams: the GTK offload as specified
28474 by the Device Interface
28475
28476 wdiGtkOffloadCb: callback for passing back the response
28477 of the GTK offload operation received from the device
28478
28479 pUserData: user data will be passed back with the
28480 callback
28481
28482 @see WDI_PostAssocReq
28483 @return Result of the function call
28484*/
28485WDI_Status
28486WDI_GTKOffloadReq
28487(
28488 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28489 WDI_GtkOffloadCb wdiGtkOffloadCb,
28490 void* pUserData
28491)
28492{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028493 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28495
28496 /*------------------------------------------------------------------------
28497 Sanity Check
28498 ------------------------------------------------------------------------*/
28499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28500 {
28501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28502 "WDI API call before module is initialized - Fail request");
28503
28504 return WDI_STATUS_E_NOT_ALLOWED;
28505 }
28506
28507 /*------------------------------------------------------------------------
28508 Fill in Event data and post to the Main FSM
28509 ------------------------------------------------------------------------*/
28510 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28511 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028512 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028513 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28514 wdiEventData.pUserData = pUserData;
28515
28516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28517}
28518
28519
28520/**
28521 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28522 MAC wants to get GTK Rekey Counter while in power save.
28523 Upon the call of this API the WLAN DAL will pack and
28524 send a HAL GTK offload request message to the lower RIVA
28525 sub-system if DAL is in state STARTED.
28526
28527 In state BUSY this request will be queued. Request won't
28528 be allowed in any other state.
28529
28530 WDI_PostAssocReq must have been called.
28531
28532 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28533 Information Message as specified by the
28534 Device Interface
28535
28536 wdiGtkOffloadGetInfoCb: callback for passing back the
28537 response of the GTK offload operation received from the
28538 device
28539
28540 pUserData: user data will be passed back with the
28541 callback
28542
28543 @see WDI_PostAssocReq
28544 @return Result of the function call
28545*/
28546WDI_Status
28547WDI_GTKOffloadGetInfoReq
28548(
28549 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28550 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28551 void* pUserData
28552)
28553{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028554 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28556
28557 /*------------------------------------------------------------------------
28558 Sanity Check
28559 ------------------------------------------------------------------------*/
28560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28561 {
28562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28563 "WDI API call before module is initialized - Fail request");
28564
28565 return WDI_STATUS_E_NOT_ALLOWED;
28566 }
28567
28568 /*------------------------------------------------------------------------
28569 Fill in Event data and post to the Main FSM
28570 ------------------------------------------------------------------------*/
28571 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28572 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28573 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28574 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28575 wdiEventData.pUserData = pUserData;
28576
28577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28578}
28579
28580
28581/**
28582 @brief Process set GTK Offload Request function
28583
28584 @param pWDICtx: pointer to the WLAN DAL context
28585 pEventData: pointer to the event information structure
28586
28587 @see
28588 @return Result of the function call
28589*/
28590WDI_Status
28591WDI_ProcessGTKOffloadReq
28592(
28593 WDI_ControlBlockType* pWDICtx,
28594 WDI_EventInfoType* pEventData
28595)
28596{
28597 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28598 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28599 wpt_uint8* pSendBuffer = NULL;
28600 wpt_uint16 usDataOffset = 0;
28601 wpt_uint16 usSendSize = 0;
28602 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028603 wpt_uint8 ucCurrentSessionId = 0;
28604 WDI_BSSSessionType* pBSSSes = NULL;
28605
Jeff Johnson295189b2012-06-20 16:38:30 -070028606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28607
28608 /*-------------------------------------------------------------------------
28609 Sanity check
28610 -------------------------------------------------------------------------*/
28611 if (( NULL == pEventData ) ||
28612 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28613 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28614 {
28615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028617 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028618 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028619 }
28620
28621 /*-----------------------------------------------------------------------
28622 Get message buffer
28623 -----------------------------------------------------------------------*/
28624 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28625 sizeof(gtkOffloadReqParams),
28626 &pSendBuffer, &usDataOffset, &usSendSize))||
28627 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28628 {
28629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028630 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028631 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28632 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028633 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028634 }
28635
28636 //
28637 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28638 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028639 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28640 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28641 &pBSSSes);
28642 if ( NULL == pBSSSes )
28643 {
28644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028645 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028646 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028647 }
28648
28649 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28650
Jeff Johnson295189b2012-06-20 16:38:30 -070028651 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28652 // Copy KCK
28653 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28654 // Copy KEK
28655 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28656 // Copy KeyReplayCounter
28657 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28658
28659 wpalMemoryCopy( pSendBuffer+usDataOffset,
28660 &gtkOffloadReqParams,
28661 sizeof(gtkOffloadReqParams));
28662
28663 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28664 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28665
28666 /*-------------------------------------------------------------------------
28667 Send Get STA Request to HAL
28668 -------------------------------------------------------------------------*/
28669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28670 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028671
28672fail:
28673 // Release the message buffer so we don't leak
28674 wpalMemoryFree(pSendBuffer);
28675
28676failRequest:
28677 //WDA should have failure check to avoid the memory leak
28678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028679}
28680
28681
28682/**
28683 @brief Process GTK Offload Get Information Request function
28684
28685 @param pWDICtx: pointer to the WLAN DAL context
28686 pEventData: pointer to the event information structure
28687
28688 @see
28689 @return Result of the function call
28690*/
28691WDI_Status
28692WDI_ProcessGTKOffloadGetInfoReq
28693(
28694 WDI_ControlBlockType* pWDICtx,
28695 WDI_EventInfoType* pEventData
28696)
28697{
28698 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28699 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28700 wpt_uint8* pSendBuffer = NULL;
28701 wpt_uint16 usDataOffset = 0;
28702 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028703 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28704 wpt_uint8 ucCurrentSessionId = 0;
28705 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028706
28707 /*-------------------------------------------------------------------------
28708 Sanity check
28709 -------------------------------------------------------------------------*/
28710 if (( NULL == pEventData ) ||
28711 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28712 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28713 {
28714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028716 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028717 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028718 }
28719
28720 /*-----------------------------------------------------------------------
28721 Get message buffer
28722 -----------------------------------------------------------------------*/
28723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028724 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028725 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028726 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028727 {
28728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028729 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028730 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28731 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028732 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028733 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028734 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28735 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28736 &pBSSSes);
28737 if ( NULL == pBSSSes )
28738 {
28739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028740 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028741 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028742 }
28743 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028744
28745 //
28746 // Don't need to fill send buffer other than header
28747 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028748 wpalMemoryCopy( pSendBuffer+usDataOffset,
28749 &halGtkOffloadGetInfoReqParams,
28750 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028751
28752 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28753 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28754
28755 /*-------------------------------------------------------------------------
28756 Send Get STA Request to HAL
28757 -------------------------------------------------------------------------*/
28758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28759 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028760fail:
28761 // Release the message buffer so we don't leak
28762 wpalMemoryFree(pSendBuffer);
28763
28764failRequest:
28765 //WDA should have failure check to avoid the memory leak
28766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028767}
28768
28769/**
28770 @brief Process host offload Rsp function (called when a
28771 response is being received over the bus from HAL)
28772
28773 @param pWDICtx: pointer to the WLAN DAL context
28774 pEventData: pointer to the event information structure
28775
28776 @see
28777 @return Result of the function call
28778*/
28779WDI_Status
28780WDI_ProcessGtkOffloadRsp
28781(
28782 WDI_ControlBlockType* pWDICtx,
28783 WDI_EventInfoType* pEventData
28784)
28785{
Jeff Johnson295189b2012-06-20 16:38:30 -070028786 eHalStatus halStatus;
28787 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028788 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28789 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028790
28791 /*-------------------------------------------------------------------------
28792 Sanity check
28793 -------------------------------------------------------------------------*/
28794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28795 ( NULL == pEventData->pEventData))
28796 {
28797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028799 WDI_ASSERT(0);
28800 return WDI_STATUS_E_FAILURE;
28801 }
28802
Wilson Yang00256342013-10-10 23:13:38 -070028803 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28804
Jeff Johnson295189b2012-06-20 16:38:30 -070028805 /*-------------------------------------------------------------------------
28806 Extract response and send it to UMAC
28807 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028808 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28809 {
28810 wpalMemoryCopy( &halGtkOffloadRspParams,
28811 pEventData->pEventData,
28812 sizeof(halGtkOffloadRspParams));
28813
28814 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028815 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028816 wdiGtkOffloadRsparams.bssIdx =
28817 halGtkOffloadRspParams.bssIdx;
28818 }
28819 else
28820 {
28821 halStatus = *((eHalStatus*)pEventData->pEventData);
28822 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28823 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028824
28825 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028826 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028827
28828 return WDI_STATUS_SUCCESS;
28829}
28830
28831/**
28832 @brief Process GTK Offload Get Information Response function
28833
28834 @param pWDICtx: pointer to the WLAN DAL context
28835 pEventData: pointer to the event information structure
28836
28837 @see
28838 @return Result of the function call
28839*/
28840WDI_Status
28841WDI_ProcessGTKOffloadGetInfoRsp
28842(
28843 WDI_ControlBlockType* pWDICtx,
28844 WDI_EventInfoType* pEventData
28845)
28846{
Jeff Johnson295189b2012-06-20 16:38:30 -070028847 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028848 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028849 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28850 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028851 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028852
Jeff Johnson295189b2012-06-20 16:38:30 -070028853
28854 /*-------------------------------------------------------------------------
28855 Sanity check
28856 -------------------------------------------------------------------------*/
28857 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28858 ( NULL == pEventData->pEventData ))
28859 {
28860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028862 WDI_ASSERT(0);
28863 return WDI_STATUS_E_FAILURE;
28864 }
28865
Wilson Yang00256342013-10-10 23:13:38 -070028866 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28867
28868 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028869 Extract response and send it to UMAC
28870 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028871 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28872 {
28873 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28874 pEventData->pEventData,
28875 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028877 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028878 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028879 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28880 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28881 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28882 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28883 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28884 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28885 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28886 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028887
28888 wpalMutexAcquire(&pWDICtx->wptMutex);
28889 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28890 &pBSSSes);
28891
28892 if ( NULL == pBSSSes )
28893 {
28894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28895 "Association sequence for this BSS does not exist or "
28896 "association no longer in progress - mysterious HAL response");
28897 wpalMutexRelease(&pWDICtx->wptMutex);
28898 return WDI_STATUS_E_NOT_ALLOWED;
28899 }
28900
28901 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28902 sizeof (wpt_macAddr));
28903 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028904 }
28905 else
28906 {
28907 halStatus = *((eHalStatus*)pEventData->pEventData);
28908 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28909 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028910 /*Notify UMAC*/
28911 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28912 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028913 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028914
28915 return WDI_STATUS_SUCCESS;
28916}
28917#endif // WLAN_FEATURE_GTK_OFFLOAD
28918
28919#ifdef WLAN_WAKEUP_EVENTS
28920WDI_Status
28921WDI_ProcessWakeReasonInd
28922(
28923 WDI_ControlBlockType* pWDICtx,
28924 WDI_EventInfoType* pEventData
28925)
28926{
28927 WDI_LowLevelIndType *pWdiInd;
28928 tpWakeReasonParams pWakeReasonParams;
28929 wpt_uint32 allocSize = 0;
28930
28931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028932 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028933
28934 /*-------------------------------------------------------------------------
28935 Sanity check
28936 -------------------------------------------------------------------------*/
28937 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28938 ( NULL == pEventData->pEventData ))
28939 {
28940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028942 WDI_ASSERT( 0 );
28943 return WDI_STATUS_E_FAILURE;
28944 }
28945
28946 /*-------------------------------------------------------------------------
28947 Extract indication and send it to UMAC
28948 -------------------------------------------------------------------------*/
28949 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28950
28951 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28952
28953 //Allocate memory for WDI_WakeReasonIndType structure
28954 pWdiInd = wpalMemoryAllocate(allocSize) ;
28955
28956 if(NULL == pWdiInd)
28957 {
28958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028959 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028960 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028961 WDI_ASSERT(0);
28962 return WDI_STATUS_E_FAILURE;
28963 }
28964
28965 wpalMemoryZero(pWdiInd, allocSize);
28966
28967 /* Fill in the indication parameters*/
28968 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28969 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28970 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28971 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28972 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28973 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28974 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28975 &(pWakeReasonParams->aDataStart[0]),
28976 pWakeReasonParams->ulStoredDataLen);
28977
ltimariub77f24b2013-01-24 18:54:33 -080028978
28979 if ( pWDICtx->wdiLowLevelIndCB )
28980 {
28981 /*Notify UMAC*/
28982 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28983 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028984
28985 //Free memory allocated for WDI_WakeReasonIndType structure
28986 wpalMemoryFree(pWdiInd);
28987
28988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028989 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028990
28991 return WDI_STATUS_SUCCESS;
28992}
28993#endif // WLAN_WAKEUP_EVENTS
28994
28995void WDI_GetWcnssCompiledApiVersion
28996(
28997 WDI_WlanVersionType *pWcnssApiVersion
28998)
28999{
29000 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29001 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29002 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29003 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29004}
29005
29006/**
29007 @brief Process Set TM Level Rsp function (called when a
29008 response is being received over the bus from HAL)
29009
29010 @param pWDICtx: pointer to the WLAN DAL context
29011 pEventData: pointer to the event information structure
29012
29013 @see
29014 @return Result of the function call
29015*/
29016WDI_Status
29017WDI_ProcessSetTmLevelRsp
29018(
29019 WDI_ControlBlockType* pWDICtx,
29020 WDI_EventInfoType* pEventData
29021)
29022{
29023 WDI_Status wdiStatus;
29024 eHalStatus halStatus;
29025 WDI_SetTmLevelCb wdiSetTmLevelCb;
29026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29027
29028 /*-------------------------------------------------------------------------
29029 Sanity check
29030 -------------------------------------------------------------------------*/
29031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29032 ( NULL == pEventData->pEventData ))
29033 {
29034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029036 WDI_ASSERT(0);
29037 return WDI_STATUS_E_FAILURE;
29038 }
29039
29040 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29041
29042 /*-------------------------------------------------------------------------
29043 Extract response and send it to UMAC
29044 -------------------------------------------------------------------------*/
29045 halStatus = *((eHalStatus*)pEventData->pEventData);
29046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29047
29048 /*Notify UMAC*/
29049 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29050
29051 return WDI_STATUS_SUCCESS;
29052}/*WDI_ProcessSetTmLevelRsp*/
29053
29054/**
29055 @brief Process Set Thermal Mitigation level Changed request
29056
29057 @param pWDICtx: pointer to the WLAN DAL context
29058 pEventData: pointer to the event information structure
29059
29060 @see
29061 @return Result of the function call
29062*/
29063WDI_Status
29064WDI_ProcessSetTmLevelReq
29065(
29066 WDI_ControlBlockType* pWDICtx,
29067 WDI_EventInfoType* pEventData
29068)
29069{
29070 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29071 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29072 wpt_uint8* pSendBuffer = NULL;
29073 wpt_uint16 usDataOffset = 0;
29074 wpt_uint16 usSendSize = 0;
29075 tSetThermalMitgationType halTmMsg;
29076
29077 /*-------------------------------------------------------------------------
29078 Sanity check
29079 -------------------------------------------------------------------------*/
29080 if (( NULL == pEventData ) ||
29081 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29082 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29083 {
29084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029086 WDI_ASSERT(0);
29087 return WDI_STATUS_E_FAILURE;
29088 }
29089
29090 /*-----------------------------------------------------------------------
29091 Get message buffer
29092 -----------------------------------------------------------------------*/
29093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29094 sizeof(halTmMsg),
29095 &pSendBuffer, &usDataOffset, &usSendSize))||
29096 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29097 {
29098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029099 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029100 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29101 WDI_ASSERT(0);
29102 return WDI_STATUS_E_FAILURE;
29103 }
29104
29105 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29106 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29107
29108 wpalMemoryCopy( pSendBuffer+usDataOffset,
29109 &halTmMsg,
29110 sizeof(halTmMsg));
29111
29112 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29113 pWDICtx->pfncRspCB = NULL;
29114 /*-------------------------------------------------------------------------
29115 Send Get STA Request to HAL
29116 -------------------------------------------------------------------------*/
29117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29118 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29119}
29120
29121/* Fill the value from the global features enabled array to the global capabilities
29122 * bitmap struct
29123 */
29124static void
29125FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29126{
29127 wpt_int8 i;
29128 for (i=0; i<len; i++)
29129 {
29130 setFeatCaps(fCaps, enabledFeat[i]);
29131 }
29132}
29133
29134/**
29135 @brief WDI_featureCapsExchangeReq
29136 Post feature capability bitmap exchange event.
29137 Host will send its own capability to FW in this req and
29138 expect FW to send its capability back as a bitmap in Response
29139
29140 @param
29141
29142 wdiFeatureCapsExchangeCb: callback called on getting the response.
29143 It is kept to mantain similarity between WDI reqs and if needed, can
29144 be used in future. Currently, It is set to NULL
29145
29146 pUserData: user data will be passed back with the
29147 callback
29148
29149 @see
29150 @return Result of the function call
29151*/
29152WDI_Status
29153WDI_featureCapsExchangeReq
29154(
29155 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29156 void* pUserData
29157)
29158{
29159 WDI_EventInfoType wdiEventData;
29160 wpt_int32 fCapsStructSize;
29161
29162 /*------------------------------------------------------------------------
29163 Sanity Check
29164 ------------------------------------------------------------------------*/
29165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29166 {
29167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29168 "WDI API call before module is initialized - Fail request");
29169
29170 return WDI_STATUS_E_NOT_ALLOWED;
29171 }
29172
29173 /* Allocate memory separately for global variable carrying FW caps */
29174 fCapsStructSize = sizeof(tWlanFeatCaps);
29175 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29176 if ( NULL == gpHostWlanFeatCaps )
29177 {
29178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029179 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029180 WDI_ASSERT(0);
29181 return WDI_STATUS_MEM_FAILURE;
29182 }
29183
29184 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29185
29186 /*------------------------------------------------------------------------
29187 Fill in Event data and post to the Main FSM
29188 ------------------------------------------------------------------------*/
29189 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29190 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029192 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029193 gpHostWlanFeatCaps->featCaps[0],
29194 gpHostWlanFeatCaps->featCaps[1],
29195 gpHostWlanFeatCaps->featCaps[2],
29196 gpHostWlanFeatCaps->featCaps[3]
29197 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29199 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029200 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29201 wdiEventData.pEventData = gpHostWlanFeatCaps;
29202 wdiEventData.uEventDataSize = fCapsStructSize;
29203 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29204 wdiEventData.pUserData = pUserData;
29205
29206 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29207}
29208
29209/**
Yathish9f22e662012-12-10 14:21:35 -080029210 @brief Disable Active mode offload in Host
29211
29212 @param void
29213 @see
29214 @return void
29215*/
29216void
29217WDI_disableCapablityFeature(wpt_uint8 feature_index)
29218{
29219 supportEnabledFeatures[feature_index] = 0;
29220 return;
29221}
29222
29223/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029224 @brief Process Host-FW Capability Exchange Request function
29225
29226 @param pWDICtx: pointer to the WLAN DAL context
29227 pEventData: pointer to the event information structure
29228
29229 @see
29230 @return Result of the function call
29231*/
29232WDI_Status
29233WDI_ProcessFeatureCapsExchangeReq
29234(
29235 WDI_ControlBlockType* pWDICtx,
29236 WDI_EventInfoType* pEventData
29237)
29238{
29239 wpt_uint8* pSendBuffer = NULL;
29240 wpt_uint16 usDataOffset = 0;
29241 wpt_uint16 usSendSize = 0;
29242 wpt_uint16 usLen = 0;
29243
29244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29245
29246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029247 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029248
29249 /*-------------------------------------------------------------------------
29250 Sanity check
29251 -------------------------------------------------------------------------*/
29252 /* Call back function is NULL since not required for cap exchange req */
29253 if (( NULL == pEventData ) ||
29254 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29255 {
29256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029258 WDI_ASSERT(0);
29259 return WDI_STATUS_E_FAILURE;
29260 }
29261
29262 /*-----------------------------------------------------------------------
29263 Get message buffer
29264 -----------------------------------------------------------------------*/
29265 usLen = sizeof(tWlanFeatCaps);
29266
29267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29268 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29269 usLen,
29270 &pSendBuffer, &usDataOffset, &usSendSize))||
29271 ( usSendSize < (usDataOffset + usLen )))
29272 {
29273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029274 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029275 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29276 WDI_ASSERT(0);
29277 return WDI_STATUS_E_FAILURE;
29278 }
29279
29280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029281 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029282 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29283 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29284 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29285 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29286 );
29287
29288 /* Copy host caps after the offset in the send buffer */
29289 wpalMemoryCopy( pSendBuffer+usDataOffset,
29290 (tWlanFeatCaps *)pEventData->pEventData,
29291 usLen);
29292
29293 /*-------------------------------------------------------------------------
29294 Send Start Request to HAL
29295 -------------------------------------------------------------------------*/
29296 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29297 (WDI_StartRspCb)pEventData->pCBfnc,
29298 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29299
29300}/*WDI_ProcessFeatureCapsExchangeReq*/
29301
29302/**
29303 @brief Process Host-FW Capability Exchange Response function
29304
29305 @param pWDICtx: pointer to the WLAN DAL context
29306 pEventData: pointer to the event information structure
29307
29308 @see
29309 @return Result of the function call
29310*/
29311WDI_Status
29312WDI_ProcessFeatureCapsExchangeRsp
29313(
29314 WDI_ControlBlockType* pWDICtx,
29315 WDI_EventInfoType* pEventData
29316)
29317{
29318 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29319 wpt_int32 fCapsStructSize;
29320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29321
29322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029323 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029324
29325 /*-------------------------------------------------------------------------
29326 Sanity check
29327 -------------------------------------------------------------------------*/
29328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29329 ( NULL == pEventData->pEventData ))
29330 {
29331 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029334 WDI_ASSERT(0);
29335 return WDI_STATUS_E_FAILURE;
29336 }
29337
29338 /* Allocate memory separately for global variable carrying FW caps */
29339 fCapsStructSize = sizeof(tWlanFeatCaps);
29340 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29341 if ( NULL == gpFwWlanFeatCaps )
29342 {
29343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029344 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029345 WDI_ASSERT(0);
29346 return WDI_STATUS_MEM_FAILURE;
29347 }
29348
29349 /*-------------------------------------------------------------------------
29350 Unpack HAL Response Message - the header was already extracted by the
29351 main Response Handling procedure
29352 -------------------------------------------------------------------------*/
29353 /*-------------------------------------------------------------------------
29354 Extract response and send it to UMAC
29355 -------------------------------------------------------------------------*/
29356
29357 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29358 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029360 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029361 gpFwWlanFeatCaps->featCaps[0],
29362 gpFwWlanFeatCaps->featCaps[1],
29363 gpFwWlanFeatCaps->featCaps[2],
29364 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029365 );
29366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29367 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029368 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29369
29370 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29371 if (wdiFeatureCapsExchangeCb != NULL)
29372 wdiFeatureCapsExchangeCb(NULL, NULL);
29373
29374 return WDI_STATUS_SUCCESS;
29375}
29376
Mohit Khanna4a70d262012-09-11 16:30:12 -070029377#ifdef WLAN_FEATURE_11AC
29378WDI_Status
29379WDI_ProcessUpdateVHTOpModeRsp
29380(
29381 WDI_ControlBlockType* pWDICtx,
29382 WDI_EventInfoType* pEventData
29383)
29384{
29385 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29386 WDI_Status wdiStatus;
29387 eHalStatus halStatus;
29388
29389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29390
29391 /*-------------------------------------------------------------------------
29392 Sanity check
29393 -------------------------------------------------------------------------*/
29394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29395 ( NULL == pEventData->pEventData))
29396 {
29397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029398 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029399 WDI_ASSERT(0);
29400 return WDI_STATUS_E_FAILURE;
29401 }
29402 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29403
29404 /*-------------------------------------------------------------------------
29405 Extract response and send it to UMAC
29406 -------------------------------------------------------------------------*/
29407 halStatus = *((eHalStatus*)pEventData->pEventData);
29408 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29409
29410 /*Notify UMAC*/
29411 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29412
29413 return WDI_STATUS_SUCCESS;
29414}
29415#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029416/**
29417 @brief WDI_getHostWlanFeatCaps
29418 WDI API that returns whether the feature passed to it as enum value in
29419 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29420 variable storing host capability bitmap to find this. This can be used by
29421 other moduels to decide certain things like call different APIs based on
29422 whether a particular feature is supported.
29423
29424 @param
29425
29426 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29427
29428 @see
29429 @return
29430 0 - if the feature is NOT supported in host
29431 any non-zero value - if the feature is SUPPORTED in host.
29432*/
29433wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29434{
29435 wpt_uint8 featSupported = 0;
29436 if (gpHostWlanFeatCaps != NULL)
29437 {
29438 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29439 }
29440 else
29441 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029443 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029444 }
29445 return featSupported;
29446}
29447
29448/**
29449 @brief WDI_getFwWlanFeatCaps
29450 WDI API that returns whether the feature passed to it as enum value in
29451 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29452 variable storing host capability bitmap to find this. This can be used by
29453 other moduels to decide certain things like call different APIs based on
29454 whether a particular feature is supported.
29455
29456 @param
29457
29458 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29459 in wlan_hal_msg.h.
29460
29461 @see
29462 @return
29463 0 - if the feature is NOT supported in FW
29464 any non-zero value - if the feature is SUPPORTED in FW.
29465*/
29466wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29467{
29468 wpt_uint8 featSupported = 0;
29469 if (gpFwWlanFeatCaps != NULL)
29470 {
29471 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29472 }
29473 else
29474 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029476 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029477 }
29478 return featSupported;
29479}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029480
29481#ifdef WLAN_FEATURE_11AC
29482WDI_Status
29483WDI_ProcessUpdateVHTOpModeReq
29484(
29485 WDI_ControlBlockType* pWDICtx,
29486 WDI_EventInfoType* pEventData
29487)
29488{
29489 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29490 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29491 wpt_uint8* pSendBuffer = NULL;
29492 wpt_uint16 usDataOffset = 0;
29493 wpt_uint16 usSendSize = 0;
29494
29495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29496
29497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029498 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029499
29500 /*-------------------------------------------------------------------------
29501 Sanity check
29502 -------------------------------------------------------------------------*/
29503 if (( NULL == pEventData ) ||
29504 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29505 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29506 {
29507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029508 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029509 WDI_ASSERT(0);
29510 return WDI_STATUS_E_FAILURE;
29511 }
29512
29513 /*-----------------------------------------------------------------------
29514 Get message buffer
29515 -----------------------------------------------------------------------*/
29516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29517 sizeof(WDI_UpdateVHTOpMode),
29518 &pSendBuffer, &usDataOffset, &usSendSize))||
29519 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29520 {
29521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29522 "Unable to get send buffer in update vht opMode req");
29523 WDI_ASSERT(0);
29524 return WDI_STATUS_E_FAILURE;
29525 }
29526
29527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029528 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029529
29530 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29531 sizeof(WDI_UpdateVHTOpMode));
29532
29533 /*-------------------------------------------------------------------------
29534 Send Start Request to HAL
29535 -------------------------------------------------------------------------*/
29536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29537 wdiVHTOpModeCb,
29538 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29539
29540}
29541
29542WDI_Status
29543WDI_UpdateVHTOpModeReq
29544(
29545 WDI_UpdateVHTOpMode *pData,
29546 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29547 void* pUserData
29548)
29549{
29550 WDI_EventInfoType wdiEventData;
29551
29552 /*------------------------------------------------------------------------
29553 Sanity Check
29554 ------------------------------------------------------------------------*/
29555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29556 {
29557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29558 "WDI API call before module is initialized - Fail request");
29559
29560 return WDI_STATUS_E_NOT_ALLOWED;
29561 }
29562
29563 /*------------------------------------------------------------------------
29564 Fill in Event data and post to the Main FSM
29565 ------------------------------------------------------------------------*/
29566 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29567 wdiEventData.pEventData = pData;
29568 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29569 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29570 wdiEventData.pUserData = pUserData;
29571
29572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029573 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029574
29575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29576
29577}
29578#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029579
29580/**
29581 @brief WDI_TransportChannelDebug -
29582 Display DXE Channel debugging information
29583 User may request to display DXE channel snapshot
29584 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029585
Jeff Johnsonb88db982012-12-10 13:34:59 -080029586 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029587 @param debugFlags : Enable stall detect features
29588 defined by WPAL_DeviceDebugFlags
29589 These features may effect
29590 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029591 @see
29592 @return none
29593*/
29594void WDI_TransportChannelDebug
29595(
29596 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029597 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029598)
29599{
Mihir Shete40a55652014-03-02 14:14:47 +053029600 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029601 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029602}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029603/**
29604 @brief WDI_SsrTimerCB
29605 Callback function for SSR timer, if this is called then the graceful
29606 shutdown for Riva did not happen.
29607
29608 @param pUserData : user data to timer
29609
29610 @see
29611 @return none
29612*/
29613void
29614WDI_SsrTimerCB
29615(
29616 void *pUserData
29617)
29618{
29619 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29621
29622 if (NULL == pWDICtx )
29623 {
29624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029625 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029626 WDI_ASSERT(0);
29627 return;
29628 }
29629 wpalRivaSubystemRestart();
29630
29631 return;
29632
29633}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029634
29635/**
29636 @brief WDI_SetEnableSSR -
29637 This API is called to enable/disable SSR on WDI timeout.
29638
29639 @param enableSSR : enable/disable SSR
29640
29641 @see
29642 @return none
29643*/
29644void WDI_SetEnableSSR(wpt_boolean enableSSR)
29645{
29646 gWDICb.bEnableSSR = enableSSR;
29647}
Leo Chang9056f462013-08-01 19:21:11 -070029648
29649
29650#ifdef FEATURE_WLAN_LPHB
29651/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029652 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029653 This function will be invoked when FW detects low power
29654 heart beat failure
29655
29656 @param pWDICtx : wdi context
29657 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029658 @see
29659 @return Result of the function call
29660*/
29661WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029662WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029663(
29664 WDI_ControlBlockType* pWDICtx,
29665 WDI_EventInfoType* pEventData
29666)
29667{
29668 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029669 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29671
29672 /*-------------------------------------------------------------------------
29673 Sanity check
29674 -------------------------------------------------------------------------*/
29675 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29676 (NULL == pEventData->pEventData))
29677 {
29678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29679 "%s: Invalid parameters", __func__);
29680 WDI_ASSERT(0);
29681 return WDI_STATUS_E_FAILURE;
29682 }
29683
29684 /*-------------------------------------------------------------------------
29685 Extract indication and send it to UMAC
29686 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029687 wpalMemoryCopy(&lphbIndicationParam,
29688 pEventData->pEventData,
29689 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029690
Leo Changd9df8aa2013-09-26 13:32:26 -070029691 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029692 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029693 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029694 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029695 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029696 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029697 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029698 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029699 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029700 /*Notify UMAC*/
29701 if (pWDICtx->wdiLowLevelIndCB)
29702 {
29703 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29704 }
29705
29706 return WDI_STATUS_SUCCESS;
29707}
29708
29709/**
29710 @brief WDI_ProcessLphbCfgRsp -
29711 LPHB configuration response from FW
29712
29713 @param pWDICtx : wdi context
29714 pEventData : indication data
29715
29716 @see
29717 @return Result of the function call
29718*/
29719WDI_Status WDI_ProcessLphbCfgRsp
29720(
29721 WDI_ControlBlockType* pWDICtx,
29722 WDI_EventInfoType* pEventData
29723)
29724{
29725 WDI_Status wdiStatus;
29726 eHalStatus halStatus;
29727 WDI_LphbCfgCb wdiLphbCfgCb;
29728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29729
29730 /*-------------------------------------------------------------------------
29731 Sanity check
29732 -------------------------------------------------------------------------*/
29733 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29734 (NULL == pEventData->pEventData))
29735 {
29736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29737 "%s: Invalid parameters", __func__);
29738 WDI_ASSERT(0);
29739 return WDI_STATUS_E_FAILURE;
29740 }
29741
29742 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29743
29744 /*-------------------------------------------------------------------------
29745 Extract response and send it to UMAC
29746 -------------------------------------------------------------------------*/
29747 halStatus = *((eHalStatus*)pEventData->pEventData);
29748 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29749
29750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29751 "LPHB Cfg Rsp Return status %d", wdiStatus);
29752 /*Notify UMAC*/
29753 if (NULL != wdiLphbCfgCb)
29754 {
29755 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29756 }
29757
29758 return WDI_STATUS_SUCCESS;
29759}
29760
29761/**
29762 @brief WDI_ProcessLPHBConfReq -
29763 LPHB configuration request to FW
29764
29765 @param pWDICtx : wdi context
29766 pEventData : indication data
29767
29768 @see
29769 @return none
29770*/
29771WDI_Status WDI_ProcessLPHBConfReq
29772(
29773 WDI_ControlBlockType* pWDICtx,
29774 WDI_EventInfoType* pEventData
29775)
29776{
29777 WDI_LPHBReq *pLphbReqParams;
29778 WDI_Status wdiStatus;
29779 wpt_uint8* pSendBuffer = NULL;
29780 wpt_uint16 usDataOffset = 0;
29781 wpt_uint16 usSendSize = 0;
29782 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29784
29785 /*-------------------------------------------------------------------------
29786 Sanity check
29787 -------------------------------------------------------------------------*/
29788 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29789 {
29790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29791 "%s: Invalid parameters in Suspend ind",__func__);
29792 WDI_ASSERT(0);
29793 return WDI_STATUS_E_FAILURE;
29794 }
29795
29796 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29797
29798 /*-----------------------------------------------------------------------
29799 Get message buffer
29800 -----------------------------------------------------------------------*/
29801 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29802 WDI_LPHB_CFG_REQ,
29803 sizeof(tHalLowPowerHeartBeatReqMsg),
29804 &pSendBuffer, &usDataOffset, &usSendSize))||
29805 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29806 {
29807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29808 "Unable to get send buffer in LPHB Ind ");
29809 WDI_ASSERT(0);
29810 return WDI_STATUS_E_FAILURE;
29811 }
29812
29813 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29814 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29815
29816 halLphbReqRarams->lowPowerHeartBeatCmdType =
29817 (tANI_U16)(++pLphbReqParams->cmd);
29818 switch ((tANI_U16)pLphbReqParams->cmd)
29819 {
29820 case WDI_LPHB_SET_EN_PARAMS_INDID:
29821 halLphbReqRarams->sessionIdx =
29822 pLphbReqParams->params.lphbEnableReq.session;
29823 halLphbReqRarams->options.control.heartBeatEnable =
29824 pLphbReqParams->params.lphbEnableReq.enable;
29825 halLphbReqRarams->options.control.heartBeatType =
29826 pLphbReqParams->params.lphbEnableReq.item;
29827 break;
29828
29829 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29830 halLphbReqRarams->sessionIdx =
29831 pLphbReqParams->params.lphbTcpParamReq.session;
29832 halLphbReqRarams->options.tcpParams.timeOutSec =
29833 pLphbReqParams->params.lphbTcpParamReq.timeout;
29834 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29835 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29836 sizeof(v_U32_t));
29837 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29838 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29839 sizeof(v_U32_t));
29840
29841 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29842 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29843 WDI_MAC_ADDR_LEN);
29844
29845 halLphbReqRarams->options.tcpParams.hostPort =
29846 pLphbReqParams->params.lphbTcpParamReq.src_port;
29847 halLphbReqRarams->options.tcpParams.destPort =
29848 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029849 halLphbReqRarams->options.tcpParams.timePeriodSec =
29850 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29851 halLphbReqRarams->options.tcpParams.tcpSn =
29852 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029853 break;
29854
29855 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29856 halLphbReqRarams->sessionIdx =
29857 pLphbReqParams->params.lphbTcpFilterReq.session;
29858 halLphbReqRarams->options.tcpUdpFilter.offset =
29859 pLphbReqParams->params.lphbTcpFilterReq.offset;
29860 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29861 pLphbReqParams->params.lphbTcpFilterReq.length;
29862 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29863 pLphbReqParams->params.lphbTcpFilterReq.filter,
29864 WDI_LPHB_FILTER_LEN);
29865 break;
29866
29867 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29868 halLphbReqRarams->sessionIdx =
29869 pLphbReqParams->params.lphbUdpParamReq.session;
29870 halLphbReqRarams->options.udpParams.timeOutSec =
29871 pLphbReqParams->params.lphbUdpParamReq.timeout;
29872 halLphbReqRarams->options.udpParams.timePeriodSec =
29873 pLphbReqParams->params.lphbUdpParamReq.interval;
29874 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29875 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29876 sizeof(v_U32_t));
29877 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29878 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29879 sizeof(v_U32_t));
29880
29881 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29882 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29883 WDI_MAC_ADDR_LEN);
29884
29885 halLphbReqRarams->options.udpParams.hostPort =
29886 pLphbReqParams->params.lphbUdpParamReq.src_port;
29887 halLphbReqRarams->options.udpParams.destPort =
29888 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29889 break;
29890
29891 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29892 halLphbReqRarams->sessionIdx =
29893 pLphbReqParams->params.lphbUdpFilterReq.session;
29894 halLphbReqRarams->options.tcpUdpFilter.offset =
29895 pLphbReqParams->params.lphbUdpFilterReq.offset;
29896 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29897 pLphbReqParams->params.lphbUdpFilterReq.length;
29898 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29899 pLphbReqParams->params.lphbUdpFilterReq.filter,
29900 WDI_LPHB_FILTER_LEN);
29901 break;
29902
29903 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29904 /* NA */
29905 break;
29906
29907 default:
29908 break;
29909 }
29910
29911 /*-------------------------------------------------------------------------
29912 Send Suspend Request to HAL
29913 -------------------------------------------------------------------------*/
29914 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29915 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29916
29917 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29918 usSendSize, pWDICtx->pfncRspCB,
29919 pWDICtx->pReqStatusUserData,
29920 WDI_LPHB_CFG_RESP);
29921
29922 return wdiStatus;
29923}
29924
29925/**
29926 @brief WDI_LPHBConfReq -
29927 LPHB configuration request API
29928
29929 @param lphbconfParam : configuration parameter
29930 usrData : client context
29931 lphbCfgCb : callback function pointer
29932
29933 @see
29934 @return Success or fail status code
29935*/
29936WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29937 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29938{
29939 WDI_EventInfoType wdiEventData;
29940
29941 /*------------------------------------------------------------------------
29942 Sanity Check
29943 ------------------------------------------------------------------------*/
29944 if (eWLAN_PAL_FALSE == gWDIInitialized)
29945 {
29946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29947 "WDI API call before module is initialized - Fail request");
29948
29949 return WDI_STATUS_E_NOT_ALLOWED;
29950 }
29951
29952 /*------------------------------------------------------------------------
29953 Fill in Event data and post to the Main FSM
29954 ------------------------------------------------------------------------*/
29955 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29956 wdiEventData.pEventData = lphbconfParam;
29957 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29958 wdiEventData.pCBfnc = lphbCfgCb;
29959 wdiEventData.pUserData = usrData;
29960
29961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29962}
29963#endif /* FEATURE_WLAN_LPHB */
29964
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029965/**
29966 @brief WDI_ProcessIbssPeerInactivityInd
29967 Process peer inactivity indication coming from HAL
29968
29969 @param pWDICtx: pointer to the WLAN DAL context
29970 pEventData: pointer to the event information structure
29971 @see
29972 @return Result of the function call
29973*/
29974WDI_Status
29975WDI_ProcessIbssPeerInactivityInd
29976(
29977 WDI_ControlBlockType* pWDICtx,
29978 WDI_EventInfoType* pEventData
29979)
29980{
29981 WDI_LowLevelIndType wdiInd;
29982 tIbssPeerInactivityIndMsg halIbssIndMsg;
29983
29984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29985
29986 /*-------------------------------------------------------------------------
29987 Sanity check
29988 -------------------------------------------------------------------------*/
29989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29990 ( NULL == pEventData->pEventData ))
29991 {
29992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29993 "%s: Invalid parameters", __func__);
29994 WDI_ASSERT( 0 );
29995 return WDI_STATUS_E_FAILURE;
29996 }
29997
29998 /*-------------------------------------------------------------------------
29999 Extract indication and send it to UMAC
30000 -------------------------------------------------------------------------*/
30001 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30002 pEventData->pEventData,
30003 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30004
30005 /*Fill in the indication parameters*/
30006 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30007
30008 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30009 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30010
30011 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30012 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30013
30014 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30015 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30016 sizeof(tSirMacAddr));
30017
30018 /*Notify UMAC*/
30019 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30020
30021 return WDI_STATUS_SUCCESS;
30022
30023} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030024
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030025/**
30026*@brief WDI_RateUpdateInd will be called when the upper MAC
30027 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030028
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030029
30030 @param wdiRateUpdateIndParams:
30031
30032
30033 @see
30034 @return Result of the function call
30035*/
30036WDI_Status
30037WDI_RateUpdateInd
30038(
30039 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30040)
30041{
30042 WDI_EventInfoType wdiEventData;
30043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30044
30045 /*------------------------------------------------------------------------
30046 Sanity Check
30047 ------------------------------------------------------------------------*/
30048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30049 {
30050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30051 "WDI API call before module is initialized - Fail request");
30052
30053 return WDI_STATUS_E_NOT_ALLOWED;
30054 }
30055
30056 /*------------------------------------------------------------------------
30057 Fill in Event data and post to the Main FSM
30058 ------------------------------------------------------------------------*/
30059 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30060 wdiEventData.pEventData = wdiRateUpdateIndParams;
30061 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30062 wdiEventData.pCBfnc = NULL;
30063 wdiEventData.pUserData = NULL;
30064
30065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30066
30067}/* WDI_RateUpdateInd */
30068
30069/**
30070 @brief Process Rate Update Indication and post it to HAL
30071
30072 @param pWDICtx: pointer to the WLAN DAL context
30073 pEventData: pointer to the event information structure
30074
30075 @see
30076 @return Result of the function call
30077*/
30078WDI_Status
30079WDI_ProcessRateUpdateInd
30080(
30081 WDI_ControlBlockType* pWDICtx,
30082 WDI_EventInfoType* pEventData
30083)
30084{
30085 wpt_uint8* pSendBuffer = NULL;
30086 wpt_uint16 usDataOffset = 0;
30087 wpt_uint16 usSendSize = 0;
30088 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30089 tHalRateUpdateInd *pRateUpdateInd;
30090 WDI_Status wdiStatus;
30091
30092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30093
30094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30095 "%s", __func__);
30096
30097 /*-------------------------------------------------------------------------
30098 Sanity check
30099 -------------------------------------------------------------------------*/
30100 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30101 {
30102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30103 "%s: Invalid parameters", __func__);
30104 WDI_ASSERT(0);
30105 return WDI_STATUS_E_FAILURE;
30106 }
30107 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30108 /*-----------------------------------------------------------------------
30109 Get message buffer
30110 -----------------------------------------------------------------------*/
30111
30112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30113 WDI_RATE_UPDATE_IND,
30114 sizeof(tHalRateUpdateParams),
30115 &pSendBuffer, &usDataOffset, &usSendSize))||
30116 ( usSendSize < (usDataOffset +
30117 sizeof(tHalRateUpdateParams) )))
30118 {
30119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30120 "Unable to get send buffer in Rate Update Indication %p ",
30121 pEventData);
30122 WDI_ASSERT(0);
30123 return WDI_STATUS_E_FAILURE;
30124 }
30125
30126 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30127
30128 /* Copy the bssid */
30129 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30130 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30131
30132 /* Copy the tx flags */
30133 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30134 pwdiRateUpdateInd->ucastDataRateTxFlag;
30135 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30136 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30137 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30138 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30139 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30140 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30141
30142 /* Copy the tx rates */
30143 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30144 pwdiRateUpdateInd->ucastDataRate;
30145 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30146 pwdiRateUpdateInd->reliableMcastDataRate;
30147 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30148 pwdiRateUpdateInd->mcastDataRate24GHz;
30149 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30150 pwdiRateUpdateInd->mcastDataRate5GHz;
30151
30152 /*-------------------------------------------------------------------------
30153 Send Rate Update Indication to HAL
30154 -------------------------------------------------------------------------*/
30155 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30156 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30157
30158 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30159
30160 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30161 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30162
30163} /* WDI_ProcessRateUpdateInd */
30164
30165#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030166/**
30167 @brief Process stop batch indication from WDA
30168
30169 @param pWDICtx: pointer to the WLAN DAL context
30170 pEventData: pointer to the event information structure
30171
30172 @see
30173 @return Result of the function call
30174*/
30175WDI_Status
30176WDI_ProcessStopBatchScanInd
30177(
30178 WDI_ControlBlockType* pWDICtx,
30179 WDI_EventInfoType* pEventData
30180)
30181{
30182 wpt_uint8* pSendBuffer = NULL;
30183 wpt_uint16 usDataOffset = 0;
30184 wpt_uint16 usSendSize = 0;
30185 WDI_Status wdiStatus;
30186 tHalBatchScanStopIndParam *pHalInd = NULL;
30187 WDI_StopBatchScanIndType *pWdiInd = NULL;
30188
30189
30190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30191
30192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30193 "%s", __func__);
30194
30195 /*-------------------------------------------------------------------------
30196 Sanity check
30197 -------------------------------------------------------------------------*/
30198
30199 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30200 {
30201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30202 "%s: Invalid parameters", __func__);
30203 WDI_ASSERT(0);
30204 return WDI_STATUS_E_FAILURE;
30205 }
30206 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30207 /*-----------------------------------------------------------------------
30208 Get message buffer
30209 -----------------------------------------------------------------------*/
30210
30211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30212 WDI_STOP_BATCH_SCAN_IND,
30213 sizeof(tHalBatchScanStopIndParam),
30214 &pSendBuffer, &usDataOffset, &usSendSize))||
30215 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30216 {
30217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30218 "Unable to get send buffer in stop batch scan ind %p ",
30219 pEventData);
30220 WDI_ASSERT(0);
30221 return WDI_STATUS_E_FAILURE;
30222 }
30223
30224 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30225 pHalInd->param = pWdiInd->param;
30226
30227 pWDICtx->pReqStatusUserData = NULL;
30228 pWDICtx->pfncRspCB = NULL;
30229 /*-------------------------------------------------------------------------
30230 Send Stop batch scan indication to HAL
30231 -------------------------------------------------------------------------*/
30232 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30233 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30234}
30235
30236/**
30237 @brief This API is called to trigger batch scan results from FW
30238
30239 @param pWDICtx: pointer to the WLAN DAL context
30240 pEventData: pointer to the event information structure
30241
30242 @see
30243 @return Result of the function call
30244*/
30245WDI_Status
30246WDI_ProcessTriggerBatchScanResultInd
30247(
30248 WDI_ControlBlockType* pWDICtx,
30249 WDI_EventInfoType* pEventData
30250)
30251{
30252 WDI_Status wdiStatus;
30253 wpt_uint8* pSendBuffer = NULL;
30254 wpt_uint16 usDataOffset = 0;
30255 wpt_uint16 usSendSize = 0;
30256 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30257 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30258
30259
30260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30261
30262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30263 "%s", __func__);
30264
30265 /*-------------------------------------------------------------------------
30266 Sanity check
30267 -------------------------------------------------------------------------*/
30268
30269 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30270 {
30271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30272 "%s: Invalid parameters", __func__);
30273 WDI_ASSERT(0);
30274 return WDI_STATUS_E_FAILURE;
30275 }
30276 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30277 /*-----------------------------------------------------------------------
30278 Get message buffer
30279 -----------------------------------------------------------------------*/
30280
30281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30282 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30283 sizeof(tHalBatchScanTriggerResultParam),
30284 &pSendBuffer, &usDataOffset, &usSendSize))||
30285 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30286 {
30287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30288 "Unable to get send buffer in stop batch scan ind %p ",
30289 pEventData);
30290 WDI_ASSERT(0);
30291 return WDI_STATUS_E_FAILURE;
30292 }
30293
30294 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30295 pHalInd->param = pWdiInd->param;
30296
30297 pWDICtx->pReqStatusUserData = NULL;
30298 pWDICtx->pfncRspCB = NULL;
30299 /*-------------------------------------------------------------------------
30300 Send trigger batch scan result indication to HAL
30301 -------------------------------------------------------------------------*/
30302 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30303 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30304}
30305
30306
30307/**
30308 @brief Process set batch scan response from FW
30309
30310 @param pWDICtx: pointer to the WLAN DAL context
30311 pEventData: pointer to the event information structure
30312
30313 @see
30314 @return Result of the function call
30315*/
30316WDI_Status
30317WDI_ProcessSetBatchScanRsp
30318(
30319 WDI_ControlBlockType* pWDICtx,
30320 WDI_EventInfoType* pEventData
30321)
30322{
30323 WDI_SetBatchScanCb wdiSetBatchScanCb;
30324 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30325
30326 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30328
30329 /*sanity check*/
30330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30331 ( NULL == pEventData->pEventData))
30332 {
30333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30334 "%s: Invalid parameters", __func__);
30335 WDI_ASSERT(0);
30336 return WDI_STATUS_E_FAILURE;
30337 }
30338
30339 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30340 if ( NULL == wdiSetBatchScanCb)
30341 {
30342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30343 "%s: call back function is NULL", __func__);
30344 WDI_ASSERT(0);
30345 return WDI_STATUS_E_FAILURE;
30346 }
30347
30348 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30349
30350 if (NULL == pSetBatchScanRsp)
30351 {
30352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030353 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030354 pWDICtx, pEventData, pEventData->pEventData);
30355 WDI_ASSERT(0);
30356 return WDI_STATUS_E_FAILURE;
30357 }
30358
Sunil Duttbd736ed2014-05-26 21:19:41 +053030359 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030360 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30361
30362 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30363
Sunil Duttbd736ed2014-05-26 21:19:41 +053030364 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030365 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30366
30367 wpalMemoryFree(pSetBatchScanRsp);
30368
30369 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030370}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030371
30372/**
30373 @brief Process batch scan result indication from FW
30374
30375 @param pWDICtx: pointer to the WLAN DAL context
30376 pEventData: pointer to the event information structure
30377
30378 @see
30379 @return Result of the function call
30380*/
30381WDI_Status
30382WDI_ProcessBatchScanResultInd
30383(
30384 WDI_ControlBlockType* pWDICtx,
30385 WDI_EventInfoType* pEventData
30386)
30387{
30388 void *pBatchScanResultInd;
30389 WDI_LowLevelIndType wdiInd;
30390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30391
Sunil Duttbd736ed2014-05-26 21:19:41 +053030392 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30394 ( NULL == pEventData->pEventData))
30395 {
30396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30397 "%s: Invalid parameters", __func__);
30398 WDI_ASSERT(0);
30399 return WDI_STATUS_E_FAILURE;
30400 }
30401
Sunil Duttbd736ed2014-05-26 21:19:41 +053030402 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030403 pBatchScanResultInd = (void *)pEventData->pEventData;
30404
Sunil Duttbd736ed2014-05-26 21:19:41 +053030405 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030406 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30407
30408 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30409
Sunil Duttbd736ed2014-05-26 21:19:41 +053030410 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030411 if (pWDICtx->wdiLowLevelIndCB)
30412 {
30413 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30414 }
30415 else
30416 {
30417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30418 "%s: WDILowLevelIndCb is null", __func__);
30419 WDI_ASSERT(0);
30420 return WDI_STATUS_E_FAILURE;
30421 }
30422
30423 return WDI_STATUS_SUCCESS;
30424} /*End of WDI_ProcessBatchScanResultInd*/
30425
Sunil Duttbd736ed2014-05-26 21:19:41 +053030426#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30427/**
30428 @brief Process Link Layer Statistics Result indication from FW
30429
30430 @param pWDICtx: pointer to the WLAN DAL context
30431 pEventData: pointer to the event information structure
30432
30433 @see
30434 @return Result of the function call
30435*/
30436WDI_Status
30437WDI_ProcessLinkLayerStatsResultsInd
30438(
30439 WDI_ControlBlockType* pWDICtx,
30440 WDI_EventInfoType* pEventData
30441)
30442{
30443 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030444 WDI_LLstatsResultsType *halLLStatsResults;
30445 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030446 WDI_LowLevelIndType wdiInd;
30447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30448
30449 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30450 "%s: Event RESULTS Indication", __func__);
30451
30452 /* sanity check */
30453 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30454 ( NULL == pEventData->pEventData))
30455 {
30456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30457 "%s: Invalid parameters", __func__);
30458 WDI_ASSERT(0);
30459 return WDI_STATUS_E_FAILURE;
30460 }
30461
30462 /* extract response and send it to UMAC */
30463 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30464
30465 /* Fill in the indication parameters */
30466 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30467
Dino Mycled3d50022014-07-07 12:58:25 +053030468 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30469 = pLinkLayerStatsInd;
30470
30471 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30472
30473
30474 /* Need to fill in the MAC address */
30475 if ( WDI_STATUS_SUCCESS !=
30476 WDI_STATableGetStaMacAddr(pWDICtx,
30477 halLLStatsResults->iface_id,
30478 &macAddr))
30479 {
30480 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30481 " ifaceId: %u does not exist in the WDI Station Table",
30482 halLLStatsResults->iface_id);
30483
30484 return WDI_STATUS_E_FAILURE;
30485 }
30486 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30487 macAddr, WDI_MAC_ADDR_LEN);
30488
30489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30490 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30491 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030492
30493 /* Notify UMAC */
30494 if (pWDICtx->wdiLowLevelIndCB)
30495 {
30496 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30497 }
30498 else
30499 {
30500 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30501 "%s: WDILowLevelIndCb is null", __func__);
30502 WDI_ASSERT(0);
30503 return WDI_STATUS_E_FAILURE;
30504 }
30505
30506 return WDI_STATUS_SUCCESS;
30507} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30508#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30509
Rajeev79dbe4c2013-10-05 11:03:42 +053030510/**
30511 @brief WDI_ProcessSetBatchScanReq -
30512 Set batch scan request to FW
30513
30514 @param pWDICtx : wdi context
30515 pEventData : indication data
30516
30517 @see
30518 @return none
30519*/
30520WDI_Status WDI_ProcessSetBatchScanReq
30521(
30522 WDI_ControlBlockType* pWDICtx,
30523 WDI_EventInfoType* pEventData
30524)
30525{
30526 WDI_SetBatchScanReqType *pWdiReq;
30527 WDI_Status wdiStatus;
30528 wpt_uint8* pSendBuffer = NULL;
30529 wpt_uint16 usDataOffset = 0;
30530 wpt_uint16 usSendSize = 0;
30531 tHalBatchScanSetParams *pHalReq;
30532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30533
30534 /*sanity check*/
30535 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30536 {
30537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30538 "%s: Invalid parameters in set batch scan request", __func__);
30539 WDI_ASSERT(0);
30540 return WDI_STATUS_E_FAILURE;
30541 }
30542
30543
30544 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30545
30546
30547 /*get message buffer*/
30548 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30549 WDI_SET_BATCH_SCAN_REQ,
30550 sizeof(tHalBatchScanSetParams),
30551 &pSendBuffer, &usDataOffset, &usSendSize))||
30552 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30553 {
30554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30555 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30556 WDI_ASSERT(0);
30557 return WDI_STATUS_E_FAILURE;
30558 }
30559
30560 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30561
30562 pHalReq->rtt = pWdiReq->rtt;
30563 pHalReq->rfBand = pWdiReq->rfBand;
30564 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30565 pHalReq->scanInterval = pWdiReq->scanFrequency;
30566 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30567
30568 /*send set batch scan request to fw*/
30569 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30570 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30571
30572 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30573 usSendSize, pWDICtx->pfncRspCB,
30574 pWDICtx->pReqStatusUserData,
30575 WDI_SET_BATCH_SCAN_RESP);
30576
30577 return wdiStatus;
30578}
30579
30580/**
30581 @brief WDI_SetBatchScanReq
30582 This API is called to set batch scan request in FW
30583
30584 @param pBatchScanReqParam : pointer to set batch scan re param
30585 usrData : Client context
30586 setBatchScanRspCb : set batch scan resp callback
30587 @see
30588 @return SUCCESS or FAIL
30589*/
30590WDI_Status WDI_SetBatchScanReq
30591(
30592 void *pBatchScanReqParam,
30593 void *usrData,
30594 WDI_SetBatchScanCb setBatchScanRspCb
30595)
30596{
30597 WDI_EventInfoType wdiEventData;
30598
30599 /*sanity check*/
30600 if (eWLAN_PAL_FALSE == gWDIInitialized)
30601 {
30602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30603 "WDI API call before module is initialized - Fail request");
30604
30605 return WDI_STATUS_E_NOT_ALLOWED;
30606 }
30607
30608 /* fill in event data and post to the main FSM */
30609 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30610 wdiEventData.pEventData = pBatchScanReqParam;
30611 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30612 wdiEventData.pCBfnc = setBatchScanRspCb;
30613 wdiEventData.pUserData = usrData;
30614
30615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30616}
30617
30618/**
30619 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30620
30621 @param None
30622
30623 @see
30624
30625 @return Status of the request
30626*/
30627WDI_Status
30628WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30629{
30630 WDI_EventInfoType wdiEventData;
30631
30632 /*-------------------------------------------------------------------------
30633 Sanity Check
30634 ------------------------------------------------------------------------*/
30635 if (eWLAN_PAL_FALSE == gWDIInitialized)
30636 {
30637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30638 "WDI API call before module is initialized - Fail request!");
30639
30640 return WDI_STATUS_E_NOT_ALLOWED;
30641 }
30642
30643 /*-------------------------------------------------------------------------
30644 Fill in Event data and post to the Main FSM
30645 ------------------------------------------------------------------------*/
30646 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30647 wdiEventData.pEventData = pWdiReq;
30648 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30649 wdiEventData.pCBfnc = NULL;
30650 wdiEventData.pUserData = NULL;
30651
30652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30653}
30654
30655/**
30656 @brief WDI_TriggerBatchScanResultInd
30657 This API is called to pull batch scan result from FW
30658
30659 @param pWdiReq : pointer to get batch scan ind param
30660 @see
30661 @return SUCCESS or FAIL
30662*/
30663WDI_Status WDI_TriggerBatchScanResultInd
30664(
30665 WDI_TriggerBatchScanResultIndType *pWdiReq
30666)
30667{
30668 WDI_EventInfoType wdiEventData;
30669 /*-------------------------------------------------------------------------
30670 Sanity Check
30671 ------------------------------------------------------------------------*/
30672 if (eWLAN_PAL_FALSE == gWDIInitialized)
30673 {
30674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30675 "WDI API call before module is initialized - Fail request!");
30676
30677 return WDI_STATUS_E_NOT_ALLOWED;
30678 }
30679
30680 /*-------------------------------------------------------------------------
30681 Fill in Event data and post to the Main FSM
30682 ------------------------------------------------------------------------*/
30683 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30684 wdiEventData.pEventData = pWdiReq;
30685 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30686 wdiEventData.pCBfnc = NULL;
30687 wdiEventData.pUserData = NULL;
30688
30689 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30690}
Rajeev79dbe4c2013-10-05 11:03:42 +053030691#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030692
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030693/**
30694 @brief Process Update Channel Rsp function (called when a response is
30695 being received over the bus from HAL)
30696
30697 @param pWDICtx: pointer to the WLAN DAL context
30698 pEventData: pointer to the event information structure
30699
30700 @see
30701 @return Result of the function call
30702*/
30703WDI_Status
30704WDI_ProcessUpdateChanRsp
30705(
30706 WDI_ControlBlockType* pWDICtx,
30707 WDI_EventInfoType* pEventData
30708)
30709{
30710 WDI_Status wdiStatus;
30711 eHalStatus halStatus;
30712 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30714
30715 /*-------------------------------------------------------------------------
30716 Sanity check
30717 -------------------------------------------------------------------------*/
30718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30719 ( NULL == pEventData->pEventData))
30720 {
30721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30722 "%s: Invalid parameters", __func__);
30723 WDI_ASSERT(0);
30724 return WDI_STATUS_E_FAILURE;
30725 }
30726
30727 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30728
30729 /*-------------------------------------------------------------------------
30730 Extract response and send it to UMAC
30731 -------------------------------------------------------------------------*/
30732 halStatus = *((eHalStatus*)pEventData->pEventData);
30733 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30734
30735 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30736
30737 return WDI_STATUS_SUCCESS;
30738}/*WDI_ProcessUpdateChanRsp*/
30739
Leo Chang0b0e45a2013-12-15 15:18:55 -080030740#ifdef FEATURE_WLAN_CH_AVOID
30741/**
30742 @brief v -WDI_ProcessChAvoidInd
30743
30744
30745 @param pWDICtx : wdi context
30746 pEventData : indication data
30747 @see
30748 @return Result of the function call
30749*/
30750WDI_Status
30751WDI_ProcessChAvoidInd
30752(
30753 WDI_ControlBlockType* pWDICtx,
30754 WDI_EventInfoType* pEventData
30755)
30756{
30757 WDI_LowLevelIndType wdiInd;
30758 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30759 wpt_uint16 rangeLoop;
30760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30761
30762 /*-------------------------------------------------------------------------
30763 Sanity check
30764 -------------------------------------------------------------------------*/
30765 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30766 (NULL == pEventData->pEventData))
30767 {
30768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30769 "%s: Invalid parameters", __func__);
30770 WDI_ASSERT(0);
30771 return WDI_STATUS_E_FAILURE;
30772 }
30773
30774 /*-------------------------------------------------------------------------
30775 Extract indication and send it to UMAC
30776 -------------------------------------------------------------------------*/
30777 wpalMemoryCopy(&chAvoidIndicationParam,
30778 pEventData->pEventData,
30779 sizeof(tHalAvoidFreqRangeIndParams));
30780
30781 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30782 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30783 chAvoidIndicationParam.avoidCnt;
30784 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30785 (void *)chAvoidIndicationParam.avoidRange,
30786 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30787 sizeof(WDI_ChAvoidFreqType));
30788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30789 "%s: band count %d", __func__,
30790 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30791 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30792 {
30793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30794 "%s: srart freq %d, end freq %d", __func__,
30795 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30796 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30797 }
30798
30799 /*Notify UMAC*/
30800 if (pWDICtx->wdiLowLevelIndCB)
30801 {
30802 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30803 }
30804
30805 return WDI_STATUS_SUCCESS;
30806}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030807
Leo Chang0b0e45a2013-12-15 15:18:55 -080030808#endif /* FEATURE_WLAN_CH_AVOID */
30809
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030810/**
30811 @brief Process OBSS Start scan result indication
30812
30813 @param pWDICtx: pointer to the WLAN DAL context
30814 pEventData: pointer to the event information structure
30815
30816 @see
30817 @return Result of the function call
30818*/
30819WDI_Status
30820WDI_ProcessHT40OBSSScanInd
30821(
30822 WDI_ControlBlockType* pWDICtx,
30823 WDI_EventInfoType* pEventData
30824)
30825{
30826 wpt_uint8* pSendBuffer = NULL;
30827 wpt_uint16 usDataOffset = 0;
30828 wpt_uint16 usSendSize = 0;
30829 wpt_uint16 usLen = 0;
30830 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30831 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30832 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30833 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30834
30835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30836
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030838 "%s", __func__);
30839
30840 /*-------------------------------------------------------------------------
30841 Sanity check
30842 -------------------------------------------------------------------------*/
30843 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30844 {
30845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30846 "%s: Invalid parameters", __func__);
30847 WDI_ASSERT(0);
30848 return WDI_STATUS_E_FAILURE;
30849 }
30850 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30851
30852 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30853 /*-----------------------------------------------------------------------
30854 Get message buffer
30855 -----------------------------------------------------------------------*/
30856
30857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30858 WDI_START_HT40_OBSS_SCAN_IND,
30859 sizeof(tHT40ObssScanIndType),
30860 &pSendBuffer, &usDataOffset, &usSendSize))||
30861 ( usSendSize < (usDataOffset + usLen )))
30862 {
30863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30864 "Unable to get send buffer in HT40 OBSS Start req %p ",
30865 pEventData);
30866 WDI_ASSERT(0);
30867 return WDI_STATUS_E_FAILURE;
30868 }
30869 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30870 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30871 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30872 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30873 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30874 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30875 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30876 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30877 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30878 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30879 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30880 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30881 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30882 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30883 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30884 pHT40ObssScanInd->OBSSScanActivityThreshold =
30885 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30886 pHT40ObssScanInd->selfStaIdx =
30887 pwdiHT40OBSSScanInd->selfStaIdx;
30888 pHT40ObssScanInd->bssIdx =
30889 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030890 pHT40ObssScanInd->currentOperatingClass =
30891 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030892 pHT40ObssScanInd->fortyMHZIntolerent =
30893 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30894 pHT40ObssScanInd->channelCount =
30895 pwdiHT40OBSSScanInd->channelCount;
30896
30897 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30898 WDI_ROAM_SCAN_MAX_CHANNELS);
30899 pHT40ObssScanInd->ieFieldLen =
30900 pwdiHT40OBSSScanInd->ieFieldLen;
30901
30902 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30903 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30904 pWDICtx->pReqStatusUserData = NULL;
30905 pWDICtx->pfncRspCB = NULL;
30906
30907 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30908 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30909
30910 /*-------------------------------------------------------------------------
30911 Send OBSS Start Indication to HAL
30912 -------------------------------------------------------------------------*/
30913 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30914 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30915
30916} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30917
30918
30919/**
30920 @brief wdi_HT40OBSSScanInd
30921 This API is called to start OBSS scan
30922
30923 @param pWdiReq : pointer to get ind param
30924 @see
30925 @return SUCCESS or FAIL
30926*/
30927WDI_Status WDI_HT40OBSSScanInd
30928(
30929 WDI_HT40ObssScanParamsType *pWdiReq
30930)
30931{
30932 WDI_EventInfoType wdiEventData;
30933
30934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30935 "%s", __func__);
30936 /*-------------------------------------------------------------------------
30937 Sanity Check
30938 ------------------------------------------------------------------------*/
30939 if (eWLAN_PAL_FALSE == gWDIInitialized)
30940 {
30941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30942 "WDI API call before module is initialized - Fail request!");
30943
30944 return WDI_STATUS_E_NOT_ALLOWED;
30945 }
30946
30947 /*-------------------------------------------------------------------------
30948 Fill in Event data and post to the Main FSM
30949 ------------------------------------------------------------------------*/
30950 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30951 wdiEventData.pEventData = pWdiReq;
30952 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30953 wdiEventData.pCBfnc = NULL;
30954 wdiEventData.pUserData = NULL;
30955
30956
30957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30958}
30959
30960/**
30961 @brief Process OBSS Stop scan result
30962
30963 @param pWDICtx: pointer to the WLAN DAL context
30964 pEventData: pointer to the event information structure
30965
30966 @see
30967 @return Result of the function call
30968*/
30969WDI_Status
30970WDI_ProcessHT40OBSSStopScanInd
30971(
30972 WDI_ControlBlockType* pWDICtx,
30973 WDI_EventInfoType* pEventData
30974)
30975{
30976 wpt_uint8* pSendBuffer = NULL;
30977 wpt_uint16 usDataOffset = 0;
30978 wpt_uint16 usSendSize = 0;
30979 wpt_uint16 usLen = 0;
30980 wpt_uint8 *wdiBssIdx = 0;
30981 tANI_U8 *bssIdx = 0;
30982 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30983
30984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30985
30986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30987 "%s", __func__);
30988
30989 /*-------------------------------------------------------------------------
30990 Sanity check
30991 -------------------------------------------------------------------------*/
30992 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30993 {
30994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30995 "%s: Invalid parameters", __func__);
30996 WDI_ASSERT(0);
30997 return WDI_STATUS_E_FAILURE;
30998 }
30999 bssIdx = (wpt_uint8*)pEventData->pEventData;
31000 /*-----------------------------------------------------------------------
31001 Get message buffer
31002 -----------------------------------------------------------------------*/
31003
31004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31005 WDI_STOP_HT40_OBSS_SCAN_IND,
31006 sizeof(tANI_U8),
31007 &pSendBuffer, &usDataOffset, &usSendSize))||
31008 ( usSendSize < (usDataOffset + usLen )))
31009 {
31010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31011 "Unable to get send buffer in HT40 OBSS Start req %p ",
31012 pEventData);
31013 WDI_ASSERT(0);
31014 return WDI_STATUS_E_FAILURE;
31015 }
31016
31017 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31018 bssIdx = wdiBssIdx;
31019
31020 pWDICtx->pReqStatusUserData = NULL;
31021 pWDICtx->pfncRspCB = NULL;
31022
31023 /*-------------------------------------------------------------------------
31024 Send DHCP Start Indication to HAL
31025 -------------------------------------------------------------------------*/
31026 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31027 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31028} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31029
31030/**
31031 @brief WDI_HT40OBSSStopScanInd
31032 This API is called to start OBSS scan
31033 @param pWdiReq : pointer to get ind param
31034 @see
31035 @return SUCCESS or FAIL
31036*/
31037WDI_Status WDI_HT40OBSSStopScanInd
31038(
31039 wpt_uint8 bssIdx
31040)
31041{
31042 WDI_EventInfoType wdiEventData;
31043
31044 /*-------------------------------------------------------------------------
31045 Sanity Check
31046 ------------------------------------------------------------------------*/
31047 if (eWLAN_PAL_FALSE == gWDIInitialized)
31048 {
31049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31050 "WDI API call before module is initialized - Fail request!");
31051
31052 return WDI_STATUS_E_NOT_ALLOWED;
31053 }
31054
31055 /*-------------------------------------------------------------------------
31056 Fill in Event data and post to the Main FSM
31057 ------------------------------------------------------------------------*/
31058 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31059 wdiEventData.pEventData = &bssIdx;
31060 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31061 wdiEventData.pCBfnc = NULL;
31062 wdiEventData.pUserData = NULL;
31063
31064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31065}
31066
c_hpothu86041002014-04-14 19:06:51 +053031067WDI_Status
31068WDI_printRegInfo
31069(
31070 WDI_ControlBlockType* pWDICtx,
31071 WDI_EventInfoType* pEventData
31072)
31073{
31074 tHalRegDebugInfo *pRegTable;
31075 tHalRegDebugInfoParams *pRegParams;
31076 uint32 cnt=0;
31077
31078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31079 "%s: ", __func__);
31080 /*-------------------------------------------------------------------------
31081 Sanity check
31082 -------------------------------------------------------------------------*/
31083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31084 ( NULL == pEventData->pEventData))
31085 {
31086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31087 "%s: Invalid parameters", __func__);
31088 WDI_ASSERT(0);
31089 return WDI_STATUS_E_FAILURE;
31090 }
31091
31092 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31093
31094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31095 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31096 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31097
31098 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31099
31100 if (pRegParams->regCount <= 0)
31101 {
31102 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31103 "%s incorrect parameters passed", __func__);
31104 return WDI_STATUS_E_FAILURE;
31105 }
31106
31107 while(pRegParams->regCount--)
31108 {
31109 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31110 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31111 cnt++;
31112 }
31113
31114 return WDI_STATUS_SUCCESS;
31115}
c_hpothu92367912014-05-01 15:18:17 +053031116
31117/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031118 * FUNCTION: WDI_delBaInd
31119 * send the delBA to peer.
31120 */
31121
31122WDI_Status
31123WDI_delBaInd
31124(
31125 WDI_ControlBlockType* pWDICtx,
31126 WDI_EventInfoType* pEventData
31127
31128)
31129{
31130 tHalWlanDelBaIndMsg halDelBaInd;
31131 WDI_LowLevelIndType wdiInd;
31132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31133
31134 /*-------------------------------------------------------------------------
31135 Sanity check
31136 -------------------------------------------------------------------------*/
31137 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31138 ( NULL == pEventData->pEventData))
31139 {
31140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31141 "%s: Invalid parameters", __func__);
31142 WDI_ASSERT(0);
31143 return WDI_STATUS_E_FAILURE;
31144 }
31145
31146 /*-------------------------------------------------------------------------
31147 Extract indication and send it to UMAC
31148 -------------------------------------------------------------------------*/
31149
31150 /* Parameters need to be unpacked according to HAL struct*/
31151 wpalMemoryCopy( &halDelBaInd,
31152 pEventData->pEventData,
31153 sizeof(halDelBaInd));
31154
31155 /*Fill in the indication parameters*/
31156 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31157
31158 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31159 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31160 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31161
31162 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31163 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31164 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31165
31166 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31167 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31168 if ( pWDICtx->wdiLowLevelIndCB )
31169 {
31170 /*Notify UMAC*/
31171 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31172 }
31173
31174 return WDI_STATUS_SUCCESS;
31175
31176
31177}
31178
31179/*
c_hpothu92367912014-05-01 15:18:17 +053031180 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31181 * send the response to PE with beacon miss count
31182 * received from WDI.
31183 */
31184WDI_Status
31185WDI_ProcessGetBcnMissRateRsp
31186(
31187 WDI_ControlBlockType* pWDICtx,
31188 WDI_EventInfoType* pEventData
31189)
31190{
31191 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31192 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31193
31194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31195 "In %s",__func__);
31196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31197
31198 /*-------------------------------------------------------------------------
31199 Sanity check
31200 -------------------------------------------------------------------------*/
31201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31202 ( NULL == pEventData->pEventData))
31203 {
31204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31205 "%s: Invalid parameters", __func__);
31206 WDI_ASSERT(0);
31207 return WDI_STATUS_E_FAILURE;
31208 }
31209
31210 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31211 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31212
31213 /*Notify UMAC*/
31214 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31215 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31216 return WDI_STATUS_SUCCESS;
31217}
31218
31219/*
31220 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31221 * Request to WDI to get missed beacon rate.
31222 */
31223WDI_Status
31224WDI_ProcessGetBcnMissRateReq
31225(
31226 WDI_ControlBlockType* pWDICtx,
31227 WDI_EventInfoType* pEventData
31228)
31229{
31230 wpt_uint8* pSendBuffer = NULL;
31231 wpt_uint16 usDataOffset = 0;
31232 wpt_uint16 usSendSize = 0;
31233 wpt_uint8 ucCurrentBSSSesIdx = 0;
31234 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031235 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31236 tHalBcnMissRateReqParams halBcnMissRateReq;
31237
31238/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31239
31240 /*-------------------------------------------------------------------------
31241 Sanity check
31242 -------------------------------------------------------------------------*/
31243 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31244 ( NULL == pEventData->pCBfnc ) )
31245 {
31246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31247 "%s: Invalid parameters", __func__);
31248 WDI_ASSERT(0);
31249 return WDI_STATUS_E_FAILURE;
31250 }
31251
31252 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31253
31254 wpalMutexAcquire(&pWDICtx->wptMutex);
31255
31256 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31257 pEventData->pEventData, &pBSSSes);
31258 if ( NULL == pBSSSes )
31259 {
31260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31261 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031262 MAC_ADDRESS_STR, __func__,
31263 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031264 wpalMutexRelease(&pWDICtx->wptMutex);
31265 return WDI_STATUS_E_NOT_ALLOWED;
31266 }
31267 wpalMutexRelease(&pWDICtx->wptMutex);
31268
31269 /*-----------------------------------------------------------------------
31270 Get message buffer
31271 -----------------------------------------------------------------------*/
31272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31273 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31274 sizeof(tHalBcnMissRateReqParams),
31275 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31276 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31277 {
31278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31279 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31280 pEventData);
31281 WDI_ASSERT(0);
31282 return WDI_STATUS_E_FAILURE;
31283 }
31284
31285 pWDICtx->wdiReqStatusCB = NULL;
31286 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31287
31288 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31289
31290 wpalMemoryCopy( pSendBuffer+usDataOffset,
31291 &halBcnMissRateReq,
31292 sizeof(tHalBcnMissRateReqParams));
31293 /*-------------------------------------------------------------------------
31294 Send Get STA Request to HAL
31295 -------------------------------------------------------------------------*/
31296 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31297 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31298}
31299
31300/**
31301 @brief WDI_GetBcnMissRate
31302
31303 @param pUserData: user data will be passed back with the
31304 callback
31305 WDI_GetBcnMissRateCb: callback for passing back the response
31306 of the get stats operation received from the device
31307 bssid: bssid, to send bssIdx to FW
31308
31309 @return SUCCESS or FAIL
31310*/
31311WDI_Status WDI_GetBcnMissRate( void *pUserData,
31312 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31313 tANI_U8 *bssid )
31314{
31315 WDI_EventInfoType wdiEventData;
31316
31317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31318
31319 /*------------------------------------------------------------------------
31320 Sanity Check
31321 ------------------------------------------------------------------------*/
31322 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31323 {
31324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31325 "WDI API call before module is initialized - Fail request");
31326
31327 return WDI_STATUS_E_NOT_ALLOWED;
31328 }
31329
31330 /*------------------------------------------------------------------------
31331 Fill in Event data and post to the Main FSM
31332 ------------------------------------------------------------------------*/
31333 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31334 wdiEventData.pEventData = bssid;
31335 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31336 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31337 wdiEventData.pUserData = pUserData;
31338
31339 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31340}
Abhishek Singh85b74712014-10-08 11:38:19 +053031341
31342/*
31343 * FUNCTION: WDI_ProcessGetFwStatsRsp
31344 * send the response with FW stats asked.
31345 */
31346WDI_Status
31347 WDI_ProcessGetFwStatsRsp
31348(
31349 WDI_ControlBlockType* pWDICtx,
31350 WDI_EventInfoType* pEventData
31351)
31352{
31353 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31354 tpHalfwStatsRspParams pHalFwstatsRsp;
31355 WDI_FWStatsResults fwStats;
31356
31357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31358
31359 /*-------------------------------------------------------------------------
31360 Sanity check
31361 -------------------------------------------------------------------------*/
31362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31363 ( NULL == pEventData->pEventData))
31364 {
31365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31366 "%s: Invalid parameters", __func__);
31367 WDI_ASSERT(0);
31368 return WDI_STATUS_E_FAILURE;
31369 }
31370 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31371 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31372
31373 if(pHalFwstatsRsp->length)
31374 {
31375 switch( pHalFwstatsRsp->type )
31376 {
31377 case FW_UBSP_STATS:
31378 {
31379 ubspFwStats *ubspStatsfromFw;
31380
31381 fwStats.type = pHalFwstatsRsp->type;
31382 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31383 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31384 ubspStatsfromFw->ubsp_enter_cnt;
31385 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31386 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31387 }
31388 break;
31389 default:
31390 {
31391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31392 "%s: No handling for stats type %d", __func__,
31393 pHalFwstatsRsp->type);
31394 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31395 NULL, pWDICtx->pRspCBUserData);
31396 return WDI_STATUS_E_FAILURE;
31397 }
31398 }
31399 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31400 }
31401 else
31402 {
31403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31404 "%s: Length = 0 for type %d return failure ", __func__,
31405 pHalFwstatsRsp->type);
31406 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31407 NULL, pWDICtx->pRspCBUserData);
31408 return WDI_STATUS_E_FAILURE;
31409 }
31410 return WDI_STATUS_SUCCESS;
31411}
31412
31413/*
31414 * FUNCTION: WDI_ProcessGetFwStatsReq
31415 * Request to WDI to get FW Stats.
31416 */
31417WDI_Status
31418 WDI_ProcessGetFwStatsReq
31419(
31420 WDI_ControlBlockType* pWDICtx,
31421 WDI_EventInfoType* pEventData
31422)
31423{
31424 wpt_uint8* pSendBuffer = NULL;
31425 wpt_uint16 usDataOffset = 0;
31426 wpt_uint16 usSendSize = 0;
31427 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31428 tHalfwStatsReqParams halFwStatsReq;
31429
31430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31431
31432 /*-------------------------------------------------------------------------
31433 Sanity check
31434 -------------------------------------------------------------------------*/
31435 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31436 ( NULL == pEventData->pCBfnc ) )
31437 {
31438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31439 "%s: Invalid parameters", __func__);
31440 WDI_ASSERT(0);
31441 return WDI_STATUS_E_FAILURE;
31442 }
31443
31444 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31445
31446 /*-----------------------------------------------------------------------
31447 Get message buffer
31448 -----------------------------------------------------------------------*/
31449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31450 pWDICtx, WDI_GET_FW_STATS_REQ,
31451 sizeof(tHalfwStatsReqParams),
31452 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31453 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31454 {
31455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31456 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31457 pEventData);
31458 WDI_ASSERT(0);
31459 return WDI_STATUS_E_FAILURE;
31460 }
31461
31462 pWDICtx->wdiReqStatusCB = NULL;
31463 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31464 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31465 wpalMemoryCopy( pSendBuffer+usDataOffset,
31466 &halFwStatsReq,
31467 sizeof(tHalfwStatsReqParams));
31468 /*-------------------------------------------------------------------------
31469 Send Get STA Request to HAL
31470 -------------------------------------------------------------------------*/
31471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31472 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31473}
31474
Sunil Duttbd736ed2014-05-26 21:19:41 +053031475#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31476
31477/**
31478 @brief WDI_LLStatsSetReq
31479 This API is called to set link layer stats request in FW
31480
31481 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31482 wdiLLStatsSetRspCb : set link layer stats resp callback
31483 usrData : Client context
31484 @see
31485 @return SUCCESS or FAIL
31486*/
31487WDI_Status
31488WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31489 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31490 void* pUserData)
31491{
31492 WDI_EventInfoType wdiEventData;
31493
31494 /*------------------------------------------------------------------------
31495 Sanity Check
31496 ------------------------------------------------------------------------*/
31497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31498 {
31499 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31500 "WDI API call before module is initialized - Fail request");
31501
31502 return WDI_STATUS_E_NOT_ALLOWED;
31503 }
31504
31505 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31506 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31507 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31508 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31509 wdiEventData.pUserData = pUserData;
31510
31511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31512}
31513
31514/**
31515 @brief WDI_ProcessLLStatsSetReq -
31516 Set Link Layer Stats request to FW
31517
31518 @param pWDICtx : wdi context
31519 pEventData : indication data
31520
31521 @see
31522 @return none
31523*/
31524WDI_Status
31525WDI_ProcessLLStatsSetReq
31526(
31527 WDI_ControlBlockType* pWDICtx,
31528 WDI_EventInfoType* pEventData
31529)
31530{
31531 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31532 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31533 wpt_uint8* pSendBuffer = NULL;
31534 wpt_uint16 usSendSize = 0;
31535 wpt_uint16 usDataOffset = 0;
31536 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31537
31538 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31539 ( NULL == pEventData->pCBfnc ))
31540 {
31541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31542 "%s: Invalid parameters", __func__);
31543 WDI_ASSERT(0);
31544 return WDI_STATUS_E_FAILURE;
31545 }
31546
31547 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31548 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31549
31550 /*-----------------------------------------------------------------------
31551 Get message buffer
31552 ! TO DO : proper conversion into the HAL Message Request Format
31553 -----------------------------------------------------------------------*/
31554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31555 pWDICtx,
31556 WDI_LL_STATS_SET_REQ,
31557 sizeof(tHalMacLlSetStatsReqParams),
31558 &pSendBuffer, &usDataOffset,
31559 &usSendSize))||
31560 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31561 {
31562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31563 "Unable to get send buffer in %s %p %p %p", __func__,
31564 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31565 WDI_ASSERT(0);
31566 return WDI_STATUS_E_FAILURE;
31567 }
31568
31569
Dino Mycled3d50022014-07-07 12:58:25 +053031570 /* Need to fill in the self STA Index */
31571 if ( WDI_STATUS_SUCCESS !=
31572 WDI_STATableFindStaidByAddr(pWDICtx,
31573 pwdiLLStatsSetReqParams->macAddr,
31574 &halLLStatsSetParams.sta_id))
31575 {
31576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31577 MAC_ADDRESS_STR
31578 ": This station does not exist in the WDI Station Table",
31579 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31580
31581 wpalMemoryFree(pSendBuffer);
31582 return WDI_STATUS_E_FAILURE;
31583 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031584
31585 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031586 halLLStatsSetParams.mpdu_size_threshold =
31587 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31588 halLLStatsSetParams.aggressive_statistics_gathering =
31589 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31590
31591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31592 " halLLStatsSetParams.req_id = %u",
31593 halLLStatsSetParams.req_id);
31594 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31595 " halLLStatsSetParams.sta_id = %u",
31596 halLLStatsSetParams.sta_id);
31597 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31598 " halLLStatsSetParams.mpdu_size_threshold = %u",
31599 halLLStatsSetParams.mpdu_size_threshold);
31600 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31601 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31602 halLLStatsSetParams.aggressive_statistics_gathering);
31603
31604 wpalMemoryCopy(pSendBuffer+usDataOffset,
31605 &halLLStatsSetParams,
31606 sizeof(halLLStatsSetParams));
31607
31608 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31609
31610 /*-------------------------------------------------------------------------
31611 Send Clear Link Layer Stats Request to HAL
31612 -------------------------------------------------------------------------*/
31613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31614 wdiLLStatsSetCb, pEventData->pUserData,
31615 WDI_LL_STATS_SET_RSP);
31616}
31617
31618/**
31619 @brief WDI_LLStatsGetReq
31620 This API is called to get link layer stats request in FW
31621
31622 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31623 wdiLLStatsGetRspCb : get link layer stats resp callback
31624 usrData : Client context
31625 @see
31626 @return SUCCESS or FAIL
31627*/
31628WDI_Status
31629WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31630 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31631 void* pUserData)
31632{
31633 WDI_EventInfoType wdiEventData;
31634
31635 /*------------------------------------------------------------------------
31636 Sanity Check
31637 ------------------------------------------------------------------------*/
31638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31639 {
31640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31641 "WDI API call before module is initialized - Fail request");
31642
31643 return WDI_STATUS_E_NOT_ALLOWED;
31644 }
31645
31646 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31647 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31648 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31649 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31650 wdiEventData.pUserData = pUserData;
31651
31652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31653}
31654
31655/**
31656 @brief WDI_ProcessLLStatsGetReq -
31657 Get Link Layer Stats request to FW
31658
31659 @param pWDICtx : wdi context
31660 pEventData : indication data
31661
31662 @see
31663 @return none
31664*/
31665WDI_Status
31666WDI_ProcessLLStatsGetReq
31667(
31668 WDI_ControlBlockType* pWDICtx,
31669 WDI_EventInfoType* pEventData
31670)
31671{
31672 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31673 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31674 wpt_uint8* pSendBuffer = NULL;
31675 wpt_uint16 usSendSize = 0;
31676 wpt_uint16 usDataOffset = 0;
31677 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31678
31679 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31680 ( NULL == pEventData->pCBfnc ))
31681 {
31682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31683 "%s: Invalid parameters", __func__);
31684 WDI_ASSERT(0);
31685 return WDI_STATUS_E_FAILURE;
31686 }
31687
31688 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31689 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31690
31691 /*-----------------------------------------------------------------------
31692 Get message buffer
31693 ! TO DO : proper conversion into the HAL Message Request Format
31694 -----------------------------------------------------------------------*/
31695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31696 pWDICtx,
31697 WDI_LL_STATS_GET_REQ,
31698 sizeof(tHalMacLlGetStatsReqParams),
31699 &pSendBuffer, &usDataOffset,
31700 &usSendSize))||
31701 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31702 {
31703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31704 "Unable to get send buffer in %s %p %p %p", __func__,
31705 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31706 WDI_ASSERT(0);
31707 return WDI_STATUS_E_FAILURE;
31708 }
Dino Mycled3d50022014-07-07 12:58:25 +053031709 /* Need to fill in the self STA Index */
31710 if ( WDI_STATUS_SUCCESS !=
31711 WDI_STATableFindStaidByAddr(pWDICtx,
31712 pwdiLLStatsGetReqParams->macAddr,
31713 &halLLStatsGetParams.sta_id))
31714 {
31715 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31716 MAC_ADDRESS_STR
31717 ": This station does not exist in the WDI Station Table",
31718 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31719
31720 wpalMemoryFree(pSendBuffer);
31721 return WDI_STATUS_E_FAILURE;
31722 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031723
31724 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031725 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31726
31727 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31728 " halLLStatsGetParams.req_id = %u",
31729 halLLStatsGetParams.req_id);
31730 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31731 " halLLStatsGetParams.staId = %u",
31732 halLLStatsGetParams.sta_id);
31733 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31734 " halLLStatsGetParams.Mask = %u",
31735 halLLStatsGetParams.param_id_mask);
31736
31737 wpalMemoryCopy(pSendBuffer+usDataOffset,
31738 &halLLStatsGetParams,
31739 sizeof(halLLStatsGetParams));
31740
31741 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31742
31743 /*-------------------------------------------------------------------------
31744 Send Clear Link Layer Stats Request to HAL
31745 -------------------------------------------------------------------------*/
31746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31747 wdiLLStatsGetCb, pEventData->pUserData,
31748 WDI_LL_STATS_GET_RSP);
31749}
31750
31751/**
31752 @brief WDI_LLStatsClearReq
31753 This API is called to clear link layer stats request in FW
31754
31755 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31756 wdiLLStatsSetRspCb : clear link layer stats resp callback
31757 usrData : Client context
31758 @see
31759 @return SUCCESS or FAIL
31760*/
31761WDI_Status
31762WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31763 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31764 void* pUserData)
31765{
31766 WDI_EventInfoType wdiEventData;
31767
31768 /*------------------------------------------------------------------------
31769 Sanity Check
31770 ------------------------------------------------------------------------*/
31771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31772 {
31773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31774 "WDI API call before module is initialized - Fail request");
31775
31776 return WDI_STATUS_E_NOT_ALLOWED;
31777 }
31778
31779 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31780 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31781 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31782 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31783 wdiEventData.pUserData = pUserData;
31784
31785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31786 "%s:%d Enter", __func__, __LINE__);
31787
31788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31789}
31790
31791/**
31792 @brief WDI_ProcessLLStatsClearReq -
31793 Clear Link Layer Stats request to FW
31794
31795 @param pWDICtx : wdi context
31796 pEventData : indication data
31797
31798 @see
31799 @return none
31800*/
31801WDI_Status
31802WDI_ProcessLLStatsClearReq
31803(
31804 WDI_ControlBlockType* pWDICtx,
31805 WDI_EventInfoType* pEventData
31806)
31807{
31808 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31809 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31810 wpt_uint8* pSendBuffer = NULL;
31811 wpt_uint16 usSendSize = 0;
31812 wpt_uint16 usDataOffset = 0;
31813 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31814
31815 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31816 ( NULL == pEventData->pCBfnc ))
31817 {
31818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31819 "%s: Invalid parameters", __func__);
31820 WDI_ASSERT(0);
31821 return WDI_STATUS_E_FAILURE;
31822 }
31823
31824 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31825 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31826
31827 /*-----------------------------------------------------------------------
31828 Get message buffer
31829 ! TO DO : proper conversion into the HAL Message Request Format
31830 -----------------------------------------------------------------------*/
31831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31832 pWDICtx,
31833 WDI_LL_STATS_CLEAR_REQ,
31834 sizeof(tHalMacLlClearStatsReqParams),
31835 &pSendBuffer, &usDataOffset,
31836 &usSendSize))||
31837 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31838 {
31839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31840 "Unable to get send buffer in %s %p %p %p", __func__,
31841 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31842 WDI_ASSERT(0);
31843 return WDI_STATUS_E_FAILURE;
31844 }
Dino Mycled3d50022014-07-07 12:58:25 +053031845 /* Need to fill in the self STA Index */
31846 if ( WDI_STATUS_SUCCESS !=
31847 WDI_STATableFindStaidByAddr(pWDICtx,
31848 pwdiLLStatsClearReqParams->macAddr,
31849 &halLLStatsClearParams.sta_id))
31850 {
31851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31852 MAC_ADDRESS_STR
31853 ": This station does not exist in the WDI Station Table",
31854 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31855
31856 wpalMemoryFree(pSendBuffer);
31857 return WDI_STATUS_E_FAILURE;
31858 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031859
31860 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031861 halLLStatsClearParams.stats_clear_req_mask =
31862 pwdiLLStatsClearReqParams->statsClearReqMask;
31863 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31864
31865 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31866 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31867 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31868 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31869 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31870 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31871 halLLStatsClearParams.stats_clear_req_mask);
31872 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31873 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31874
31875 wpalMemoryCopy(pSendBuffer+usDataOffset,
31876 &halLLStatsClearParams,
31877 sizeof(halLLStatsClearParams));
31878
31879 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31880
31881 /*-------------------------------------------------------------------------
31882 Send Clear Link Layer Stats Request to HAL
31883 -------------------------------------------------------------------------*/
31884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31885 wdiLLStatsClearCb, pEventData->pUserData,
31886 WDI_LL_STATS_CLEAR_RSP);
31887}
31888#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031889
Abhishek Singh85b74712014-10-08 11:38:19 +053031890WDI_Status WDI_FWStatsGetReq( void* pUserData,
31891 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31892 wpt_uint32 stats)
31893{
31894 WDI_EventInfoType wdiEventData;
31895
31896 /*------------------------------------------------------------------------
31897 Sanity Check
31898 ------------------------------------------------------------------------*/
31899 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31900 {
31901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31902 "WDI API call before module is initialized - Fail request");
31903 return WDI_STATUS_E_NOT_ALLOWED;
31904 }
31905 /*------------------------------------------------------------------------
31906 Fill in Event data and post to the Main FSM
31907 ------------------------------------------------------------------------*/
31908 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31909 wdiEventData.pEventData = (void *)&stats;
31910 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31911 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31912 wdiEventData.pUserData = pUserData;
31913
31914 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31915
31916}
31917
Dino Mycle41bdc942014-06-10 11:30:24 +053031918#ifdef WLAN_FEATURE_EXTSCAN
31919
31920/**
31921 @brief Process EXTSCAN BUffer full indication from FW
31922
31923 @param pWDICtx: pointer to the WLAN DAL context
31924 pEventData: pointer to the event information structure
31925
31926 @see
31927 @return Result of the function call
31928*/
31929WDI_Status
31930WDI_ProcessEXTScanProgressInd
31931(
31932 WDI_ControlBlockType* pWDICtx,
31933 WDI_EventInfoType* pEventData
31934)
31935{
31936 WDI_LowLevelIndType wdiInd;
31937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31938
31939 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31940 "%s: ", __func__);
31941
31942 /* sanity check */
31943 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31944 ( NULL == pEventData->pEventData))
31945 {
31946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31947 "%s: Invalid parameters", __func__);
31948 WDI_ASSERT(0);
31949 return WDI_STATUS_E_FAILURE;
31950 }
31951
31952 /* Fill in the indication parameters */
31953 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31954
31955 /* extract response and send it to UMAC */
31956 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31957
31958 /* Notify UMAC */
31959 if (pWDICtx->wdiLowLevelIndCB)
31960 {
31961 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31962 }
31963 else
31964 {
Dino Mycled3d50022014-07-07 12:58:25 +053031965 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031966 "%s: WDILowLevelIndCb is null", __func__);
31967 WDI_ASSERT(0);
31968 return WDI_STATUS_E_FAILURE;
31969 }
31970 return WDI_STATUS_SUCCESS;
31971
31972} /* End of WDI_ProcessEXTScanProgressInd */
31973
31974
31975/**
31976 @brief Process EXTScan Scan Available indication from FW
31977
31978 @param pWDICtx: pointer to the WLAN DAL context
31979 pEventData: pointer to the event information structure
31980
31981 @see
31982 @return Result of the function call
31983*/
31984WDI_Status
31985WDI_ProcessEXTScanScanAvailableInd
31986(
31987 WDI_ControlBlockType* pWDICtx,
31988 WDI_EventInfoType* pEventData
31989)
31990{
31991 WDI_LowLevelIndType wdiInd;
31992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31993
31994 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31995 "%s: ", __func__);
31996
31997 /* sanity check */
31998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31999 ( NULL == pEventData->pEventData))
32000 {
32001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32002 "%s: Invalid parameters", __func__);
32003 WDI_ASSERT(0);
32004 return WDI_STATUS_E_FAILURE;
32005 }
32006
32007
32008
32009 /* Fill in the indication parameters */
32010 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32011
32012 /* extract response and send it to UMAC */
32013 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32014
32015 /* Notify UMAC */
32016 if (pWDICtx->wdiLowLevelIndCB)
32017 {
32018 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32019 }
32020 else
32021 {
32022 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32023 "%s: WDILowLevelIndCb is null", __func__);
32024 WDI_ASSERT(0);
32025 return WDI_STATUS_E_FAILURE;
32026 }
32027 return WDI_STATUS_SUCCESS;
32028} /* End of WDI_ProcessEXTScanScanDoneInd */
32029
32030/**
32031 @brief Process EXTScan Result Indication indication from FW
32032
32033 @param pWDICtx: pointer to the WLAN DAL context
32034 pEventData: pointer to the event information structure
32035
32036 @see
32037 @return Result of the function call
32038*/
32039WDI_Status
32040WDI_ProcessEXTScanResultInd
32041(
32042 WDI_ControlBlockType* pWDICtx,
32043 WDI_EventInfoType* pEventData
32044)
32045{
32046 WDI_LowLevelIndType wdiInd;
32047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32048
32049 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32050 "%s: ", __func__);
32051
32052 /* sanity check */
32053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32054 ( NULL == pEventData->pEventData))
32055 {
32056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32057 "%s: Invalid parameters", __func__);
32058 WDI_ASSERT(0);
32059 return WDI_STATUS_E_FAILURE;
32060 }
32061
32062 /* Fill in the indication parameters */
32063 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32064
32065 /* extract response and send it to UMAC */
32066 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32067
32068 /* Notify UMAC */
32069 if (pWDICtx->wdiLowLevelIndCB)
32070 {
32071 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32072 }
32073 else
32074 {
32075 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32076 "%s: WDILowLevelIndCb is null", __func__);
32077 WDI_ASSERT(0);
32078 return WDI_STATUS_E_FAILURE;
32079 }
32080 return WDI_STATUS_SUCCESS;
32081} /* End of WDI_ProcessEXTScanResultInd */
32082
32083/**
32084 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32085
32086 @param pWDICtx: pointer to the WLAN DAL context
32087 pEventData: pointer to the event information structure
32088
32089 @see
32090 @return Result of the function call
32091*/
32092WDI_Status
32093WDI_ProcessEXTScanBssidHotListResultInd
32094(
32095 WDI_ControlBlockType* pWDICtx,
32096 WDI_EventInfoType* pEventData
32097)
32098{
32099 WDI_LowLevelIndType wdiInd;
32100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32101
32102 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32103 "%s: ", __func__);
32104
32105 /* sanity check */
32106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32107 ( NULL == pEventData->pEventData))
32108 {
32109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32110 "%s: Invalid parameters", __func__);
32111 WDI_ASSERT(0);
32112 return WDI_STATUS_E_FAILURE;
32113 }
32114
32115 /* Fill in the indication parameters */
32116 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32117
32118 /* extract response and send it to UMAC */
32119 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32120
32121 /* Notify UMAC */
32122 if (pWDICtx->wdiLowLevelIndCB)
32123 {
32124 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32125 }
32126 else
32127 {
32128 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32129 "%s: WDILowLevelIndCb is null", __func__);
32130 WDI_ASSERT(0);
32131 return WDI_STATUS_E_FAILURE;
32132 }
32133 return WDI_STATUS_SUCCESS;
32134} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32135
32136/**
32137 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32138
32139 @param pWDICtx: pointer to the WLAN DAL context
32140 pEventData: pointer to the event information structure
32141
32142 @see
32143 @return Result of the function call
32144*/
32145WDI_Status
32146WDI_ProcessEXTScanSignfRssiResultInd
32147(
32148 WDI_ControlBlockType* pWDICtx,
32149 WDI_EventInfoType* pEventData
32150)
32151{
32152 WDI_LowLevelIndType wdiInd;
32153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32154
32155 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32156 "%s: ", __func__);
32157
32158 /* sanity check */
32159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32160 ( NULL == pEventData->pEventData))
32161 {
32162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32163 "%s: Invalid parameters", __func__);
32164 WDI_ASSERT(0);
32165 return WDI_STATUS_E_FAILURE;
32166 }
32167
32168 /* Fill in the indication parameters */
32169 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32170
32171 /* extract response and send it to UMAC */
32172 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32173
32174 /* Notify UMAC */
32175 if (pWDICtx->wdiLowLevelIndCB)
32176 {
32177 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32178 }
32179 else
32180 {
32181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32182 "%s: WDILowLevelIndCb is null", __func__);
32183 WDI_ASSERT(0);
32184 return WDI_STATUS_E_FAILURE;
32185 }
32186 return WDI_STATUS_SUCCESS;
32187} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32188
32189/**
32190 @brief WDI_EXTScanGetCapabilitiesReq
32191
32192 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32193 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32194 of the Req operation received from the device
32195 pUserData: user data will be passed back with the callback
32196
32197 @return SUCCESS or FAIL
32198*/
32199WDI_Status
32200WDI_EXTScanGetCapabilitiesReq(
32201 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32202 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32203 void* pUserData)
32204{
32205 WDI_EventInfoType wdiEventData;
32206
32207 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32208 "%s: %d ",__func__, __LINE__);
32209 /*------------------------------------------------------------------------
32210 Sanity Check
32211 ------------------------------------------------------------------------*/
32212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32213 {
32214 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32215 "WDI API call before module is initialized - Fail request");
32216
32217 return WDI_STATUS_E_NOT_ALLOWED;
32218 }
32219
32220 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32221 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32222 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32223 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32224 wdiEventData.pUserData = pUserData;
32225
32226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32227}
32228
32229/**
32230 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32231 Extended Scan Get Capability request to FW
32232
32233 @param pWDICtx : wdi context
32234 pEventData : indication data
32235
32236 @see
32237 @return none
32238*/
32239WDI_Status
32240WDI_ProcessEXTScanGetCapabilitiesReq
32241(
32242 WDI_ControlBlockType* pWDICtx,
32243 WDI_EventInfoType* pEventData
32244)
32245{
32246 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32247 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32248 wpt_uint8* pSendBuffer = NULL;
32249 wpt_uint16 usSendSize = 0;
32250 wpt_uint16 usDataOffset = 0;
32251 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32252
32253 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32254 "%s: %d Enter",__func__, __LINE__);
32255
32256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32257 ( NULL == pEventData->pCBfnc ))
32258 {
32259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32260 "%s: Invalid parameters", __func__);
32261 WDI_ASSERT(0);
32262 return WDI_STATUS_E_FAILURE;
32263 }
32264
32265 pwdiEXTScanGetCapabilitiesReqParams =
32266 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32267 wdiEXTScanGetCapabilitiesRspCb =
32268 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32269
32270 /*-----------------------------------------------------------------------
32271 Get message buffer
32272 ! TO DO : proper conversion into the HAL Message Request Format
32273 -----------------------------------------------------------------------*/
32274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32275 pWDICtx,
32276 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32277 sizeof(halEXTScanGetCapReqParams),
32278 &pSendBuffer, &usDataOffset,
32279 &usSendSize))||
32280 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32281 {
32282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32283 "Unable to get send buffer in %s %p %p %p", __func__,
32284 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32285 wdiEXTScanGetCapabilitiesRspCb);
32286 WDI_ASSERT(0);
32287 return WDI_STATUS_E_FAILURE;
32288 }
32289
32290 halEXTScanGetCapReqParams.requestId =
32291 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32292 halEXTScanGetCapReqParams.sessionId =
32293 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32294
32295 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32296 " requestId %u "
32297 " sessionId %u ",
32298 halEXTScanGetCapReqParams.requestId,
32299 halEXTScanGetCapReqParams.sessionId);
32300
32301 wpalMemoryCopy(pSendBuffer+usDataOffset,
32302 &halEXTScanGetCapReqParams,
32303 sizeof(halEXTScanGetCapReqParams));
32304
32305 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32306
32307
32308 /*-------------------------------------------------------------------------
32309 Send EXTScan Stop Request to HAL
32310 -------------------------------------------------------------------------*/
32311 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32312 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32313 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32314}
32315
32316/**
32317 @brief WDI_EXTScanGetCachedResultsReq
32318
32319 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32320 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32321 of the Req operation received from the device
32322 pUserData: user data will be passed back with the callback
32323
32324 @return SUCCESS or FAIL
32325*/
32326
32327WDI_Status
32328WDI_EXTScanGetCachedResultsReq(
32329 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32330 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32331 void* pUserData)
32332{
32333 WDI_EventInfoType wdiEventData;
32334
32335 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32336 "%s: %d Enter",__func__, __LINE__);
32337 /*------------------------------------------------------------------------
32338 Sanity Check
32339 ------------------------------------------------------------------------*/
32340 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32341 {
32342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32343 "WDI API call before module is initialized - Fail request");
32344
32345 return WDI_STATUS_E_NOT_ALLOWED;
32346 }
32347
32348 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32349 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32350 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32351 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32352 wdiEventData.pUserData = pUserData;
32353
32354 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32355}
32356
32357/**
32358 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32359 Extended Scan Get Cached Result request to FW
32360
32361 @param pWDICtx : wdi context
32362 pEventData : indication data
32363
32364 @see
32365 @return none
32366*/
32367WDI_Status
32368WDI_ProcessEXTScanGetCachedResultsReq
32369(
32370 WDI_ControlBlockType* pWDICtx,
32371 WDI_EventInfoType* pEventData
32372)
32373{
32374 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32375 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32376 wpt_uint8* pSendBuffer = NULL;
32377 wpt_uint16 usSendSize = 0;
32378 wpt_uint16 usDataOffset = 0;
32379 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32380
32381 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32382 "%s: %d Enter",__func__, __LINE__);
32383
32384 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32385 ( NULL == pEventData->pCBfnc ))
32386 {
32387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32388 "%s: Invalid parameters", __func__);
32389 WDI_ASSERT(0);
32390 return WDI_STATUS_E_FAILURE;
32391 }
32392
32393 pwdiEXTScanGetCachedResultsReqParams =
32394 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32395 wdiEXTScanGetCachedResultsCb =
32396 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32397
32398 /*-----------------------------------------------------------------------
32399 Get message buffer
32400 ! TO DO : proper conversion into the HAL Message Request Format
32401 -----------------------------------------------------------------------*/
32402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32403 pWDICtx,
32404 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32405 sizeof(tHalExtScanGetScanReq),
32406 &pSendBuffer, &usDataOffset,
32407 &usSendSize))||
32408 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32409 {
32410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32411 "Unable to get send buffer in %s %p %p %p", __func__,
32412 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32413 wdiEXTScanGetCachedResultsCb);
32414 WDI_ASSERT(0);
32415 return WDI_STATUS_E_FAILURE;
32416 }
32417
32418 halEXTScanGetScanReqParams.requestId =
32419 pwdiEXTScanGetCachedResultsReqParams->requestId;
32420 halEXTScanGetScanReqParams.sessionId =
32421 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32422 halEXTScanGetScanReqParams.flush =
32423 pwdiEXTScanGetCachedResultsReqParams->flush;
32424
32425 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32426 " requestId %u "
32427 " sessionId %u "
32428 " flush %u ",
32429 halEXTScanGetScanReqParams.requestId,
32430 halEXTScanGetScanReqParams.sessionId,
32431 halEXTScanGetScanReqParams.flush);
32432
32433 wpalMemoryCopy(pSendBuffer+usDataOffset,
32434 &halEXTScanGetScanReqParams,
32435 sizeof(halEXTScanGetScanReqParams));
32436
32437 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32438
32439
32440 /*-------------------------------------------------------------------------
32441 Send EXTScan Stop Request to HAL
32442 -------------------------------------------------------------------------*/
32443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32444 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32445 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32446}
32447
32448/**
32449 @brief WDI_EXTScanStopReq
32450
32451 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32452 WDI_EXTScanStopRspCb: callback for passing back the response
32453 of the Req operation received from the device
32454 pUserData: user data will be passed back with the callback
32455
32456 @return SUCCESS or FAIL
32457*/
32458WDI_Status
32459WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32460 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32461 void* pUserData)
32462{
32463 WDI_EventInfoType wdiEventData;
32464
32465 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32466 "%s: %d ",__func__, __LINE__);
32467 /*------------------------------------------------------------------------
32468 Sanity Check
32469 ------------------------------------------------------------------------*/
32470 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32471 {
32472 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32473 "WDI API call before module is initialized - Fail request");
32474
32475 return WDI_STATUS_E_NOT_ALLOWED;
32476 }
32477
32478 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32479 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32480 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32481 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32482 wdiEventData.pUserData = pUserData;
32483
32484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32485}
32486
32487/**
32488 @brief WDI_ProcessEXTScanStopReq -
32489 Extended Scan Stop request to FW
32490
32491 @param pWDICtx : wdi context
32492 pEventData : indication data
32493
32494 @see
32495 @return none
32496*/
32497WDI_Status
32498WDI_ProcessEXTScanStopReq
32499(
32500 WDI_ControlBlockType* pWDICtx,
32501 WDI_EventInfoType* pEventData
32502)
32503{
32504 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32505 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32506 wpt_uint8* pSendBuffer = NULL;
32507 wpt_uint16 usSendSize = 0;
32508 wpt_uint16 usDataOffset = 0;
32509 tHalExtScanStopReq halEXTScanStopReqParams;
32510
32511 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32512 "%s: %d ",__func__, __LINE__);
32513
32514 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32515 ( NULL == pEventData->pCBfnc ))
32516 {
32517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32518 "%s: Invalid parameters", __func__);
32519 WDI_ASSERT(0);
32520 return WDI_STATUS_E_FAILURE;
32521 }
32522
32523 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32524 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32525
32526 /*-----------------------------------------------------------------------
32527 Get message buffer
32528 ! TO DO : proper conversion into the HAL Message Request Format
32529 -----------------------------------------------------------------------*/
32530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32531 pWDICtx,
32532 WDI_EXTSCAN_STOP_REQ,
32533 sizeof(tHalExtScanStopReq),
32534 &pSendBuffer, &usDataOffset,
32535 &usSendSize))||
32536 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32537 {
32538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32539 "Unable to get send buffer in %s %p %p %p", __func__,
32540 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32541 WDI_ASSERT(0);
32542 return WDI_STATUS_E_FAILURE;
32543 }
32544
32545 halEXTScanStopReqParams.requestId =
32546 pwdiEXTScanStopReqParams->requestId;
32547 halEXTScanStopReqParams.sessionId =
32548 pwdiEXTScanStopReqParams->sessionId;
32549
32550 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32551 " halEXTScanStopReqParams.requestId %u "
32552 " halEXTScanStopReqParams.sessionId %u ",
32553 halEXTScanStopReqParams.requestId,
32554 halEXTScanStopReqParams.sessionId);
32555
32556 wpalMemoryCopy(pSendBuffer+usDataOffset,
32557 &halEXTScanStopReqParams,
32558 sizeof(halEXTScanStopReqParams));
32559
32560 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32561
32562
32563 /*-------------------------------------------------------------------------
32564 Send EXTScan Stop Request to HAL
32565 -------------------------------------------------------------------------*/
32566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32567 wdiEXTScanStopCb, pEventData->pUserData,
32568 WDI_EXTSCAN_STOP_RSP);
32569}
32570
32571/**
32572 @brief WDI_EXTScanStartReq
32573
32574 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32575 WDI_EXTScanStartRspCb: callback for passing back the response
32576 of the Req operation received from the device
32577 pUserData: user data will be passed back with the callback
32578
32579 @return SUCCESS or FAIL
32580*/
32581WDI_Status
32582WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32583 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32584 void* pUserData)
32585{
32586 WDI_EventInfoType wdiEventData;
32587
32588 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32589 "%s: %d Enter",__func__, __LINE__);
32590 /*------------------------------------------------------------------------
32591 Sanity Check
32592 ------------------------------------------------------------------------*/
32593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32594 {
32595 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32596 "WDI API call before module is initialized - Fail request");
32597
32598 return WDI_STATUS_E_NOT_ALLOWED;
32599 }
32600
32601 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32602 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32603 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32604 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32605 wdiEventData.pUserData = pUserData;
32606
32607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32608}
32609
32610/**
32611 @brief WDI_ProcessEXTScanStartReq -
32612 Extended Scan Start Request to FW
32613
32614 @param pWDICtx : wdi context
32615 pEventData : indication data
32616
32617 @see
32618 @return none
32619*/
32620WDI_Status
32621WDI_ProcessEXTScanStartReq
32622(
32623 WDI_ControlBlockType* pWDICtx,
32624 WDI_EventInfoType* pEventData
32625)
32626{
32627 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32628 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32629 wpt_uint8* pSendBuffer = NULL;
32630 wpt_uint16 usSendSize = 0;
32631 wpt_uint16 usDataOffset = 0;
32632 tpHalExtScanStartReq pHalExtScanStartReqParams;
32633 int i = 0;
32634 int j = 0;
32635
32636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32637 "%s: %d Enter",__func__, __LINE__);
32638
32639 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32640 ( NULL == pEventData->pCBfnc ))
32641 {
32642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32643 "%s: Invalid parameters", __func__);
32644 WDI_ASSERT(0);
32645 return WDI_STATUS_E_FAILURE;
32646 }
32647
32648 pwdiEXTScanStartReqParams =
32649 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32650 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32651
32652 /*-----------------------------------------------------------------------
32653 Get message buffer
32654 ! TO DO : proper conversion into the HAL Message Request Format
32655 -----------------------------------------------------------------------*/
32656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32657 pWDICtx,
32658 WDI_EXTSCAN_START_REQ,
32659 sizeof(tHalExtScanStartReq),
32660 &pSendBuffer, &usDataOffset,
32661 &usSendSize))||
32662 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32663 {
32664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32665 "Unable to get send buffer in %s %p %p %p", __func__,
32666 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32667 WDI_ASSERT(0);
32668 return WDI_STATUS_E_FAILURE;
32669 }
32670
32671 pHalExtScanStartReqParams =
32672 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32673
32674 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32675 pHalExtScanStartReqParams->maxApPerScan =
32676 pwdiEXTScanStartReqParams->maxAPperScan;
32677 pHalExtScanStartReqParams->reportThreshold =
32678 pwdiEXTScanStartReqParams->reportThreshold;
32679 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32680 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32681 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32682
32683 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32684 {
32685 pHalExtScanStartReqParams->bucketData[i].bucketId =
32686 pwdiEXTScanStartReqParams->buckets[i].bucket;
32687 pHalExtScanStartReqParams->bucketData[i].channelBand =
32688 pwdiEXTScanStartReqParams->buckets[i].band;
32689 pHalExtScanStartReqParams->bucketData[i].period =
32690 pwdiEXTScanStartReqParams->buckets[i].period;
32691 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32692 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32693 pHalExtScanStartReqParams->bucketData[i].numChannels =
32694 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32695
32696 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32697 {
32698 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32699 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32700 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32701 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32702 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32703 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32704 }
32705
32706 }
32707
32708
32709 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32710 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32711 " sessionId %u numBuckets%u ",
32712 pHalExtScanStartReqParams->basePeriod,
32713 pHalExtScanStartReqParams->maxApPerScan,
32714 pHalExtScanStartReqParams->reportThreshold,
32715 pHalExtScanStartReqParams->requestId,
32716 pHalExtScanStartReqParams->sessionId,
32717 pHalExtScanStartReqParams->numBuckets);
32718
32719 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32720 {
32721 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32722 " %d) bucketId %u channelBand %u period %u "
32723 " reportEvents %u numChannels %u ",i,
32724 pHalExtScanStartReqParams->bucketData[i].bucketId,
32725 pHalExtScanStartReqParams->bucketData[i].channelBand,
32726 pHalExtScanStartReqParams->bucketData[i].period,
32727 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32728 pHalExtScanStartReqParams->bucketData[i].numChannels);
32729
32730 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32731 {
32732 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32733 "%d) channel %u dwellTimeMs %u passive %u ",j,
32734 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32735 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32736 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32737 }
32738
32739 }
32740
Dino Mycle41bdc942014-06-10 11:30:24 +053032741 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32742
32743 /*-------------------------------------------------------------------------
32744 Send EXTSCAN Start Request to HAL
32745 -------------------------------------------------------------------------*/
32746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32747 wdiEXTScanStartCb, pEventData->pUserData,
32748 WDI_EXTSCAN_START_RSP);
32749}
32750
32751/**
32752 @brief WDI_EXTScanSetBSSIDHotlistReq
32753
32754 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32755 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32756 of the Req operation received from the device
32757 pUserData: user data will be passed back with the callback
32758
32759 @return SUCCESS or FAIL
32760*/
32761WDI_Status
32762WDI_EXTScanSetBSSIDHotlistReq(
32763 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32764 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32765 void* pUserData)
32766{
32767 WDI_EventInfoType wdiEventData;
32768
32769 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32770 "%s: %d Enter ",__func__, __LINE__);
32771 /*------------------------------------------------------------------------
32772 Sanity Check
32773 ------------------------------------------------------------------------*/
32774 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32775 {
32776 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32777 "WDI API call before module is initialized - Fail request");
32778
32779 return WDI_STATUS_E_NOT_ALLOWED;
32780 }
32781
32782 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32783 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32784 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32785 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32786 wdiEventData.pUserData = pUserData;
32787
32788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32789}
32790
32791/**
32792 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32793 Extended Scan Set BSSSID Hotlist Request to FW
32794
32795 @param pWDICtx : wdi context
32796 pEventData : indication data
32797
32798 @see
32799 @return none
32800*/
32801WDI_Status
32802WDI_ProcessEXTScanSetBSSIDHotlistReq
32803(
32804 WDI_ControlBlockType* pWDICtx,
32805 WDI_EventInfoType* pEventData
32806)
32807{
32808 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32809 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32810 wpt_uint8* pSendBuffer = NULL;
32811 wpt_uint16 usSendSize = 0;
32812 wpt_uint16 usDataOffset = 0;
32813 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32814 int i;
32815
32816 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32817 "%s: %d Enter",__func__, __LINE__);
32818
32819 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32820 ( NULL == pEventData->pCBfnc ))
32821 {
32822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32823 "%s: Invalid parameters", __func__);
32824 WDI_ASSERT(0);
32825 return WDI_STATUS_E_FAILURE;
32826 }
32827
32828 pwdiEXTScanSetBSSIDHotlistReqParams =
32829 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32830 wdiEXTScanSetBSSIDHotlistRspCb =
32831 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32832
32833 /*-----------------------------------------------------------------------
32834 Get message buffer
32835 ! TO DO : proper conversion into the HAL Message Request Format
32836 -----------------------------------------------------------------------*/
32837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32838 pWDICtx,
32839 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32840 sizeof(tHalBssidHotlistSetReq),
32841 &pSendBuffer, &usDataOffset,
32842 &usSendSize))||
32843 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32844 {
32845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32846 "Unable to get send buffer in %s %p %p %p", __func__,
32847 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32848 wdiEXTScanSetBSSIDHotlistRspCb);
32849 WDI_ASSERT(0);
32850 return WDI_STATUS_E_FAILURE;
32851 }
32852 pHalBssidHotlistSetReqParams =
32853 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32854
32855 pHalBssidHotlistSetReqParams->requestId =
32856 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32857
32858 pHalBssidHotlistSetReqParams->sessionId =
32859 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32860
32861 pHalBssidHotlistSetReqParams->numAp =
32862 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32863
32864 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32865
32866 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32867 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32868 WDI_MAC_ADDR_LEN);
32869
32870 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32871 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32872
32873 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32874 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32875
32876 pHalBssidHotlistSetReqParams->ap[i].channel =
32877 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32878
32879 }
32880
32881 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32882 "ReqID %u sessionId %u numAp %u ",
32883 pHalBssidHotlistSetReqParams->requestId,
32884 pHalBssidHotlistSetReqParams->sessionId,
32885 pHalBssidHotlistSetReqParams->numAp);
32886
32887 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32888
32889 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32890 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32891 __func__, __LINE__, i,
32892 pHalBssidHotlistSetReqParams->ap[i].bssid,
32893 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32894 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32895 pHalBssidHotlistSetReqParams->ap[i].channel);
32896
32897 }
32898
32899 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32900
32901
32902 /*-------------------------------------------------------------------------
32903 Send EXTScan Stop Request to HAL
32904 -------------------------------------------------------------------------*/
32905 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32906 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32907 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32908}
32909
32910/**
32911 @brief WDI_EXTScanResetBSSIDHotlistReq
32912
32913 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32914 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32915 of the Req operation received from the device
32916 pUserData: user data will be passed back with the callback
32917
32918 @return SUCCESS or FAIL
32919*/
32920WDI_Status
32921WDI_EXTScanResetBSSIDHotlistReq(
32922 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32923 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32924 void* pUserData)
32925{
32926 WDI_EventInfoType wdiEventData;
32927
32928 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32929 "%s: %d",__func__, __LINE__);
32930 /*------------------------------------------------------------------------
32931 Sanity Check
32932 ------------------------------------------------------------------------*/
32933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32934 {
32935 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32936 "WDI API call before module is initialized - Fail request");
32937
32938 return WDI_STATUS_E_NOT_ALLOWED;
32939 }
32940
32941 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32942 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32943 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32944 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32945 wdiEventData.pUserData = pUserData;
32946
32947 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32948}
32949
32950/**
32951 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32952 Extended Scan reset BSSID hotlist Request to FW
32953
32954 @param pWDICtx : wdi context
32955 pEventData : indication data
32956
32957 @see
32958 @return none
32959*/
32960WDI_Status
32961WDI_ProcessEXTScanResetBSSIDHotlistReq
32962(
32963 WDI_ControlBlockType* pWDICtx,
32964 WDI_EventInfoType* pEventData
32965)
32966{
32967 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32968 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32969 wpt_uint8* pSendBuffer = NULL;
32970 wpt_uint16 usSendSize = 0;
32971 wpt_uint16 usDataOffset = 0;
32972 tpHalHotlistResetReq pHalHotlistResetReqParams;
32973
32974 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32975 "%s: %d",__func__, __LINE__);
32976
32977 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32978 ( NULL == pEventData->pCBfnc ))
32979 {
32980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32981 "%s: Invalid parameters", __func__);
32982 WDI_ASSERT(0);
32983 return WDI_STATUS_E_FAILURE;
32984 }
32985
32986 pwdiEXTScanResetBSSIDHotlistReqParams =
32987 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32988 wdiEXTScanResetBSSIDHotlistRspCb =
32989 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32990
32991 /*-----------------------------------------------------------------------
32992 Get message buffer
32993 ! TO DO : proper conversion into the HAL Message Request Format
32994 -----------------------------------------------------------------------*/
32995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32996 pWDICtx,
32997 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32998 sizeof(tHalHotlistResetReq),
32999 &pSendBuffer, &usDataOffset,
33000 &usSendSize))||
33001 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33002 {
33003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33004 "Unable to get send buffer in %s %p %p %p", __func__,
33005 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33006 wdiEXTScanResetBSSIDHotlistRspCb);
33007 WDI_ASSERT(0);
33008 return WDI_STATUS_E_FAILURE;
33009 }
33010 pHalHotlistResetReqParams =
33011 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33012
33013 pHalHotlistResetReqParams->requestId =
33014 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33015
33016 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33017
33018 /*-------------------------------------------------------------------------
33019 Send EXTScan Stop Request to HAL
33020 -------------------------------------------------------------------------*/
33021 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33022 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33023 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33024}
33025
33026/**
33027 @brief WDI_EXTScanSetSignfRSSIChangeReq
33028
33029 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33030 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33031 of the Req operation received from the device
33032 pUserData: user data will be passed back with the callback
33033
33034 @return SUCCESS or FAIL
33035*/
33036WDI_Status
33037WDI_EXTScanSetSignfRSSIChangeReq(
33038 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33039 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33040 void* pUserData)
33041{
33042 WDI_EventInfoType wdiEventData;
33043
33044 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33045 "%s: %d ",__func__, __LINE__);
33046 /*------------------------------------------------------------------------
33047 Sanity Check
33048 ------------------------------------------------------------------------*/
33049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33050 {
33051 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33052 "WDI API call before module is initialized - Fail request");
33053
33054 return WDI_STATUS_E_NOT_ALLOWED;
33055 }
33056
33057 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33058 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33059 wdiEventData.uEventDataSize =
33060 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33061 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33062 wdiEventData.pUserData = pUserData;
33063
33064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33065}
33066
33067/**
33068 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33069 Extended Scan set Significant RSSI change Request to FW
33070
33071 @param pWDICtx : wdi context
33072 pEventData : indication data
33073
33074 @see
33075 @return none
33076*/
33077WDI_Status
33078WDI_ProcessEXTScanSetSignifRSSIChangeReq
33079(
33080 WDI_ControlBlockType* pWDICtx,
33081 WDI_EventInfoType* pEventData
33082)
33083{
33084 WDI_EXTScanSetSignfRSSIChangeReqParams*
33085 pwdiEXTScanSetSignfRSSIChangeReqParams;
33086 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33087 wpt_uint8* pSendBuffer = NULL;
33088 wpt_uint16 usSendSize = 0;
33089 wpt_uint16 usDataOffset = 0;
33090 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33091 int i;
33092
33093 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33094 "%s: %d Enter",__func__, __LINE__);
33095
33096 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33097 ( NULL == pEventData->pCBfnc ))
33098 {
33099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33100 "%s: Invalid parameters", __func__);
33101 WDI_ASSERT(0);
33102 return WDI_STATUS_E_FAILURE;
33103 }
33104
33105 pwdiEXTScanSetSignfRSSIChangeReqParams =
33106 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33107 wdiEXTScanSetSignfRSSIChangeRspCb =
33108 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33109
33110 /*-----------------------------------------------------------------------
33111 Get message buffer
33112 ! TO DO : proper conversion into the HAL Message Request Format
33113 -----------------------------------------------------------------------*/
33114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33115 pWDICtx,
33116 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33117 sizeof(tHalSigRssiSetReq),
33118 &pSendBuffer, &usDataOffset,
33119 &usSendSize))||
33120 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33121 {
33122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33123 "Unable to get send buffer in %s %p %p %p", __func__,
33124 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33125 wdiEXTScanSetSignfRSSIChangeRspCb);
33126 WDI_ASSERT(0);
33127 return WDI_STATUS_E_FAILURE;
33128 }
33129
33130 pHalSigRssiSetReqParams =
33131 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33132
33133 pHalSigRssiSetReqParams->requestId =
33134 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33135 pHalSigRssiSetReqParams->sessionId =
33136 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33137 pHalSigRssiSetReqParams->rssiSampleSize =
33138 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33139 pHalSigRssiSetReqParams->lostApSampleSize =
33140 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33141 pHalSigRssiSetReqParams->minBreaching =
33142 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33143 pHalSigRssiSetReqParams->numAp =
33144 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33145
33146
33147 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33148
33149 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33150 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33151 WDI_MAC_ADDR_LEN);
33152
33153 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33154 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33155
33156 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33157 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33158
33159 pHalSigRssiSetReqParams->ap[i].channel =
33160 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33161
33162 }
33163
33164
33165 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33166 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33167 " minBreaching %u numAp %u ",
33168 pHalSigRssiSetReqParams->requestId,
33169 pHalSigRssiSetReqParams->sessionId,
33170 pHalSigRssiSetReqParams->rssiSampleSize,
33171 pHalSigRssiSetReqParams->lostApSampleSize,
33172 pHalSigRssiSetReqParams->minBreaching,
33173 pHalSigRssiSetReqParams->numAp);
33174
33175 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33176
33177 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33178 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33179 i,
33180 pHalSigRssiSetReqParams->ap[i].bssid,
33181 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33182 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33183 pHalSigRssiSetReqParams->ap[i].channel);
33184
33185 }
33186
33187 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33188
33189
33190 /*-------------------------------------------------------------------------
33191 Send EXTScan Stop Request to HAL
33192 -------------------------------------------------------------------------*/
33193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33194 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33195 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33196}
33197
33198/**
33199 @brief WDI_EXTScanResetSignfRSSIChangeReq
33200
33201 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33202 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33203 of the Req operation received from the device
33204 pUserData: user data will be passed back with the callback
33205
33206 @return SUCCESS or FAIL
33207*/
33208WDI_Status
33209WDI_EXTScanResetSignfRSSIChangeReq(
33210 WDI_EXTScanResetSignfRSSIChangeReqParams*
33211 pwdiEXTScanResetSignfRSSIChangeReqParams,
33212 WDI_EXTScanResetSignfRSSIChangeRspCb
33213 wdiEXTScanResetSignfRSSIChangeRspCb,
33214 void* pUserData)
33215{
33216 WDI_EventInfoType wdiEventData;
33217
33218 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33219 "%s: %d ",__func__, __LINE__);
33220 /*------------------------------------------------------------------------
33221 Sanity Check
33222 ------------------------------------------------------------------------*/
33223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33224 {
33225 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33226 "WDI API call before module is initialized - Fail request");
33227
33228 return WDI_STATUS_E_NOT_ALLOWED;
33229 }
33230
33231 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33232 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33233 wdiEventData.uEventDataSize =
33234 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33235 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33236 wdiEventData.pUserData = pUserData;
33237
33238 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33239}
33240
33241/**
33242 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33243 Extended Scana reset Significant RSSI change Request to FW
33244
33245 @param pWDICtx : wdi context
33246 pEventData : indication data
33247
33248 @see
33249 @return none
33250*/
33251WDI_Status
33252WDI_ProcessEXTScanResetSignfRSSIChangeReq
33253(
33254 WDI_ControlBlockType* pWDICtx,
33255 WDI_EventInfoType* pEventData
33256)
33257{
33258 WDI_EXTScanResetSignfRSSIChangeReqParams*
33259 pwdiEXTScanResetSignfRSSIChangeReqParams;
33260 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33261 wpt_uint8* pSendBuffer = NULL;
33262 wpt_uint16 usSendSize = 0;
33263 wpt_uint16 usDataOffset = 0;
33264 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33265
33266 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33267 "%s: %d ",__func__, __LINE__);
33268
33269 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33270 ( NULL == pEventData->pCBfnc ))
33271 {
33272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33273 "%s: Invalid parameters", __func__);
33274 WDI_ASSERT(0);
33275 return WDI_STATUS_E_FAILURE;
33276 }
33277
33278 pwdiEXTScanResetSignfRSSIChangeReqParams =
33279 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33280 wdiEXTScanResetSignfRSSIChangeRspCb =
33281 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33282
33283 /*-----------------------------------------------------------------------
33284 Get message buffer
33285 ! TO DO : proper conversion into the HAL Message Request Format
33286 -----------------------------------------------------------------------*/
33287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33288 pWDICtx,
33289 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33290 sizeof(tHalSigRssiResetReq),
33291 &pSendBuffer, &usDataOffset,
33292 &usSendSize))||
33293 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33294 {
33295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33296 "Unable to get send buffer in %s %p %p %p", __func__,
33297 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33298 wdiEXTScanResetSignfRSSIChangeRspCb);
33299 WDI_ASSERT(0);
33300 return WDI_STATUS_E_FAILURE;
33301 }
33302 pHalSigRssiResetReqParams =
33303 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33304
33305 pHalSigRssiResetReqParams->requestId =
33306 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33307
33308 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33309
33310
33311 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33312 wdiEXTScanResetSignfRSSIChangeRspCb,
33313 pEventData->pUserData,
33314 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33315}
33316
33317/**
33318 @brief Process Extended Scan Start Rsp function (called when a response
33319 is being received over the bus from HAL)
33320
33321 @param pWDICtx: pointer to the WLAN DAL context
33322 pEventData: pointer to the event information structure
33323
33324 @see
33325 @return Result of the function call
33326*/
33327WDI_Status
33328WDI_ProcessEXTScanStartRsp
33329(
33330 WDI_ControlBlockType* pWDICtx,
33331 WDI_EventInfoType* pEventData
33332)
33333{
33334 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33335
33336 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33337 "%s: %d",__func__, __LINE__);
33338 /*-------------------------------------------------------------------------
33339 Sanity check
33340 -------------------------------------------------------------------------*/
33341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33342 ( NULL == pEventData->pEventData))
33343 {
33344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33345 "%s: Invalid parameters", __func__);
33346 WDI_ASSERT(0);
33347 return WDI_STATUS_E_FAILURE;
33348 }
33349
33350 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33351 if ( NULL == wdiEXTScanStartRspCb)
33352 {
33353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33354 "%s: Callback function Invalid", __func__);
33355 WDI_ASSERT(0);
33356 return WDI_STATUS_E_FAILURE;
33357 }
33358
33359 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33360
33361 return WDI_STATUS_SUCCESS;
33362}
33363
33364
33365/**
33366 @brief Process Extended Scan Stop Rsp function (called when a response
33367 is being received over the bus from HAL)
33368
33369 @param pWDICtx: pointer to the WLAN DAL context
33370 pEventData: pointer to the event information structure
33371
33372 @see
33373 @return Result of the function call
33374*/
33375WDI_Status
33376WDI_ProcessEXTScanStopRsp
33377(
33378 WDI_ControlBlockType* pWDICtx,
33379 WDI_EventInfoType* pEventData
33380)
33381{
33382 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33383
33384 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33385 "%s: %d",__func__, __LINE__);
33386
33387
33388 /*-------------------------------------------------------------------------
33389 Sanity check
33390 -------------------------------------------------------------------------*/
33391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33392 ( NULL == pEventData->pEventData))
33393 {
33394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33395 "%s: Invalid parameters", __func__);
33396 WDI_ASSERT(0);
33397 return WDI_STATUS_E_FAILURE;
33398 }
33399
33400 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33401 if ( NULL == wdiEXTScanStopRspCb)
33402 {
33403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33404 "%s: Callback function Invalid", __func__);
33405 WDI_ASSERT(0);
33406 return WDI_STATUS_E_FAILURE;
33407 }
33408
33409 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33410
33411 return WDI_STATUS_SUCCESS;
33412}
33413
33414/**
33415 @brief Process Extended Scan Get Cached Rsp function (called when a response
33416 is being received over the bus from HAL)
33417
33418 @param pWDICtx: pointer to the WLAN DAL context
33419 pEventData: pointer to the event information structure
33420
33421 @see
33422 @return Result of the function call
33423*/
33424WDI_Status
33425WDI_ProcessEXTScanGetCachedResultsRsp
33426(
33427 WDI_ControlBlockType* pWDICtx,
33428 WDI_EventInfoType* pEventData
33429)
33430{
33431 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33432
33433 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33434 "%s: %d Enter",__func__, __LINE__);
33435
33436
33437 /*-------------------------------------------------------------------------
33438 Sanity check
33439 -------------------------------------------------------------------------*/
33440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33441 ( NULL == pEventData->pEventData))
33442 {
33443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33444 "%s: Invalid parameters", __func__);
33445 WDI_ASSERT(0);
33446 return WDI_STATUS_E_FAILURE;
33447 }
33448
33449 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33450 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33451 {
33452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33453 "%s: Callback function Invalid", __func__);
33454 WDI_ASSERT(0);
33455 return WDI_STATUS_E_FAILURE;
33456 }
33457
33458 wdiEXTScanGetCachedResultsRspCb(
33459 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33460
33461 return WDI_STATUS_SUCCESS;
33462}
33463
33464/**
33465 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33466 is being received over the bus from HAL)
33467
33468 @param pWDICtx: pointer to the WLAN DAL context
33469 pEventData: pointer to the event information structure
33470
33471 @see
33472 @return Result of the function call
33473*/
33474WDI_Status
33475WDI_ProcessEXTScanGetCapabilitiesRsp
33476(
33477 WDI_ControlBlockType* pWDICtx,
33478 WDI_EventInfoType* pEventData
33479)
33480{
33481 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33482
33483 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33484 "%s: %d ",__func__, __LINE__);
33485
33486
33487 /*-------------------------------------------------------------------------
33488 Sanity check
33489 -------------------------------------------------------------------------*/
33490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33491 ( NULL == pEventData->pEventData))
33492 {
33493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33494 "%s: Invalid parameters", __func__);
33495 WDI_ASSERT(0);
33496 return WDI_STATUS_E_FAILURE;
33497 }
33498
33499 wdiEXTScanGetCapabilitiesRspCb =
33500 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33501 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33502 {
33503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33504 "%s: Callback function Invalid", __func__);
33505 WDI_ASSERT(0);
33506 return WDI_STATUS_E_FAILURE;
33507 }
33508
33509 wdiEXTScanGetCapabilitiesRspCb(
33510 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33511
33512 return WDI_STATUS_SUCCESS;
33513}
33514
33515/**
33516 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33517 response is being received over the bus from HAL)
33518
33519 @param pWDICtx: pointer to the WLAN DAL context
33520 pEventData: pointer to the event information structure
33521
33522 @see
33523 @return Result of the function call
33524*/
33525WDI_Status
33526WDI_ProcessEXTScanSetHotlistBSSIDRsp
33527(
33528 WDI_ControlBlockType* pWDICtx,
33529 WDI_EventInfoType* pEventData
33530)
33531{
33532 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33533
33534 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33535 "%s: %d ",__func__, __LINE__);
33536
33537
33538 /*-------------------------------------------------------------------------
33539 Sanity check
33540 -------------------------------------------------------------------------*/
33541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33542 ( NULL == pEventData->pEventData))
33543 {
33544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33545 "%s: Invalid parameters", __func__);
33546 WDI_ASSERT(0);
33547 return WDI_STATUS_E_FAILURE;
33548 }
33549
33550 wdiEXTScanSetBSSIDHotlistRspCb =
33551 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33552 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33553 {
33554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33555 "%s: Callback function Invalid", __func__);
33556 WDI_ASSERT(0);
33557 return WDI_STATUS_E_FAILURE;
33558 }
33559
33560 wdiEXTScanSetBSSIDHotlistRspCb(
33561 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33562
33563 return WDI_STATUS_SUCCESS;
33564}
33565
33566/**
33567 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33568 when a response is being received over the bus from HAL)
33569
33570 @param pWDICtx: pointer to the WLAN DAL context
33571 pEventData: pointer to the event information structure
33572
33573 @see
33574 @return Result of the function call
33575*/
33576WDI_Status
33577WDI_ProcessEXTScanResetHotlistBSSIDRsp
33578(
33579 WDI_ControlBlockType* pWDICtx,
33580 WDI_EventInfoType* pEventData
33581)
33582{
33583 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33584
33585 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33586 "%s: %d ",__func__, __LINE__);
33587
33588
33589 /*-------------------------------------------------------------------------
33590 Sanity check
33591 -------------------------------------------------------------------------*/
33592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33593 ( NULL == pEventData->pEventData))
33594 {
33595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33596 "%s: Invalid parameters", __func__);
33597 WDI_ASSERT(0);
33598 return WDI_STATUS_E_FAILURE;
33599 }
33600
33601 wdiEXTScanResetBSSIDHotlistRspCb =
33602 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33603 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33604 {
33605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33606 "%s: Callback function Invalid", __func__);
33607 WDI_ASSERT(0);
33608 return WDI_STATUS_E_FAILURE;
33609 }
33610
33611 wdiEXTScanResetBSSIDHotlistRspCb(
33612 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33613
33614 return WDI_STATUS_SUCCESS;
33615}
33616
33617/**
33618 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33619 when a response is being received over the bus from HAL)
33620
33621 @param pWDICtx: pointer to the WLAN DAL context
33622 pEventData: pointer to the event information structure
33623
33624 @see
33625 @return Result of the function call
33626*/
33627WDI_Status
33628WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33629(
33630 WDI_ControlBlockType* pWDICtx,
33631 WDI_EventInfoType* pEventData
33632)
33633{
33634 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33635
33636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33637 "%s: %d",__func__, __LINE__);
33638
33639
33640 /*-------------------------------------------------------------------------
33641 Sanity check
33642 -------------------------------------------------------------------------*/
33643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33644 ( NULL == pEventData->pEventData))
33645 {
33646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33647 "%s: Invalid parameters", __func__);
33648 WDI_ASSERT(0);
33649 return WDI_STATUS_E_FAILURE;
33650 }
33651
33652 wdiEXTScanSetSignfRSSIChangeRspCb =
33653 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33654 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33655 {
33656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33657 "%s: Callback function Invalid", __func__);
33658 WDI_ASSERT(0);
33659 return WDI_STATUS_E_FAILURE;
33660 }
33661
33662 wdiEXTScanSetSignfRSSIChangeRspCb(
33663 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33664
33665 return WDI_STATUS_SUCCESS;
33666}
33667
33668/**
33669 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33670 (called when a response is being received over the bus from HAL)
33671
33672 @param pWDICtx: pointer to the WLAN DAL context
33673 pEventData: pointer to the event information structure
33674
33675 @see
33676 @return Result of the function call
33677*/
33678WDI_Status
33679WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33680(
33681 WDI_ControlBlockType* pWDICtx,
33682 WDI_EventInfoType* pEventData
33683)
33684{
33685 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33686
33687 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33688 "%s: %d Enter",__func__, __LINE__);
33689
33690
33691 /*-------------------------------------------------------------------------
33692 Sanity check
33693 -------------------------------------------------------------------------*/
33694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33695 ( NULL == pEventData->pEventData))
33696 {
33697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33698 "%s: Invalid parameters", __func__);
33699 WDI_ASSERT(0);
33700 return WDI_STATUS_E_FAILURE;
33701 }
33702
33703 wdiEXTScanResetSignfRSSIChangeRspCb =
33704 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33705 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33706 {
33707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33708 "%s: Callback function Invalid", __func__);
33709 WDI_ASSERT(0);
33710 return WDI_STATUS_E_FAILURE;
33711 }
33712
33713 wdiEXTScanResetSignfRSSIChangeRspCb(
33714 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33715
33716 return WDI_STATUS_SUCCESS;
33717}
33718#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033719
33720/**
33721 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33722
33723 @param None
33724
33725 @see
33726
33727 @return Status of the request
33728*/
33729WDI_Status
33730WDI_SetSpoofMacAddrReq
33731(
33732 WDI_SpoofMacAddrInfoType* pWdiReq,
33733 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33734 void* pUserData)
33735{
33736 WDI_EventInfoType wdiEventData;
33737
33738 /*-------------------------------------------------------------------------
33739 Sanity Check
33740 ------------------------------------------------------------------------*/
33741 if (eWLAN_PAL_FALSE == gWDIInitialized)
33742 {
33743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33744 "WDI API call before module is initialized - Fail request!");
33745
33746 return WDI_STATUS_E_NOT_ALLOWED;
33747 }
33748
33749 /*-------------------------------------------------------------------------
33750 Fill in Event data and post to the Main FSM
33751 ------------------------------------------------------------------------*/
33752 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33753 wdiEventData.pEventData = pWdiReq;
33754 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33755 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33756 wdiEventData.pUserData = pUserData;
33757
33758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33759}
33760
33761/**
33762 @brief Process SpoofMacAddr Request
33763
33764 @param pWDICtx: pointer to the WLAN DAL context
33765 pEventData: pointer to the event information structure
33766
33767 @see
33768 @return Result of the function call
33769*/
33770WDI_Status
33771WDI_ProcessSpoofMacAddrReq
33772(
33773 WDI_ControlBlockType* pWDICtx,
33774 WDI_EventInfoType* pEventData
33775)
33776{
33777 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33778 wpt_uint8* pSendBuffer = NULL;
33779 wpt_uint16 usDataOffset = 0;
33780 wpt_uint16 usSendSize = 0;
33781 WDI_Status wdiStatus;
33782 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33783 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33784
33785
33786 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33787 "%s: %d Enter",__func__, __LINE__);
33788
33789 /*-------------------------------------------------------------------------
33790 Sanity check
33791 -------------------------------------------------------------------------*/
33792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33793 ( NULL == pEventData->pEventData))
33794 {
33795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33796 "%s: Invalid parameters", __func__);
33797 WDI_ASSERT(0);
33798 return WDI_STATUS_E_FAILURE;
33799 }
33800 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33801
33802 /*-----------------------------------------------------------------------
33803 Get message buffer
33804 -----------------------------------------------------------------------*/
33805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33806 WDI_SPOOF_MAC_ADDR_REQ,
33807 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33808 &pSendBuffer, &usDataOffset, &usSendSize))||
33809 (usSendSize < (usDataOffset +
33810 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33811 {
33812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33813 "Unable to get send buffer in Process Spoof Mac Addr Req");
33814 WDI_ASSERT(0);
33815 return WDI_STATUS_E_FAILURE;
33816 }
33817
33818 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33819 wdiSpoofMacAddr->macAddr,
33820 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33821
33822 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33823
33824 wpalMemoryCopy( pSendBuffer+usDataOffset,
33825 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33826 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33827
33828 /*-------------------------------------------------------------------------
33829 Send Suspend Request to HAL
33830 -------------------------------------------------------------------------*/
33831 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33832 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33833
33834 return wdiStatus;
33835}
33836
33837/**
33838 @brief Process Spoof Mac Address Rsp function
33839 (called when a response is being received over the bus from HAL)
33840
33841 @param pWDICtx: pointer to the WLAN DAL context
33842 pEventData: pointer to the event information structure
33843
33844 @see
33845 @return Result of the function call
33846*/
33847WDI_Status
33848WDI_ProcessSpoofMacAddrRsp
33849(
33850 WDI_ControlBlockType* pWDICtx,
33851 WDI_EventInfoType* pEventData
33852)
33853{
33854 tMacSpoofedScanResp halRsp;
33855 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33856 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33857
33858 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33859 "%s: %d Enter",__func__, __LINE__);
33860
33861 /*-------------------------------------------------------------------------
33862 Sanity check
33863 -------------------------------------------------------------------------*/
33864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33865 ( NULL == pEventData->pEventData))
33866 {
33867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33868 "%s: Invalid parameters", __func__);
33869 WDI_ASSERT(0);
33870 return WDI_STATUS_E_FAILURE;
33871 }
33872 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33873
33874 /*-------------------------------------------------------------------------
33875 Extract response and send it to UMAC
33876 -------------------------------------------------------------------------*/
33877 wpalMemoryCopy( &halRsp,
33878 pEventData->pEventData, sizeof(halRsp));
33879
33880 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33881
33882 /*Notify UMAC*/
33883 wdiSpoofMacAddrRspCb(
33884 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33885
33886 return WDI_STATUS_SUCCESS;
33887}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033888
33889/**
Siddharth Bhal64246172015-02-27 01:04:37 +053033890 @brief Process Get Frame Log Rsp function
33891 (called when a response is being received over the bus from HAL)
33892
33893 @param pWDICtx: pointer to the WLAN DAL context
33894 pEventData: pointer to the event information structure
33895
33896 @see
33897 @return Result of the function call
33898*/
33899WDI_Status
33900WDI_ProcessGetFrameLogRsp
33901(
33902 WDI_ControlBlockType* pWDICtx,
33903 WDI_EventInfoType* pEventData
33904)
33905{
33906 tGetFrameLogResp halRsp;
33907 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
33908 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
33909
33910 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33911 "%s: %d Enter",__func__, __LINE__);
33912
33913 /*-------------------------------------------------------------------------
33914 Sanity check
33915 -------------------------------------------------------------------------*/
33916 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33917 ( NULL == pEventData->pEventData))
33918 {
33919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33920 "%s: Invalid parameters", __func__);
33921 WDI_ASSERT(0);
33922 return WDI_STATUS_E_FAILURE;
33923 }
33924
33925 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
33926
33927 /*-------------------------------------------------------------------------
33928 Extract response and send it to UMAC
33929 -------------------------------------------------------------------------*/
33930 wpalMemoryCopy( &halRsp,
33931 pEventData->pEventData, sizeof(halRsp));
33932
33933 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33934
33935 /*Notify UMAC*/
33936 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
33937
33938 return WDI_STATUS_SUCCESS;
33939}
33940/**
33941 @brief Process MgmtLoggingInit Request
33942
33943 @param pWDICtx: pointer to the WLAN DAL context
33944 pEventData: pointer to the event information structure
33945
33946 @see
33947 @return Result of the function call
33948*/
33949WDI_Status
33950WDI_ProcessGetFrameLogReq
33951(
33952 WDI_ControlBlockType* pWDICtx,
33953 WDI_EventInfoType* pEventData
33954)
33955{
33956 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
33957 wpt_uint8* pSendBuffer = NULL;
33958 wpt_uint16 usDataOffset = 0;
33959 wpt_uint16 usSendSize = 0;
33960 WDI_Status wdiStatus;
33961 tGetFrameLogReqMsg halGetFrameLogReq;
33962 WDI_MgmtLoggingInitRspCb wdiGetFrameLogRspCb;
33963
33964
33965 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33966 "%s: %d Enter",__func__, __LINE__);
33967
33968 /*-------------------------------------------------------------------------
33969 Sanity check
33970 ------------------------------------------------------------------------*/
33971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33972 ( NULL == pEventData->pEventData))
33973 {
33974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33975 "%s: Invalid parameters", __func__);
33976 WDI_ASSERT(0);
33977 return WDI_STATUS_E_FAILURE;
33978 }
33979
33980 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
33981
33982 /*-----------------------------------------------------------------------
33983 Get message buffer
33984 -----------------------------------------------------------------------*/
33985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33986 WDI_GET_FRAME_LOG_REQ,
33987 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
33988 &pSendBuffer, &usDataOffset, &usSendSize))||
33989 (usSendSize < (usDataOffset +
33990 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
33991 {
33992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33993 "Unable to get send buffer in GetFrameLog Req");
33994 WDI_ASSERT(0);
33995 return WDI_STATUS_E_FAILURE;
33996 }
33997
33998 halGetFrameLogReq.tGetFrameLogReqParams.flags =
33999 wdiGetFrameLogReq->flags;
34000
34001 wdiGetFrameLogRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34002
34003 wpalMemoryCopy( pSendBuffer+usDataOffset,
34004 &halGetFrameLogReq.tGetFrameLogReqParams,
34005 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34006
34007 /*-------------------------------------------------------------------------
34008 Send Suspend Request to HAL
34009 ------------------------------------------------------------------------*/
34010 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34011 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34012
34013 return wdiStatus;
34014}
34015/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034016 @brief Process MgmtFrame Logging Init Rsp function
34017 (called when a response is being received over the bus from HAL)
34018
34019 @param pWDICtx: pointer to the WLAN DAL context
34020 pEventData: pointer to the event information structure
34021
34022 @see
34023 @return Result of the function call
34024*/
34025WDI_Status
34026WDI_ProcessMgmtFrameLoggingInitRsp
34027(
34028 WDI_ControlBlockType* pWDICtx,
34029 WDI_EventInfoType* pEventData
34030)
34031{
34032 tMgmtLoggingInitResp halRsp;
34033 WDI_MgmtLoggingInitRspCb wdiMgmtFrameLoggingInitRspCb;
34034 WDI_MgmtLoggingRspParamType wdiMgmtFrameLoggingRsp;
34035
34036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34037 "%s: %d Enter",__func__, __LINE__);
34038
34039 /*-------------------------------------------------------------------------
34040 Sanity check
34041 -------------------------------------------------------------------------*/
34042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34043 ( NULL == pEventData->pEventData))
34044 {
34045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34046 "%s: Invalid parameters", __func__);
34047 WDI_ASSERT(0);
34048 return WDI_STATUS_E_FAILURE;
34049 }
34050 wdiMgmtFrameLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pWDICtx->pfncRspCB;
34051
34052 /*-------------------------------------------------------------------------
34053 Extract response and send it to UMAC
34054 -------------------------------------------------------------------------*/
34055 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34056
34057 wdiMgmtFrameLoggingRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34058
34059 /*Notify UMAC*/
34060 wdiMgmtFrameLoggingInitRspCb( &wdiMgmtFrameLoggingRsp,
34061 pWDICtx->pRspCBUserData);
34062
34063 return WDI_STATUS_SUCCESS;
34064}
34065
34066/**
34067 @brief Process MgmtLoggingInit Request
34068
34069 @param pWDICtx: pointer to the WLAN DAL context
34070 pEventData: pointer to the event information structure
34071
34072 @see
34073 @return Result of the function call
34074*/
34075WDI_Status
34076WDI_ProcessMgmtLoggingInitReq
34077(
34078 WDI_ControlBlockType* pWDICtx,
34079 WDI_EventInfoType* pEventData
34080)
34081{
34082 WDI_MgmtLoggingInitReqInfoType* wdiMgmtLoggingInitReq;
34083 wpt_uint8* pSendBuffer = NULL;
34084 wpt_uint16 usDataOffset = 0;
34085 wpt_uint16 usSendSize = 0;
34086 WDI_Status wdiStatus;
34087 tHalMgmtLoggingInitReqMsg halMgmtLoggingInitReq;
34088 WDI_MgmtLoggingInitRspCb wdiMgmtLoggingInitRspCb;
34089
34090
34091 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34092 "%s: %d Enter",__func__, __LINE__);
34093
34094 /*-------------------------------------------------------------------------
34095 Sanity check
34096 ------------------------------------------------------------------------*/
34097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34098 ( NULL == pEventData->pEventData))
34099 {
34100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34101 "%s: Invalid parameters", __func__);
34102 WDI_ASSERT(0);
34103 return WDI_STATUS_E_FAILURE;
34104 }
34105 wdiMgmtLoggingInitReq =
34106 (WDI_MgmtLoggingInitReqInfoType *)pEventData->pEventData;
34107
34108 /*-----------------------------------------------------------------------
34109 Get message buffer
34110 -----------------------------------------------------------------------*/
34111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34112 WDI_MGMT_LOGGING_INIT_REQ,
34113 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams),
34114 &pSendBuffer, &usDataOffset, &usSendSize))||
34115 (usSendSize < (usDataOffset +
34116 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams))))
34117 {
34118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34119 "Unable to get send buffer in Process Mgmt Logging Init Req");
34120 WDI_ASSERT(0);
34121 return WDI_STATUS_E_FAILURE;
34122 }
34123
34124 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.enableFlag=
34125 wdiMgmtLoggingInitReq->enableFlag;
34126 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameSize=
34127 wdiMgmtLoggingInitReq->frameSize;
34128 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.frameType=
34129 wdiMgmtLoggingInitReq->frameType;
34130 halMgmtLoggingInitReq.tMgmtLoggingInitReqParams.bufferMode=
34131 wdiMgmtLoggingInitReq->bufferMode;
34132
34133 wdiMgmtLoggingInitRspCb = (WDI_MgmtLoggingInitRspCb)pEventData->pCBfnc;
34134
34135 wpalMemoryCopy( pSendBuffer+usDataOffset,
34136 &halMgmtLoggingInitReq.tMgmtLoggingInitReqParams,
34137 sizeof(halMgmtLoggingInitReq.tMgmtLoggingInitReqParams));
34138
34139 /*-------------------------------------------------------------------------
34140 Send Mgmt Logging Init Request to HAL
34141 ------------------------------------------------------------------------*/
34142 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34143 wdiMgmtLoggingInitRspCb, pEventData->pUserData,
34144 WDI_MGMT_LOGGING_INIT_RSP);
34145
34146 return wdiStatus;
34147}
34148
34149/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034150 @brief WDI_EncryptMsgReq
34151
34152 @param pwdiEncryptMsgParams: Req parameter for the FW
34153 wdiEncryptMsgCbRsp: callback for passing back the response
34154 of the Req operation received from the device
34155 pUserData: user data will be passed back with the callback
34156
34157 @return SUCCESS or FAIL
34158*/
34159WDI_Status
34160WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34161 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34162 void* pUserData)
34163{
34164 WDI_EventInfoType wdiEventData;
34165
34166 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34167 "%s: %d Enter" ,__func__, __LINE__);
34168 /*------------------------------------------------------------------------
34169 Sanity Check
34170 ------------------------------------------------------------------------*/
34171 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34172 {
34173 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34174 "WDI API call before module is initialized - Fail request");
34175
34176 return WDI_STATUS_E_NOT_ALLOWED;
34177 }
34178
34179 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34180 wdiEventData.pEventData = pwdiEncryptMsgParams;
34181 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34182 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34183 wdiEventData.pUserData = pUserData;
34184
34185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34186}
34187
34188/*
34189 * FUNCTION: WDI_ProcessEncryptMsgReq
34190 * Request to WDI to encrypt the given message.
34191 *
34192 * @param pWDICtx: pointer to the WLAN DAL context
34193 * pEventData: pointer to the event information structure
34194 *
34195 * @return Result of the function call
34196 */
34197
34198WDI_Status
34199WDI_ProcessEncryptMsgReq
34200(
34201 WDI_ControlBlockType* pWDICtx,
34202 WDI_EventInfoType* pEventData
34203)
34204{
34205 wpt_uint8* pSendBuffer = NULL;
34206 wpt_uint16 usDataOffset = 0;
34207 wpt_uint16 usSendSize = 0;
34208 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34209 tSetEncryptedDataParams *pHalEncryptDataReq;
34210 wpt_pkt80211 *pkt = NULL;
34211
34212 /*-------------------------------------------------------------------------
34213 Sanity check
34214 -------------------------------------------------------------------------*/
34215 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34216 ( NULL == pEventData->pCBfnc ) )
34217 {
34218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34219 "%s: Invalid parameters", __func__);
34220 WDI_ASSERT(0);
34221 return WDI_STATUS_E_FAILURE;
34222 }
34223
34224 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34225
34226 /*-----------------------------------------------------------------------
34227 Get message buffer
34228 -----------------------------------------------------------------------*/
34229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34230 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34231 sizeof(tSetEncryptedDataReqMsg),
34232 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34233 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34234 {
34235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34236 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34237 pEventData);
34238 WDI_ASSERT(0);
34239 return WDI_STATUS_E_FAILURE;
34240 }
34241
34242 pWDICtx->wdiReqStatusCB = NULL;
34243 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34244 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34245
34246 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34247 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34248
34249 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34250
34251 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34252 pkt->encParams.keyParams.key[0].keyId;
34253
34254 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34255 &pkt->encParams.keyParams.key[0].key[0], 16);
34256
34257 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34258
34259 pHalEncryptDataReq->data.length = pkt->data.length;
34260 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34261
34262 /*-------------------------------------------------------------------------
34263 Send Get STA Request to HAL
34264 -------------------------------------------------------------------------*/
34265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34266 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34267}
34268
34269/*
34270 * FUNCTION: WDI_ProcessEncryptMsgRsp
34271 * Receives the encrypted message from the firmware
34272 * @param pWDICtx: pointer to the WLAN DAL context
34273 * pEventData: pointer to the event information structure
34274 *
34275 * @return Result of the function call
34276 */
34277WDI_Status
34278WDI_ProcessEncryptMsgRsp
34279(
34280 WDI_ControlBlockType* pWDICtx,
34281 WDI_EventInfoType* pEventData
34282)
34283{
34284 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34285 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34286
34287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34288 "In %s",__func__);
34289
34290 /*-------------------------------------------------------------------------
34291 Sanity check
34292 -------------------------------------------------------------------------*/
34293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34294 ( NULL == pEventData->pEventData))
34295 {
34296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34297 "%s: Invalid parameters", __func__);
34298 WDI_ASSERT(0);
34299 return WDI_STATUS_E_FAILURE;
34300 }
34301
34302 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
34303
34304 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
34305
34306 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
34307 pEventData->pEventData,
34308 pWDICtx->pRspCBUserData);
34309 return WDI_STATUS_SUCCESS;
34310}